)]}'
{
  "commit": "347e62aed01ccc8e5d2cd901eb150e29653a6d96",
  "tree": "238b8d5a27ea2db1eab3138367cf8c09c0dbfbc6",
  "parents": [
    "f6fd73661bebb7fec2a672da29379a7fe4e6c0eb"
  ],
  "author": {
    "name": "Tianjie Xu",
    "email": "xunchang@google.com",
    "time": "Tue May 21 15:21:15 2019 -0700"
  },
  "committer": {
    "name": "Tianjie Xu",
    "email": "xunchang@google.com",
    "time": "Wed May 22 16:44:35 2019 -0700"
  },
  "message": "Skip an async callback function when the UpdateBootFlagsAction object is destroyed\n\nAs the callback to MarkBootSuccessfulAsync, UpdateBootFlagsAction\u0027s\nmember function CompleteUpdateBootFlags() can still be called even after\nthe current UpdateBootFlagsAction object get destroyed by the action\nprocessor. We want to set a static flag in TerminateProcessing() and check\nits value before executing the callback function.\n\nAn alternative way is to save and propagate the TaskId when scheduling the\ntask in MarkBootSuccessfulAsync, and cancel the task in UpdateBootFlagsAction\u0027s\nTerminateProcessing().\n\nBug: 123720545\nTest: No longer hit the CHECK after injecting StopProcessing.\nChange-Id: I98d2cc7b94d4059fb897b89932969b61936e8c2e\n(cherry picked from commit e1f55b0f39a109760ce6983d0b8f6f498ec90f52)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "97ef7f23a911b675b21aeffddbc124f5b3c40023",
      "old_mode": 33188,
      "old_path": "update_boot_flags_action.cc",
      "new_id": "ee92ae0a0c1e73ca3a84d94ecbd70e0b11bb9370",
      "new_mode": 33188,
      "new_path": "update_boot_flags_action.cc"
    },
    {
      "type": "modify",
      "old_id": "afa2c3f1286761fad3709fb7235bbceb35d18232",
      "old_mode": 33188,
      "old_path": "update_boot_flags_action.h",
      "new_id": "892aab7b599819e1a131fa7c31956190d119ac8b",
      "new_mode": 33188,
      "new_path": "update_boot_flags_action.h"
    }
  ]
}
