)]}'
{
  "commit": "609e04bfafa6ca621ad7b64f80a1f983d2a339db",
  "tree": "b3f9185eb2f029a8e2385b428a49983eef4ffe3d",
  "parents": [
    "895c4ffb64f3a9dafd07be9b6923d936ba00cb35"
  ],
  "author": {
    "name": "Pradipti Mondal",
    "email": "pmondal@nvidia.com",
    "time": "Thu Aug 27 02:22:15 2026 -0700"
  },
  "committer": {
    "name": "Pradipti Mondal",
    "email": "pmondal@nvidia.com",
    "time": "Mon Sep 07 16:10:08 2026 +0530"
  },
  "message": "nsmd: await debug token status refresh before reporting success\n\nThe install and erase completion paths published the async result as\nSuccess and only then fired the status refresh via\nqueryTokenHandler(device).detach(). Being fire-and-forget, the Redfish\nTask reached Completed/OK before the new InstallationStatus was\npublished, so a status read issued straight after saw the stale value.\ninstallTokenDirect() is the aggregate install path, which is why the\naggregate flow showed the lag.\n\nco_await queryTokenHandler(device) before publishing Success in all\nthree completion paths. Success is not gated on the refresh, and the\ndetach() at the D-Bus entry points is unchanged.\n\nTests: nsmDebugTokenUnifiedMultiCycle_test.cpp. Operations issue\npostPatchIO and the refresh issues sensorIO, so a sensorIO count of N\nover N cycles proves the refresh runs every iteration. Erase has one\nhandler behind both entry points, so one erase test covers targeted and\naggregate; install has two paths and gets one test each.\n\n  installTokenAsync_RepeatedCycles_RefreshesEveryCycle    (targeted)\n  installTokenDirect_RepeatedCycles_RefreshesEveryCycle   (aggregate)\n  eraseToken_RepeatedCycles_RefreshesEveryCycle\n  installThenErase_AlternatingCycles_StatusTracksEachOperation\n  installTokenDirect_RefreshFails_OperationStillSucceeds\n  installTokenDirect_MultiChunkRepeated_OneRefreshPerInstall\n\nFixes nvbug https://nvbugspro.nvidia.com/bug/6571452\nSigned-off-by: Pradipti Mondal \u003cpmondal@nvidia.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0e67ed3ddde37ad9c27483428fa853d2c6cd47c2",
      "old_mode": 33188,
      "old_path": "nsmd/nsmDebugToken/nsmDebugTokenUnified.cpp",
      "new_id": "3174aff687bdb02757f9cf0c7240d384ae1c0d46",
      "new_mode": 33188,
      "new_path": "nsmd/nsmDebugToken/nsmDebugTokenUnified.cpp"
    },
    {
      "type": "modify",
      "old_id": "c0559bfd84c6ae9f2f45ca33a42bb6f5277a70d8",
      "old_mode": 33188,
      "old_path": "nsmd/nsmDebugToken/test/meson.build",
      "new_id": "149c380ff09fd4bcfec02f8f6515f60d2cf9cd12",
      "new_mode": 33188,
      "new_path": "nsmd/nsmDebugToken/test/meson.build"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "adc1f26c49ded44144fe740378117247819b0169",
      "new_mode": 33188,
      "new_path": "nsmd/nsmDebugToken/test/nsmDebugTokenUnifiedMultiCycle_test.cpp"
    }
  ]
}
