)]}'
{
  "commit": "6fe47695294b203a9c52c3485e58d01acb11b254",
  "tree": "de907ee5d938096c38e2bc71012f083eeca793ed",
  "parents": [
    "8ae64dc02321e0c8f909bbcfe49415c3f23891f0"
  ],
  "author": {
    "name": "Olivier Gaillard",
    "email": "gaillard@google.com",
    "time": "Thu Jan 20 21:48:12 2022 +0000"
  },
  "committer": {
    "name": "Olivier Gaillard",
    "email": "gaillard@google.com",
    "time": "Thu Feb 03 11:55:05 2022 +0000"
  },
  "message": "Add half watchdogs to dropbox and make the watchdog timeout\nconfigurable.\n\nThe content of the half watchdog is now more consistent with watchdogs\nto make it more actionable (watchdog subject, memory psi, cpu data).\n\nThe half watchdog is also published to dropbox in a similar way to the\nwatchdog. We also use a thread to publish to dropbox to make sure that\nwe do not block the watchdog handler code.\n\nFor the half watchdog, we know wait for 5s to get the cpu data (similar to\nthe watchdog) which delays the next run. That\u0027s only 10% of the default\ntimeout though so that\u0027s not a big difference.\n\nFor the configurable watchdog timeout, we delay fetching the value to\nbe able to start the watchdog as early as possible when system server\nstarts to detect blocked threads that might happen early. As well, even\nif fetching settings is broken, the watchdog will still be running with\nthe default timeout values.\n\nTest: tested that the half watchdog is added to dropbox\n\n~/master$ adb shell dumpsys dropbox | grep watchdog\n2022-01-25 23:22:19 system_server_pre_watchdog (compressed text, 21612 bytes)\n2022-01-25 23:22:56 system_server_watchdog (compressed text, 21386 bytes)\n2022-01-25 23:29:09 system_server_pre_watchdog (compressed text, 21621 bytes)\n\nThe watchdogs and half wathdogs were generated by adding a message with\na long sleep on the ui thread\n\n    Runnable runnable \u003d new Runnable() {\n\t@Override\n\tpublic void run() {\n\t    SystemClock.sleep(40_000);  // 40s\n\t}\n    };\n    Message msg \u003d Message.obtain(UiThread.getHandler(), runnable);\n    msg.setAsynchronous(true);\n    UiThread.getHandler().sendMessage(msg);\n\nBug: 209932320\nChange-Id: I1bca723d1d7bee98dc7e1aade73a2e4384d6f035\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c4fe1a44d161b2034590899968fd5769011ec046",
      "old_mode": 33188,
      "old_path": "core/java/android/provider/Settings.java",
      "new_id": "ecf42e5b246b0ad0067ea405297561fa0a919782",
      "new_mode": 33188,
      "new_path": "core/java/android/provider/Settings.java"
    },
    {
      "type": "modify",
      "old_id": "13ae87015fa4101137bf9054215099bcea71a181",
      "old_mode": 33188,
      "old_path": "packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java",
      "new_id": "b2c912173160c86fd2f85186dc05860bc74c7e67",
      "new_mode": 33188,
      "new_path": "packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java"
    },
    {
      "type": "modify",
      "old_id": "ac20a08c1e305011ddcda789e0cef7d6307e3615",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/Watchdog.java",
      "new_id": "8b48d0f39aaa0b1028a36726b2808475b3f0a991",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/Watchdog.java"
    },
    {
      "type": "modify",
      "old_id": "c9aeabd17191283620eab1bf41754fa84cc0ac9f",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/SystemServer.java",
      "new_id": "a07501a707c402f5cf3b0547ed8c5da6059be235",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/SystemServer.java"
    }
  ]
}
