)]}'
{
  "log": [
    {
      "commit": "6e0b0fa671244a30e60d1d3f9de03051c2aa76b2",
      "tree": "d5f58f26ffd2fdd39252129196626eba1f94a46d",
      "parents": [
        "64051356de37cd167c409d0f374475d4b7843658"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Jun 28 11:40:18 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Jun 28 23:06:49 2021 +0000"
      },
      "message": "Reduce timeout for DL to destroy.\n\n10secs should be more than enough to stop whatever the DL is doing.\nBesides, DL has its own set of IncFS FDs and should not crash.\n\nBug: 189222575\nFixes: 189222575\nTest: atest IncrementalServiceTest\nChange-Id: I73cb27d61c7418adeea7536c8263e6ba8c77fd3e\n"
    },
    {
      "commit": "4bafd4ddd820138d9f50b37c169e9facce6e7bb7",
      "tree": "23be281d9ae2f4c4859e7daa69709a4ab57a6c85",
      "parents": [
        "0d0d1ae6496d1fbc91dcfbb6cddef065b716d625"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Jun 08 16:35:39 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Jun 08 17:41:47 2021 -0700"
      },
      "message": "Proper retrying DL installation sessions.\n\nPlus more robust handling of broken DLs.\n\nBug: 190012477\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest com.google.android.packageinstallerv2proxy.host.gts.IncrementalInstallerHostTest\nChange-Id: I5cb037d49cd2b140bed1045c99f072112495acfc\n"
    },
    {
      "commit": "0d68016aea59d1de4e89f4f2d5c131bf55cd1e80",
      "tree": "bef25ec307bd73e4664e1bf9f4c17a7cc25105a8",
      "parents": [
        "27008c112347ffcaa5ef2a70708ab1e2c77c4ef6"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Thu May 27 19:15:48 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Fri May 28 03:08:39 2021 +0000"
      },
      "message": "[incremental/metrics] report uid of last read error\n\nBUG: 187354818\nTest: atest service.incremental_test\nChange-Id: I632b747440ed4faef31266a3a7b18b7a382ff2cf\n"
    },
    {
      "commit": "98a3c8fffffc468a5a4943f40a966e7cdc9b5619",
      "tree": "b3a68f98abb185527e5f3c18f20cc75a1569bb9e",
      "parents": [
        "b5ddeefc099ca947320e2ac8b973ed06d10d37a1"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed May 12 13:25:38 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu May 13 12:28:58 2021 -0700"
      },
      "message": "Duplicate apk names on package update.\n\n+minor fixes\n\nBug: 187710420\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest\nChange-Id: Iced479532b38bddcd8655df3ce08611434965cf4\n"
    },
    {
      "commit": "f6c65bbf6577820b27d70da0c37d17f110d9fab8",
      "tree": "44128c77ccb0f3db49abd7c50fbe7377972f9d8c",
      "parents": [
        "0e05cb9d8bbba75f21e5e765538031f127b2f5bd"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Mon May 10 16:17:30 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue May 11 10:18:22 2021 -0700"
      },
      "message": "[incremental] use same sysfs name for setOptions\n\nOtherwise we have errors during applyStorageParams:\n\n05-10 15:35:32.363   562   625 E IncrementalService: applyStorageParams failed: Status(-8, EX_SERVICE_SPECIFIC): \u0027-95: \u0027\n05-10 15:35:32.363   562   625 E incfs-dataloaderconnector: setStorageParams failed with error: -95\n05-10 15:35:32.363   562   625 E incfs-dataloaderconnector: DataLoader supports UID\n05-10 15:35:32.367     0     0 E incfs   : Can\u0027t change sysfs_name mount option on remount\n\nBUG: 187308584\nTest: atest CtsContentTestCases:android.content.pm.cts.PackageManagerShellCommandIncrementalTest#testInstallWithIdSigNoMissingPages\nChange-Id: Ic2146aa7855e13de9f96794639de556f64e93701\n"
    },
    {
      "commit": "e76e1ef5102b2621aa4691a479bef6af7dc79dc4",
      "tree": "f2692c40f75dd3c5918af8dd9b28ba8a532879ce",
      "parents": [
        "93f7083eabeda4706a04ef0f0b2a2c13d09b867a"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri May 07 14:50:02 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat May 08 14:10:33 2021 +0000"
      },
      "message": "Avoid sysfs name clashes.\n\nBug: 187437944\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest ApkVerityInstallTest\nChange-Id: Idc8cb4d170b0bfd98ee3a10bdf57439801739757\n"
    },
    {
      "commit": "e749b4b2c4f97a6e7eb53f3808b1e09097f002ad",
      "tree": "6f9f780b83eaafff9ba6fd4ce75038f437ee9939",
      "parents": [
        "39c0f802e8fbe9bcc1bb595aa923af6c7a7f641f",
        "0dc7772746f3c1a67849ae4e6e8a4733227b895d"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Wed May 05 00:09:59 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 05 00:09:59 2021 +0000"
      },
      "message": "Merge \"[incremental] report new metrics from Incremental Service\" into sc-dev"
    },
    {
      "commit": "0dc7772746f3c1a67849ae4e6e8a4733227b895d",
      "tree": "ff586245c5432ae90e21923bfc0b455a99651f87",
      "parents": [
        "d48a25ee649b9aa2e6dde6e0e9844bb7da8bfe5c"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Mon May 03 17:13:52 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue May 04 15:14:34 2021 -0700"
      },
      "message": "[incremental] report new metrics from Incremental Service\n\nBUG: 184844615\nTest: atest service.incremental_test\nChange-Id: Ibbfe68851a4adfd620db9652f1fda550a3c6fb2c\n"
    },
    {
      "commit": "30253adb74b1e9e37f4a1286a7762e84d0245bca",
      "tree": "ab17a48f10944f4d31134dd3a9811282c2e05a42",
      "parents": [
        "d8f57c7cf37298beb7792629acc88d608dd0b838",
        "d48a25ee649b9aa2e6dde6e0e9844bb7da8bfe5c"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue May 04 04:56:04 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 04 04:56:04 2021 +0000"
      },
      "message": "Merge \"[IncrementalService] add last read error in dumpsys\" into sc-dev"
    },
    {
      "commit": "7a76d7f713b70fa8c68252d7d2d83f76fd5e835a",
      "tree": "f556da5d2adde93519ca8f24a20e8521518c3552",
      "parents": [
        "eed65ac6f5c7c411c7d6eb94b8c83883f8ce72f2",
        "f949c37e14bd0ccdbb0fba7e2599b817133f9ed9"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue May 04 00:14:40 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 04 00:14:40 2021 +0000"
      },
      "message": "Merge \"[IncrementalService] use sysfs_name in mount options and dumpsys\" into sc-dev"
    },
    {
      "commit": "d48a25ee649b9aa2e6dde6e0e9844bb7da8bfe5c",
      "tree": "761a5e4f7e4f00d9591029237d28f130b62f87ef",
      "parents": [
        "f949c37e14bd0ccdbb0fba7e2599b817133f9ed9"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Fri Apr 30 09:50:58 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Mon May 03 14:58:18 2021 -0700"
      },
      "message": "[IncrementalService] add last read error in dumpsys\n\nBUG: 184844615\nTest: dumpsys\nChange-Id: I3e8178c8a62dc5d09c718b140bb48bda85a3bae5\n"
    },
    {
      "commit": "878714ab821b7e9618d5b176396983d680b0d67f",
      "tree": "8be74a280cf2a42e430c92034847f41efdd984ab",
      "parents": [
        "d8e7c1433dacf9ac82b6743a496a3524144be2b5"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 30 15:41:37 2021 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 30 16:09:52 2021 -0700"
      },
      "message": "Add more info to IncrementalService::onDump()\n\n+ suppress a couple lint warnings\n\nBug: 184844615\nTest: manual + check the dump output\nChange-Id: Ic1cf2a2fb519cc9e746c73816b1cb55f14d11279\n"
    },
    {
      "commit": "f949c37e14bd0ccdbb0fba7e2599b817133f9ed9",
      "tree": "fa17c5640aed5f19320584e91bc0876b891d3a9b",
      "parents": [
        "a2bbcf9523220a47a3cd7f5204e525edd2d358c5"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Apr 27 11:26:25 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Fri Apr 30 12:19:58 2021 -0700"
      },
      "message": "[IncrementalService] use sysfs_name in mount options and dumpsys\n\nBUG: 184844615\nTest: adb shell dumpsys incremental\nChange-Id: Ib6bbbede6d4fbed0bcef8d37f377e706b9d1af28\n"
    },
    {
      "commit": "03c3c1bbad7642abacc3f9eaac1404c532592eda",
      "tree": "a1bcf206c3a7c8e90c407d79ba122942dd470eea",
      "parents": [
        "40c86a7b16965f105237596e58984f5d168f79b4",
        "9471be56b4d9eb4cbdc3349fd63ff5f6265dfa19"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Apr 27 00:34:08 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 27 00:34:08 2021 +0000"
      },
      "message": "Merge \"[incremental] expose more metrics fields\" into sc-dev"
    },
    {
      "commit": "9471be56b4d9eb4cbdc3349fd63ff5f6265dfa19",
      "tree": "7b11faa3df7c54db726f236f5672a12a65a4192e",
      "parents": [
        "2ee0270cbade5a723253ed88e2245bdb80426e2d"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Wed Apr 21 17:49:27 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Mon Apr 26 14:17:36 2021 -0700"
      },
      "message": "[incremental] expose more metrics fields\n\nExposing more data loader states as per\ngo/incremental-crash-reports-1-pager.\n\nBUG: 184844615\nTest: atest service.incremental_test\nTest: atest android.cts.statsdatom.incremental.AppErrorAtomTests\nChange-Id: I532513453411b2ccdb21311d0bc3dee0641837db\n"
    },
    {
      "commit": "de4b8230abe1745c41381792b0c8dded03f638f0",
      "tree": "344429a230dd18755cb2fe52d36bd9881a58f95e",
      "parents": [
        "265ee869175661379b0defcd580ecc7750f2b4e4"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sun Apr 25 12:43:26 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 26 11:21:01 2021 -0700"
      },
      "message": "Retry on unavailable.\n\nBug: 182214420\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: Iaf61b6825ced45ffdc7e9c87dfea830e50633476\n"
    },
    {
      "commit": "5ada1508c2e8cf005258e04117bf38fee759f31e",
      "tree": "70b916edb279b878216359a2d1544419c47e8a7b",
      "parents": [
        "e53db0d40254f57d8af33e0dcac43e464a06bd31"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Wed Apr 14 19:04:11 2021 +0000"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Fri Apr 16 02:29:24 2021 +0000"
      },
      "message": "[pm] remove incremental startable/unstartable code\n\nAlso remove streaming health status reporting which could cause\nstartable state change because it is also not needed any more.\n\nBUG: 171920377\nTest: builds\nChange-Id: I7284e7a63df79da7dbf3d16ff64302b3d1ce1348\n"
    },
    {
      "commit": "f2af4d880662b791e0457d9b8727fd8399722bc7",
      "tree": "1826eddbd30740cb273a1f9ada21e4a06aaf9e2e",
      "parents": [
        "ad14c212bc9f2029d2ef3b8f5e74573205f438eb"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Apr 07 16:58:15 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 08 18:56:00 2021 -0700"
      },
      "message": "Add storage state and installation ts to dump.\n\nBug: 160635296\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: I524a92aa8c6a7b6961722dc3004a4bb323232297\n"
    },
    {
      "commit": "c144cc453a6206b259041e8976544b43a7bd6c02",
      "tree": "60aaf47ede4a021dc0c2c144103f4c781e887bca",
      "parents": [
        "bcc5b4c1ff0c5ac8299df40c2fa146c3345e2c61"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Mar 31 22:19:42 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 08 09:57:54 2021 +0000"
      },
      "message": "Installation hardening: reducing read timeout during installation.\n\nAnd then restoring post-install.\n\nBug: 160635296\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\n\nChange-Id: I0821458bf92db162518a2cbcb7499cd7544e64f2\n"
    },
    {
      "commit": "5ac5553879faf44e9c219cccb33489a19f0451e6",
      "tree": "c9c77bc4f8799defaf9439ee4afeea8a9e2fbd47",
      "parents": [
        "f5386796a869c483f6a75eb00ff2db65c1e69397"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Mar 25 12:33:15 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Mar 25 13:23:33 2021 -0700"
      },
      "message": "More logging and better retry logic.\n\nBug: 183551663\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: I1b6da82cd4472cc5671b0b60fb12222b4ed08e17\n"
    },
    {
      "commit": "4cd249257638993be352ba607f8a81a534ddb199",
      "tree": "c18a347aaf7c440db6022ab49c5e36f9b2f3cb89",
      "parents": [
        "16828074ec56fe8a2393bfcbf341cbdbaddd07cf"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Mar 24 00:46:29 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Mar 24 15:05:17 2021 +0000"
      },
      "message": "[incfs] Space trimming for IncFS v1\n\nRun a manual timed job that trims all files one by one on the\nold version of IncFS, where it didn\u0027t do it automatically.\n\nBug: 183435580\nFixes: 183436717\nTest: atest libincfs-test service.incremental_test\nChange-Id: I57885b2826e383814822c767802f837135fd8464\n"
    },
    {
      "commit": "9acc9acea544605c85b27a9e2b157fec6766e983",
      "tree": "921047f76ed94f4b36c665ebfcc09485e0182331",
      "parents": [
        "fef3257d391588f410d46d100dfc6c1393499fbf"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Mar 24 00:48:24 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Mar 24 12:22:39 2021 +0000"
      },
      "message": "[incfs] Fix the mount state callbacks processing\n\n- use a never-existing storage ID as a job key\n- order the jobs in the map to not skip them on changes, or,\n  worse, never hang in a loop\n- clear the local callbacks vector before moving to the next\n  storage ID\n- try to resume from the closest place on the next processing\n  iteration\n\nBug: 183435580\nTest: atest service.incremental_test\nChange-Id: I36cd5d30c656bed62c20bd7a7f84fb58046a0933\n"
    },
    {
      "commit": "50d83ff1b383bb0f8f51fb834b29594370272070",
      "tree": "77142904eefe7fba83a4a5f3a62971fb81426003",
      "parents": [
        "bcb2fe0cbb6b93e16f34d113c1da1bfd14c6180c"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 23 22:37:02 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 23 22:50:15 2021 -0700"
      },
      "message": "Reduce ifs lock scope.\n\nBug: 182214420\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: Ic36002205c93b316b28ba10ea8f5fbc50dcff70a\n"
    },
    {
      "commit": "bcb2fe0cbb6b93e16f34d113c1da1bfd14c6180c",
      "tree": "d13f546348204332cd4ec1da051409de55ec4616",
      "parents": [
        "7b3e06e1c2293d24f2f884a515177393be32dbba"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 23 13:02:24 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 23 16:50:26 2021 -0700"
      },
      "message": "Add properties to test readlogs timeout.\n\nBug: 182477087\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: I02bc11b11f9158c31a80b845adb0703a27459332\n"
    },
    {
      "commit": "7b3e06e1c2293d24f2f884a515177393be32dbba",
      "tree": "4a44c14ff422665b46a2a93ce25aa716012a4159",
      "parents": [
        "9f5392e8b7496d6248196e4da99b21c288925f02"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 23 11:29:05 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 23 12:59:22 2021 -0700"
      },
      "message": "Add a first chance retry delay of 1s.\n\nBug: 182214420\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: Iade9e1355ed0e5e761a3a98f3a7bca8215982315\n"
    },
    {
      "commit": "cb163f9bb64dcf67ebc64d58a1eb8b74c3baae8f",
      "tree": "6d25326f4d737aad2750e2c67a811247c3348789",
      "parents": [
        "5f573843ca8cea7b39b8ebf3124fb6e5b13a11ae"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Mar 18 21:21:27 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 23 02:01:06 2021 +0000"
      },
      "message": "Unbind from DataLoader when not needed anymore.\n\n+ simplify adding new callbacks on storage state\n+ streamline lock story for ifs members\n\nBug: 183101753\nFixes: 183101753\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: I86fffa7101eeb42ebccca67ae7f5d133c1ab9dfa\n"
    },
    {
      "commit": "f4769e2f5b5266b9c809ad3026f0d2ef6ac3c693",
      "tree": "59364f6ebe6e21d037f499c21555e013e2105854",
      "parents": [
        "883a27a3733a72c155944d7e019d6d0495d238a5"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Mar 18 20:37:45 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Fri Mar 19 04:29:08 2021 +0000"
      },
      "message": "Untangle listeners mess in IncrementalService\n\nListeners and some binder call parameters were using several\ndifferent styles when passed around - copy, move, pointer,\npointer to pointer. This CL tries to \u0027normalize\u0027 that.\n\nBug: 183067554\nTest: atest IncrementalServiceTest\nChange-Id: Ia28089aa9e4491b0f28e3e747489199cfccb5a1b\n"
    },
    {
      "commit": "883a27a3733a72c155944d7e019d6d0495d238a5",
      "tree": "e26ac78d25b862f424d8b972a79e4c783888940b",
      "parents": [
        "f5a6fb9996387ff2feb0c77545c2f883998065a7"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Mar 18 19:30:56 2021 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Fri Mar 19 04:28:47 2021 +0000"
      },
      "message": "[incfs] Call the new isFullyLoaded api where possible\n\nReplace the remaining calls to getFilledRanges() with\nisFullyLoaded() where we don\u0027t care about the progress\n\nBug: 183067554\nTest: atest IncrementalService\n\nChange-Id: Ic8dc2e3a0ef078353883feef7969b29e11dfa2d0\n"
    },
    {
      "commit": "4375a7453574a219f446222409a567acb2d60120",
      "tree": "bccb04b61f479825c46f7bb17644c7dd732a25c4",
      "parents": [
        "667d24240466c49d36726dbea486796947014c44"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Mar 18 16:59:47 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Mar 19 03:46:40 2021 +0000"
      },
      "message": "[incfs] Use a more efficient getBlockCount() for incfs v2\n\nv2 IncFS driver gives a very lightweight function to check the\nloading progress on a file, use it instead of counting the\nfilled ranges\n\n+ remove the unused mockable toString(IncFsFileId)\n\nBug: 183067554\nTest: atest IncrementalServiceTest\nChange-Id: Icd3bd891d671b27654f4194787a15a00cba1eb80\n"
    },
    {
      "commit": "256a1a450402fde4a958c7680600d2c94c7c737e",
      "tree": "97eb9035c7e4c6bf73ca6da717c672dbb229467b",
      "parents": [
        "463ec227c62975953cd298259b88d640c755d7ca"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Mar 18 14:21:54 2021 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Mar 18 14:24:21 2021 -0700"
      },
      "message": "[incfs] Use the new libincfs API for file status checking\n\nlibincfs got a new set of functions for checking the file loaded\nstatus, which works more efficiently than getting filled ranges.\n\nBug: 183067554\nTest: atest IncrementalServiceTest\nChange-Id: I3b96bf409f1778c5a89e4802e2005197f70ce0cb\n"
    },
    {
      "commit": "65fc38a029e36687adf3a2f25355315bff8855e7",
      "tree": "35af51b4fbe184f24accf33c9e4ca65b281092d1",
      "parents": [
        "d96c8193e28c4f3a8e6068fdb7ebe4b9cd5d0faa"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Mar 17 13:18:30 2021 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Mar 17 13:21:10 2021 -0700"
      },
      "message": "[incfs] Preallocate space for IncFS files\n\nUse the new libincfs APIs to preallocate space for all files\ncreated via the public makeFile() API. This way we ensure\nthe device won\u0027t run out of space much later\n\nBug: 182185202\nTest: atest libincfs-test PackageManagerShellCommandTest \\\n PackageManagerShellCommandIncrementalTest \\\n IncrementalServiceTest\nChange-Id: I70af97949b29ff5db63201b0e3487fe026e23160\n"
    },
    {
      "commit": "d7aa3464da4b2fe52ae59df88635c1d0733d988e",
      "tree": "ebee17f23a6ba45847221d505d62830449ae7a25",
      "parents": [
        "c7a5fdd81c2d6da97bd98b46be7451f5f062f2a5"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sun Mar 14 22:20:20 2021 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 16 04:12:21 2021 +0000"
      },
      "message": "Limit read log reporting to 2hrs for non-system DLs (non-adb).\n\nBug: 182477087\nTest: atest IncrementalServiceTest\nChange-Id: I98c9ed3a2e8a91d26bcb879ab7073903ff7bb2c5\n"
    },
    {
      "commit": "7e06d712d25a6a6bd2d8f1c4a0f0ac8055ba0c21",
      "tree": "e5363a00b5a68e16c19f87782b062039fb21970b",
      "parents": [
        "6bf27625329565dea821489b52f3ac2bfd45db4c"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 09 19:24:23 2021 -0800"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Mar 11 16:35:35 2021 -0800"
      },
      "message": "DL lifecycle: handle slow DL binding.\n\nBug: 182214420\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: I5959e01177ab702de1f754f4ba433004925ce98b\n"
    },
    {
      "commit": "1b76ccfa7c6e92549213b884e97d654b5646e772",
      "tree": "4a7c7f7b13c64acf3aaf58cefa48f741438acfe5",
      "parents": [
        "020348499ecd983489c1293831c11421795aa9ef"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Wed Feb 24 22:25:59 2021 +0000"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Mar 09 23:06:57 2021 +0000"
      },
      "message": "[incremental] expose duration since oldest pending read\n\nAs requested by go/incremental-disablement-metrics, we will expose the\nduration since oldest pending read as part of the crash/ANR metrics.\nThis is the first step that exposes the value to Incremental Service.\n\nBUG: 180951530\nTest: unit test\nChange-Id: Ic67460072556ef01780a1794b40924ca2092060d\n"
    },
    {
      "commit": "3fde572afccd84e1a6573ebb02a89be3ff18d1fe",
      "tree": "83abf13175c1272267b12a0ef09ffbe945824020",
      "parents": [
        "a5946f7056fe30957f8eebd2beac06ea389dbbc9"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Feb 19 00:08:36 2021 -0800"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Mon Feb 22 05:15:50 2021 +0000"
      },
      "message": "Fix the progress getting for mapped files\n\nMapped files don\u0027t support querying their loading progress,\nso we should simply skip them - they are already a part of\nsome other file, and will get accounted for loading when\nthat file\u0027s progress get queried\n\n+ a bunch of small improvements\n\nBug: 180535478\nTest: atest service.incremental_test, adb install --incremental\n  with mapped native libs\n\nChange-Id: Ifc8a402144f2f3669a0419124fb0f35d7002190a\n(cherry picked from commit 7731ebd1d8187c92a992d1f53c4114a6c40f7563)\n"
    },
    {
      "commit": "a5946f7056fe30957f8eebd2beac06ea389dbbc9",
      "tree": "6404cf7149837c75f6b2b6b34b7db2a06195d512",
      "parents": [
        "ddfb6c46f2e8f943a204ae4cfa65309b4b26d19a"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Feb 17 14:24:14 2021 -0800"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Mon Feb 22 04:05:11 2021 +0000"
      },
      "message": "[incremental] Use file range mapping for .so if available\n\nBug: 180535478\nTest: IncrementalService unit tests\nChange-Id: I663dcdce337c289cacc5dc7224dedf5a55605c86\n"
    },
    {
      "commit": "060c9d6869a698d9605942ee1e2074aeeabc5f79",
      "tree": "d9bb517307501c48021dc3b8413b7a89826cf01e",
      "parents": [
        "849587032600a159416035e4978b451969f1d695"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Feb 18 20:55:17 2021 -0800"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat Feb 20 06:21:19 2021 +0000"
      },
      "message": "Potential deadlock mitigation.\n\n+better error logging\n\nDataLoaders might report user statuses from lifecycle callbacks.\nImmediate processing of such might introduce infinite loops/deadlocks e.g.\nDataLoader_OnStop -\u003e reportStatus(UNRECOVERABLE) -\u003e fsmStep -\u003e DataLoader_OnStop\n\nBug: 160634487\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: Ic68657d7a8cd6c6855b6f5295276a42b3cb09117\n"
    },
    {
      "commit": "b19ee3ebd86c0952c87df1c145dde7d66c17d811",
      "tree": "e54a1440ac723d1eba15916a0f6627670dea2089",
      "parents": [
        "de3ce41f288c007d462d17fec72b3f4707970e62"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat Feb 06 20:31:43 2021 -0800"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Feb 11 08:47:27 2021 +0000"
      },
      "message": "DataLoader lifecycle.\n\n- restarting DataLoaders for not fully downloaded mounts,\n- exponential backoff retry on DataLoader restart.\n\nBug: 173223115\nBug: 160634487\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: I5a93fd515ef0fec09452ce7bb4cd79fbd283d45f\n"
    },
    {
      "commit": "2b2f5f7c5f2b8a6a7f33085aa8a56f994f5e470d",
      "tree": "ecce9815ec97e8c11e637931f6d5fddc8fba0051",
      "parents": [
        "4f3e9493546626ed804b5a4d9e3c9deb302a3f2c"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Jan 29 11:07:33 2021 -0800"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Feb 02 17:25:04 2021 +0000"
      },
      "message": "Per UID DataLoader API.\n\nBug: 160634487\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\n\nChange-Id: Id423d838ac7950696b5f75bec2d1610fbc929210\n"
    },
    {
      "commit": "07694ed49b14c0f03aea21c5e42773e542f867ce",
      "tree": "c8f27e1f1c4d932b3b6f1e563bb91e077ea092e5",
      "parents": [
        "dd56fa93f65b38f47883e88300aacb53902b8857"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Jan 27 06:58:55 2021 -0800"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Jan 29 11:16:02 2021 -0800"
      },
      "message": "Inherited installation support for Incremental.\n\nBug: 162345970\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest\nChange-Id: I360f44bc52e05553eacc448faa26f603d9eaae59\nMerged-In: I360f44bc52e05553eacc448faa26f603d9eaae59\n"
    },
    {
      "commit": "5f69292dcff3a7da1e3a495e60a738d63c682b36",
      "tree": "9ae3981a72bfece68013f458046ec1a5a751a3af",
      "parents": [
        "5ffd2a0d6e405e317454d3e545a2d298463b0ce7"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Tue Dec 08 07:35:24 2020 -0800"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Jan 14 22:01:47 2021 -0800"
      },
      "message": "Incfs: Add the new .blocks_written control file\n\nBug: 170231230\nTest: incremental and PackageManager unit tests\nChange-Id: Ia26306a4b1ca70ce70d55ce807fea62540f89334\n"
    },
    {
      "commit": "42d4ba418e97c6e34fba7b1053d69e92ec32b846",
      "tree": "51329c4aa638a50db0adaa57690c49310041b931",
      "parents": [
        "daea39f8a21c1900f45e652df2fa10ffe3e3d5bf"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Jan 12 11:10:03 2021 -0800"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Jan 12 12:35:53 2021 -0800"
      },
      "message": "Require INTERACT_ACROSS_USERS to enable readlogs.\n\nAs requested by PWG.\n\nBug: 177330562\nFixes: 177330562\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest\nChange-Id: I1b03bc1c5b4c3cffaa0f97d864cc088782290bc2\n"
    },
    {
      "commit": "aa8e95ea33275756b59b61e867c18a881a634729",
      "tree": "f94dc0f624ba71d0d8dc1419d133ff66c5255bc6",
      "parents": [
        "55b6a818e0cbddb7152601a3a2c666d025b7b2f0"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Dec 14 21:50:04 2020 -0800"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Jan 12 05:19:38 2021 +0000"
      },
      "message": "Per package read timeouts.\n\nBug: 162345970\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest\n\nChange-Id: I2599db1ed8827fff16387c11254a5d607f27ea46\n"
    },
    {
      "commit": "af764c805b881fdeee7fc59ac6d55be3a0df154c",
      "tree": "f7b6ae77171b134bbbf8be838d071658f661eb97",
      "parents": [
        "577a07c09fec6050fab746938442d40fd0a07901",
        "87a92e1bc571bf54e7fef1bf2dfdd4d95ff20d44"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 21 01:09:21 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 21 01:09:21 2020 +0000"
      },
      "message": "Merge \"incfs: Create incomplete folder\""
    },
    {
      "commit": "87a92e1bc571bf54e7fef1bf2dfdd4d95ff20d44",
      "tree": "d77df5d09ee9387f4ed7cc3ccde13c19aa502cf1",
      "parents": [
        "e5dded6f024ee4b87a6bb59eb5de8eda427b2a43"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Nov 20 13:15:56 2020 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Nov 20 13:18:01 2020 -0800"
      },
      "message": "incfs: Create incomplete folder\n\nincfs 2 also creates a .incomplete folder, so we need to set correct\npermissions on that folder too\n\nBug: 169084168\nTest: With updated kernel, incfs_test works and adb install\n\t--incremental works\nChange-Id: Id7b9d017973777e37628664530dfed18c55c269f\n"
    },
    {
      "commit": "6944f1e484a86338994a01842e78410866f43211",
      "tree": "19c1c4516342402f083cca320c3c236c9998016a",
      "parents": [
        "012eb24033608632b5eb5f73628da9486c650863"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Fri Nov 06 15:24:24 2020 -0800"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Mon Nov 09 22:07:54 2020 +0000"
      },
      "message": "[incremental] add last pending reads info in dumpsys\n\nExample section of dumpsys output:\n        lastPendingReads:\n          fileId: 03300000000000000000000000000000\n          metadataHex: 0330\n          blockIndex: 857738\n          bootClockTsUs: 166877488\n\nTest: manual\nBUG: 162600251\nChange-Id: I37b04751c2a11972450ce7e9082116f8047e87df\n"
    },
    {
      "commit": "2570ec01c61f06d6a09b9b7811ce4963a62a82f6",
      "tree": "95f14ee2c2c9c70892f9d4ef71305277218ef5d5",
      "parents": [
        "5c2ad1c98c45d4b0ce41598fb99644a15c8e6f2e"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Thu Oct 08 17:22:33 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Oct 20 01:13:07 2020 +0000"
      },
      "message": "[incremental/pm] set health listener on commit and on reboot\n\nThis changes allow Incremental Service to directly report health status\nto package manager service.\n\nA health listener is created during package installation session to\nmonitor incremental storage health. After commit, a new listener is\ncreated and will overwrite the old one.\n\nThe new listener will listen to incremental storage health and report\nthe status to package manager service, which will then send the status\nto IncrementalStates, where the startability state and unstartable\nreason might change, based on the health status code.\n\nDuring reboot, for each incremental package, if it is not fully loaded,\nthe package manager service will register a health status listener to\ncontinue monitor the health status of this package.\n\nTest: unit test\nTest: manual\nBUG: 170435166\nChange-Id: I220f230c523cfaf2c96019f9478554665e6af486\n"
    },
    {
      "commit": "3309398cbfe33452a3568a7ab7d80e127b63a10c",
      "tree": "6d787b0ed7fd64061eb9c53434931d811fbb4bee",
      "parents": [
        "f2c9466eaa819654f6535f1b260493769ca116a3"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Thu Sep 10 13:12:39 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Thu Oct 01 16:36:25 2020 -0700"
      },
      "message": "[incremental/pm] app states and transitions\n\nBased on go/incremental-states-design with basic\nsetter/getters.\n\nDefines IncrementalStates class which handles state transitions.\n\nNew (internal) Intent actions: PACKAGE_FULLY_LOADED, PACKAGE_STARTABLE,\nPACKAGE_UNSTARTABLE.\n\nBUG: 168043976\nTest: unit tests\nChange-Id: I7b0ec2dd9f028ee620a9307a1e71ddf12ea5a9af\n"
    },
    {
      "commit": "2ff2a488e68b9435040f4f82ac6e4732a92e2a71",
      "tree": "f75789e4c6209dede1eaf003eefffc4506e70d37",
      "parents": [
        "46c6d7279ba834ee13b8f46bf6dd726e8bf65681"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Sep 29 11:45:18 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Sep 29 18:53:18 2020 +0000"
      },
      "message": "[incremental] fix x86 native lib extraction\n\nTest: atest CtsIncrementalInstallHostTestCases\nBUG: 168138334\nChange-Id: I7b76afbd88cf3f38c1527c9c917ce179e0bde589\n"
    },
    {
      "commit": "b65a77f7b5f22e9e4d7ae26b2f8e39c05ddd6622",
      "tree": "b843e8350d98096dc2f2dae085a1093701b531b1",
      "parents": [
        "b486020186dae610a096b6f8a928631732281d9d"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Sep 22 11:39:53 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Sep 22 11:45:21 2020 -0700"
      },
      "message": "Using wake to forcefully wake up the looper instead of 1s timeout.\n\nBug: 168156055\nTest: atest ApkVerityTest:com.android.apkverity.ApkVerityTest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest ChecksumsTest\nChange-Id: If65f65f9214b34bf057ed5f1877348d835251d14\n"
    },
    {
      "commit": "b39d13ed7f15d0c2d0a29f55e925318f44d31fa7",
      "tree": "5dc8ca839d6b5512d542fb6f8505fa73cf78aef3",
      "parents": [
        "b4ada7780762f6f450ce153217da9f4bbc08700b"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat Sep 12 16:12:36 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Sep 21 12:40:56 2020 -0700"
      },
      "message": "Installer digests for Incremental installations.\n\nBug: 160605420\nTest: atest ChecksumsTest\nChange-Id: I9d46c218cccf87781e9b33711c4d02d94bf824f5\n"
    },
    {
      "commit": "a70985945b1d51d30778f1c047a7e408d5d9032d",
      "tree": "e5d3818082f61617d3b2d26ad367a77a8265456d",
      "parents": [
        "dc8a48f161c59a140c8108217861138aaf64e180"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Thu Sep 03 11:45:53 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Sep 15 17:39:41 2020 -0700"
      },
      "message": "[incremental/pm] register progress listener\n\nIncremental Serivce periodically polls loading progress and sends to\nPackage Manager Service. Package Manager provides APIs for other\ninterested parties to listen to the loading progress.\n\nBUG: 165841827\nTest: unit test\nChange-Id: I44b9e17c2240b9efe53bc09fc728b6671f1f7dfe\n"
    },
    {
      "commit": "bc0a7e6cbf4a56c1451e8e03040974b1cc0a782d",
      "tree": "eddfd43620f7c3aadb6ff7428b46f61fe9c0ce25",
      "parents": [
        "edbf3411d2c91f38a1a5d93b9e5b3380524b3ed8"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Aug 25 12:45:22 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Aug 27 10:33:46 2020 -0700"
      },
      "message": "Wait for APK to be fully downloaded for full APK digests.\n\nBug: 160605420\nTest: atest ChecksumsTest\nChange-Id: Ib9fd591c67290786268b6dcdc57c7db153612e01\n"
    },
    {
      "commit": "425862f3e79087a914d4e3f0f7a94d6e999706ce",
      "tree": "a5d69cb4ef47599c03325270b3c89afd25d17e00",
      "parents": [
        "d6de4dcbd4775037efc2e4c085612056a5aefcad"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Aug 25 13:12:16 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Tue Aug 25 13:17:28 2020 -0700"
      },
      "message": "[incremental] storage is regarded as fully loaded if there\u0027s no file or only empty files\n\nTest: atest service.incremental_test\nBUG: 165799231\nChange-Id: I3b6be3918d53ce4ab0a30a4da493d9730a31ed3c\n"
    },
    {
      "commit": "374f7654dfb00692f6b3c2f6c68997e3ca54092a",
      "tree": "209eec3efa43e43f1795f95905ae61eec575e3a7",
      "parents": [
        "1581527cbd46ac3411fdf0c7068f40c04a9926fd"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Thu Aug 20 08:40:29 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Sat Aug 22 04:17:02 2020 +0000"
      },
      "message": "[IncrementalService] getLoadingProgress (v1)\n\nThis is to unblock Launcher\u0027s work on progress ring. Currently it uses\nincfs getFilledBlocks(). Will switch to the new incfs progress reporting\nAPI once it is ready.\n\nTest: unit test\nTest: adb shell dumpsys incremental\nBUG: 165799231\nChange-Id: Icd68124806454f888826294da36f109bca9771ac\n"
    },
    {
      "commit": "16bac8513e2f5be0fc8e7d7fe261b1756a0231d1",
      "tree": "885973c54bfafe0ed2fed6fc18b63953725c98f3",
      "parents": [
        "8d2626f55a5310389fe55ae676ce8c379ce59a8f"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Mon Aug 10 12:53:14 2020 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Mon Aug 10 08:36:35 2020 +0000"
      },
      "message": "Switch aidl::nullable to std::optional\n\nAIDL\u0027s @nullable is represented as std::optional in C++ backend.\nThe previous aidl::nullable was a temporary solution to avoid\nmerge-conflicts between rvc-dev and master branches.\n\nBug: 151275535\nTest: m\nChange-Id: I8fe5bfc1763087e7ff364b4408f862436492d1db\n"
    },
    {
      "commit": "c8975312c573a2a75030b85be1f3d81e121b3618",
      "tree": "eca2eeb333d80808e7e629206f6e563aeaa21580",
      "parents": [
        "42ef19d57c91227e987ec7a9945a66d8c8aa533e"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Mon Jul 13 12:14:37 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Mon Jul 13 12:14:37 2020 -0700"
      },
      "message": "[IncrementalService] fix native lib check after OTA\n\nThe lib dir should always be at the same dir level as the APK file.\n\nTest: manual with OTA\nTest: atest CtsExtractNativeLibsHostTestCases\nBUG: 160826412\nChange-Id: I87d715c4739c78bb56b85d375838db08bafa1594\n"
    },
    {
      "commit": "04035455084047084c2fae99a7892dbca9197802",
      "tree": "afc75f6b41e3cfe310d34b3338ff2252b9afa609",
      "parents": [
        "6bf0b87946288763dd0d455720bda726ee707e5c"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat Jun 06 20:15:58 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Jun 12 13:30:45 2020 -0700"
      },
      "message": "Don\u0027t provide read logs for shell-initiated installations.\n\nOnly if the application is profileable.\n\nBug: 158238023\nFixes: 158238023\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageParserTest\nChange-Id: I8575830ec3f29850297fdbfbaa157072d6350a28\nMerged-In: I8575830ec3f29850297fdbfbaa157072d6350a28\n"
    },
    {
      "commit": "46d3ddb311aaf83c2c881e4c182ce56cfeaf8fd1",
      "tree": "b9b66572e86e841428c3a4a75f162670659653b0",
      "parents": [
        "825ad11167f28574c76ae239396877a5a4115857"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri May 29 12:05:05 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Jun 01 00:25:23 2020 +0000"
      },
      "message": "Healthcheck: proper job allocation and test.\n\nBug: 153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\n\nChange-Id: Iede1f2297cc4f8e3c3f0acd43cee597f75dff179\n"
    },
    {
      "commit": "4760d8ff75e3d73c3cb97e5c2d88e4652c30d365",
      "tree": "9f3aaf62d5f70b1da3d62c05ae047d73fe923c5a",
      "parents": [
        "0bf898f7a7b006e5f2f9f14746ae896a3a5941a2"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri May 08 16:18:52 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri May 29 10:32:59 2020 -0700"
      },
      "message": "Lifecycle: detecting blocked and unhealthy, part 2.\n\nPart 2: continuous health checking, blocked and unhealthy states.\n\nBug: 153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ifdbff7dfa24b3bd9b96c534a40bb1226082749ca\n"
    },
    {
      "commit": "f2a6af4b8a4ea7d889b83b7e54135fca6dcfcb40",
      "tree": "78c35875466c851915046052199991ea15c7f6b2",
      "parents": [
        "09aa3bc4b7c2033af7dffc6e46b3db7aa6224623",
        "14f6c3c735164f8c0f879e96a568168b0c564fa6"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Wed May 27 22:17:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 27 22:17:23 2020 +0000"
      },
      "message": "Merge \"[incremental] respect extractNativeLibs in native lib config\" into rvc-dev"
    },
    {
      "commit": "14f6c3c735164f8c0f879e96a568168b0c564fa6",
      "tree": "c37f5f157beff7d081684192c70e6a19bbe6b7be",
      "parents": [
        "2cdbcea8ba29bbb8d50511a9fa6e5bd2763fb153"
      ],
      "author": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Thu May 21 18:19:07 2020 -0700"
      },
      "committer": {
        "name": "Songchun Fan",
        "email": "schfan@google.com",
        "time": "Wed May 27 22:16:57 2020 +0000"
      },
      "message": "[incremental] respect extractNativeLibs in native lib config\n\nMakes sure the behavior is consistent with legacy installs:\n\nWhen the flag is on, the native libs will be extracted to subdirs under\nlib/.\nWhen the flag is off, the lib/ subdirs will be created but the native\nlibs are not extracted.\nWhen the flag is off, check if the native libs are uncompressed and well\naligned.\n\nTest: atest android.extractnativelibs.cts.CtsExtractNativeLibsHostTest\nBUG: 157173358\nChange-Id: Idb57fd7ca1115f787faf5cde3056c32ff3f60890\n"
    },
    {
      "commit": "8ef61aebee68d4d8578cdfc6e6331286c3476bef",
      "tree": "3c82e665300c8ad0451179d39a377fa88dcbe63a",
      "parents": [
        "12416fba4a9f98d697a6dfb27a7da6bc58dc570d"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri May 08 16:18:52 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue May 26 19:34:39 2020 +0000"
      },
      "message": "Lifecycle: detecting blocked and unhealthy.\n\nPart 1: interfaces and PM implementation.\n\nBug: 153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: I312dd919d2bb552bea3d72fb49fd1579882da14b\n"
    },
    {
      "commit": "ea96c1f624db8befc583ef7b349b98528ee1041d",
      "tree": "6e23ec8b10e2128e96d97cbd847c33c94c8c96a4",
      "parents": [
        "235f1db1c1a7811add242a81867c543133855edc"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon May 18 10:06:01 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon May 18 11:40:43 2020 -0700"
      },
      "message": "Don\u0027t restart non-system DataLoaders on reboot.\n\nThis saves system\u0027s resources.\nHealthcheck will automatically start data loader on pending reads.\n\nBug: 153874006\nTest: test PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: I160153f1d3e7e653db5de06b59d6fbbc3667fdf2\n"
    },
    {
      "commit": "4dbc0607ee43d3b0eab5e115531c639ff1a1f339",
      "tree": "f3e3f7f0568ed34097022b1700d0650b00494ee7",
      "parents": [
        "5d1cb4fe1ed9c7834421401e124893994d859db0"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue May 12 11:24:14 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue May 12 13:49:29 2020 -0700"
      },
      "message": "Don\u0027t try to recreate IncrementalFileStorages on re-commit.\n\nBug: 156287164\nFixes 156287164\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\n\nChange-Id: I75e392a1fa84df8b6ac0b855233f9a2662998e96\n"
    },
    {
      "commit": "d0855a3ad851afac8fe07abfa03b350ed10198c4",
      "tree": "260c5e263e0e943be1830ffd8740efae69190d2c",
      "parents": [
        "d59d694f114a96cefbb709b3ae4e032070a7238b"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu May 07 18:40:51 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri May 08 10:35:58 2020 -0700"
      },
      "message": "Addressing CL comments.\n\nBug: 153874006\nTest: test PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ie8b86cdc382955840cc3718d79a45991cf89b879\n"
    },
    {
      "commit": "cca2c1110ce3eed8820579d0319d015aa4cdcf55",
      "tree": "f11979e28df0dcd45c54b2319683f809758e307f",
      "parents": [
        "7efdd5d903848c592d9bcd2e1fc3844f4cace3ca"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue May 05 12:48:41 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu May 07 21:22:14 2020 +0000"
      },
      "message": "Lifecycle: detecting pending reads.\n\nOnce pending read detected, try to start the dataloader.\n\nBug: 153874006\nTest: test PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\n\nChange-Id: Ia8169ccbb0f710317715e6fddb9bc6a718543766\n"
    },
    {
      "commit": "b0ea448eebe1422d5e42e8b86a02bed5daac2fd7",
      "tree": "96073cf4a8873013f30009e2a417c3bbb963bbc7",
      "parents": [
        "ed2789354a437ac39c1b0f17c12d328ce7dc302a"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon May 04 18:39:58 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon May 04 18:41:47 2020 -0700"
      },
      "message": "Additional lock to avoid access to deleted object.\n\nBug: b/155692497\nFixes: 155692497\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ie02012bd5a6c0640d54c5390d3726a5405042408\n"
    },
    {
      "commit": "7e0a1a8ec7ba90ef42ff33673f03af02650b3d7b",
      "tree": "49b5f59e88252c3871ec4306efb8b67cbf2cb31f",
      "parents": [
        "c463e56a80db2878b2c10db156ecf48dd45c075c"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 27 17:06:10 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Apr 29 04:23:49 2020 +0000"
      },
      "message": "Unavailable DataLoader status.\n\nThis is a temporary failure, does not fail the session, but requires\ncaller to re-commit. E.g. there are connectivity issues which can be\nfixed later.\n\nBug: b/153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: I02791a2963130dbecb510c4a7cafcf04f6245761\n"
    },
    {
      "commit": "64067b25b1160117aca1def5889e57d78011df3e",
      "tree": "8d7b762ac7e9c1e1a1813652bb3b9dfd82403be8",
      "parents": [
        "03a2c3833d4b872061bf83956191470abe55b241"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat Apr 25 15:56:52 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 27 11:06:29 2020 -0700"
      },
      "message": "Fix for Binder one-way deadlock.\n\nDispatch session destroy to be executed later.\nWe can\u0027t do anything blocking during one-way transaction processing.\nThis blocks all one-way transactions to this Binder, including other\nstatus updates.\n\nBug: b/153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nTest: atest IncrementalInstallerTest#testIncrementalInstallFails_onPrepareImageReturnsFalse\nChange-Id: Ie4385d603fca8b5205775e849e92846cff672f56\n"
    },
    {
      "commit": "0bdbccf37cc405ca18a1b959df83906a022f4886",
      "tree": "ca6e43af0344f503a7a35cdaf577b7f3ee9c2cb6",
      "parents": [
        "bd70574e1249b91e6f1f70681fa2ed8d3386f96b"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 23 20:36:42 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 23 22:28:36 2020 -0700"
      },
      "message": "Corner cases handling.\n\n- crash on disappearing dataloaders,\n- more robust binder callbacks processing,\n- heavy unbind lifting moved to a separate thread to unblock Binder.\n\nBug: b/153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ie06c3c4dbecbdd552dd868e2092bf0ee48f8547a\n"
    },
    {
      "commit": "ea1390ff324a8efab225955e507911bb1c44bca2",
      "tree": "f555dcac42f4343663db8cf703f9a8f96c477c44",
      "parents": [
        "eab14fca5dadd2b6f57ff37cce8ce2558c8b94f6"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Apr 22 16:08:50 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 23 19:38:44 2020 +0000"
      },
      "message": "Keep only service binding in DataLoaderManager.\n\nThis simplifies:\n- resource management - no extra copies of controls,\n- state management - all states in one place, no more hidden (bound but\nnot created) state.\n\nBug: b/153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: I3d16a099c7f42fcf14637c5a8e96bd6f99e073d1\n"
    },
    {
      "commit": "510037b064fd5a9bc4f9c6516b55c1787709c62d",
      "tree": "4af8d3173001d97f67314642e0b86862e041bd7f",
      "parents": [
        "1e52a093ae88a972be0a61863c9d21c75d006095"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Apr 22 15:46:21 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Apr 22 22:34:24 2020 -0700"
      },
      "message": "[cleanup] Enable clang-tidy and fix warnings\n\nMoving out of a const variable doesn\u0027t really work, apparently\n\nBug: 153704006\nTest: builds \u0026 boots\nChange-Id: Id7322f7045c08a20d72dda50808c0be427064cdd\n"
    },
    {
      "commit": "efebb45ad7fc25b477fea1416001c3193cefbec4",
      "tree": "e5ef33d655c87733025d0a93f829db1e6051b527",
      "parents": [
        "f315786c676da21c3a1a5ce3e8e0ee858fe134fe"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Apr 22 13:59:06 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Apr 22 14:00:55 2020 -0700"
      },
      "message": "[incfs] Use the new IncFs_MakeDirs() function\n\nThis gets rid of annoying warnings in logcat about not being\nable to create a directory and then directory already existing\n\nBug: 153704006\nTest: atest IncrementalServiceTest\nTest: adb install megacity.apk\nChange-Id: Ib718960287f93cb383c06c9b9e3d0abf1ec42916\n"
    },
    {
      "commit": "629051fd6541e9e4378043d1132dcf98c9ca7726",
      "tree": "cd566e00fdb6cdfeba4d8147b59c41796484d62c",
      "parents": [
        "360bbdc7203c851288d8e09d2eee2829975b210f"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 17 23:13:47 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Wed Apr 22 00:49:02 2020 -0700"
      },
      "message": "[incfs] Use MountRegistry to import existing mounts on start\n\nThis is a big cleanup in IncrementalService that makes it behave\nnicely on runtime restart, and more:\n\n- fixed a bunch of threading issues in createStorage/bind\n- made public functions correctly accept any path in any\n  bind mount and translate it to the proper root mount\n- got rid of \"using namespace\" in headers, cleaned includes\n- removed all unused functions\n- set CLOEXEC bit on all duped FDs\n\nBug: 151241369\nTest: atest PackageManagerShellCommandTest \\\n  PackageManagerShellCommandIncrementalTest \\\n  IncrementalServiceTest\n\nChange-Id: Ided4415aabfbfca3925b5e71c91896055886ac4a\n"
    },
    {
      "commit": "c2a645d717b8324c72c28c8564a127f3bf6b800e",
      "tree": "3fafe685cb446df9cbeedea3fee1a8b70e170030",
      "parents": [
        "ab1145d2f1da0ff5175e11478383db91b3cced79"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 20 14:11:55 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 20 14:11:55 2020 -0700"
      },
      "message": "Unblock the unmount on uninstallation.\n\nBug: b/153874006\nTest: test PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: I540ed36b87c40b8b58f0de727936c3efeb221198\n"
    },
    {
      "commit": "9a54579ac5d68bd1b665c159901183c604078cdd",
      "tree": "6819ec5694c4ed1db7d2d5029e9aa44dd43a0039",
      "parents": [
        "ab65cb1824d27f1c864b3cccc5075b5e1b96667c"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 17 15:34:47 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 17 22:07:10 2020 -0700"
      },
      "message": "Cleaning up resources on mount destruction.\n\nDataLoaderStub\u0027s lifetime is controlled externally, but we want to\nrelease resources ASAP.\n\nBug: b/153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: I34035f36d1fe4ed0e4916014d859feb7fe2c0a09\n"
    },
    {
      "commit": "ab65cb1824d27f1c864b3cccc5075b5e1b96667c",
      "tree": "6af4f3c75703b8579e1e3d6b09599b6c6ff7724a",
      "parents": [
        "74548402d1a07d1812f9dbd9f200f02058c69ac9"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 17 10:01:47 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 17 11:02:16 2020 -0700"
      },
      "message": "Switching to FSM-based DL lifecycle.\n\nThis is a pure refactoring.\n\nBug: b/153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ieda2be08d7359fa69b2d328c85b3606de6d02b3d\n"
    },
    {
      "commit": "3e188ae81d5d9c64ab50536d65cf2141f913bd2a",
      "tree": "2b3ac4b1ebc00b87bab4c025f66a87aba88d0e32",
      "parents": [
        "82a29a3308b3140ea24592722ebcd16b26f49ff5",
        "6c65a56d3904335a1ce243f3246e9eb9789d9602"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 15 00:52:43 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 15 00:52:43 2020 +0000"
      },
      "message": "Merge \"[incfs] Fix the block size calculation in .so extraction\" into rvc-dev"
    },
    {
      "commit": "6c65a56d3904335a1ce243f3246e9eb9789d9602",
      "tree": "b29881df98175e4e8441c31f9a1d4cfa3297712c",
      "parents": [
        "14b289e661ab2b90d13d2d11be82dfc4f5a50d42"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Tue Apr 14 15:25:49 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Tue Apr 14 15:25:49 2020 -0700"
      },
      "message": "[incfs] Fix the block size calculation in .so extraction\n\nBug: 154044009\nTest: adb install megacity.apk \u0026\u0026 adb shell cat *.so\nChange-Id: I0069c8cfa74c83810152d917a2bac9cdaf24d6a7\n"
    },
    {
      "commit": "0b20266c12294bc21d16a0b7fba309cf8526cf23",
      "tree": "bf274b1b98f70a8f9142b3d51766ba47b5d6a03c",
      "parents": [
        "159904ef2153a17a3e401e479f2846b78a4b9538"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 13 09:53:04 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Apr 14 09:25:37 2020 -0700"
      },
      "message": "DataLoader lifecycle.\n\n- mark disconnected DataLoaders as non-existent (destroyed),\n- remove storage destroy on DataLoader destroy,\n- more robust destroy on destruct handling,\n- less race-conditions.\n\nBug: b/153874006\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ib77302aac546d66ce40c5345417c7b424a1d601b\n"
    },
    {
      "commit": "721ac4d35013f189087ab256f18d2289b512c775",
      "tree": "bb28524193e0d51b3184dd3f17a4440fe06c4123",
      "parents": [
        "65a3920a07502314289ff5c1a6686fb7de293f18"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Mon Apr 13 11:34:32 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Mon Apr 13 11:34:32 2020 -0700"
      },
      "message": "[incfs] Correctly wait for async .so\u0027s extraction\n\nStorageID for an installation changes as we go from a staging\ndirectory to the final one. That\u0027s why the only correct way\nof waiting for the extraction to complete is by the whole\nMountID, even if later it would cause the call to wait on all\ninstances of the app.\n\n+ measure the waiting timing\n\nBug: 153513507\nTest: adb install megacity.apk\nChange-Id: I83558f155867ae5503719ecb63d591fc969c3995\n"
    },
    {
      "commit": "6994166a09aabeb9e81bf3e7e64f078cdf3ffce2",
      "tree": "c7a21cabfd659c320f7ed6756951d06550f86109",
      "parents": [
        "507bbaeb9b629cfdf2d790ceb50a6ef34bf70687"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat Apr 11 21:40:37 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Sat Apr 11 21:40:37 2020 -0700"
      },
      "message": "Reconnect to DataLoaders on restart.\n\nBug: b/151241369\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: I1532df63a2a36104dbd9cd90ee4e5f40bae00a6a\n"
    },
    {
      "commit": "86321400385172e6bb938d53ce733f1fd7984b20",
      "tree": "bffa46708212f84d6e0e0d2abf5c78c7273cf708",
      "parents": [
        "da208016d65c331218ed3a1acd2f45d5ca4ce006"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Apr 09 19:22:30 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 10 13:47:54 2020 -0700"
      },
      "message": "[incfs] Fix a crash in worker thread calling JNI\n\nWorker thread has to initialize JNI separately to be able\nto call into managed binders implemented in the same\nsystem_server process, e.g. DataLoaderManager\n\nBug: 153513507\nTest: adb install megacity.nov4.apk; adb install megacity.v4.apk\nChange-Id: I668e8664361cd2fb3353ec50efd689c7d613658f\n"
    },
    {
      "commit": "da208016d65c331218ed3a1acd2f45d5ca4ce006",
      "tree": "8ebc8a5a7a7d400e5e9ef3988331ac7043b54d17",
      "parents": [
        "b78a0f462e20676e4758a3f966c6f898cf95a2a7"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Tue Apr 07 15:35:21 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 10 12:30:49 2020 -0700"
      },
      "message": "[incfs] Make native library extraction async\n\nIncrementalService can create the library files beforehand, but\ndelay filling in their data. As it takes quite a while in\ngeneral (over a second in cases when the phone is busy), it\u0027s\nbetter to run the unzipping and filling in a separate thread\nand only make sure it finishes before the whole installation\nprocess is complete.\nThis speeds up the megacity.apk installation by ~250-300ms,\n1000-1100ms -\u003e 750-800ms\n\nBug: 153513507\nTest: adb install megacity.apk\n\nChange-Id: Ia44f7e45b9e0abaebdfb6fe5352f9dcf29ab4ece\n"
    },
    {
      "commit": "771027008b4de6bc035bc77b71bc78eaa382d3d9",
      "tree": "02275479902ebaedbcaaadf5bd89ae30e4656e5c",
      "parents": [
        "0cd8012b73d45e03509a25494441704a401c7021",
        "0ea4ff4d9715a0d13a9374b2081ada1b8c5679b0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 10 16:53:56 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 10 16:53:56 2020 +0000"
      },
      "message": "Merge \"Refactor: move dataLoader details to a separate class.\" into rvc-dev"
    },
    {
      "commit": "0cd8012b73d45e03509a25494441704a401c7021",
      "tree": "a5a3123499c000134bc6f3787a202d690568c1a1",
      "parents": [
        "0081f2531060adbcfb84f6dbedf856e4a0b3ec12"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Thu Apr 09 23:08:31 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 10 16:49:34 2020 +0000"
      },
      "message": "Get rid of two runtime static destructors\n\nBug: 153704006\nTest: compiles\nChange-Id: Icb44c2d2c1e26b13a4d03a4996bffe016a141286\n"
    },
    {
      "commit": "0ea4ff4d9715a0d13a9374b2081ada1b8c5679b0",
      "tree": "85b42e97f62a6708f2ee26d2dd1d8c55acc77a61",
      "parents": [
        "0131d5018826d995f434be52a53f52189f127a71"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 09 17:25:42 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 09 22:55:49 2020 -0700"
      },
      "message": "Refactor: move dataLoader details to a separate class.\n\nBug: b/151241369\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: If4e7d3bb9f0951dcaee4315f4be525883b7fc333\n"
    },
    {
      "commit": "119de1fb2a11a6eb18e32aeea973704a4ffa3af4",
      "tree": "5d426d54a23d896ada2a45ea2b2df6ca6e3ffb0a",
      "parents": [
        "edb826c298b525a3a13678db27e8e25c6c579a6d"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Apr 08 16:15:35 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Wed Apr 08 20:07:22 2020 -0700"
      },
      "message": "More setStorageParams improvements.\n\nUsing proper AppOp name: loader_usage_stats\n\nBug: b/152633648\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nTest: adb shell appops set 1000 LOADER_USAGE_STATS deny\nChange-Id: I199476ce29c81836c5402577ac225450cc5c9c82\n"
    },
    {
      "commit": "b9bc1dffbbeadaf95f704e53cbf863fa2fecc442",
      "tree": "51885367f0a523c6cd86da9144a8624fe8828c19",
      "parents": [
        "c920673e5f971ed1e5b022697725f649c3921a42",
        "5f9e3a0dc6566f6270005ffc3c9b5477121f2ca2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 08 05:48:09 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 08 05:48:09 2020 +0000"
      },
      "message": "Merge \"Uninitialized member fix :(\" into rvc-dev"
    },
    {
      "commit": "5f9e3a0dc6566f6270005ffc3c9b5477121f2ca2",
      "tree": "ea5d67528228b43717408f1fabb6c94f441fd746",
      "parents": [
        "f41567922839d9e84fad0333788301b6c2b330de"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Apr 07 21:13:41 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Apr 07 21:13:41 2020 -0700"
      },
      "message": "Uninitialized member fix :(\n\nBug: b/153468113\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ida26dc1476c2b329f9aba4d605e65c43e2cafac2\n"
    },
    {
      "commit": "9f16f2665a878a0f08fb73bd56ba1f703c35db4f",
      "tree": "c57785ea748685f79158d0dc917e4d31953ad912",
      "parents": [
        "99c0b6d118a2e86a93d258099912586260a5facd",
        "f41567922839d9e84fad0333788301b6c2b330de"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 08 00:48:58 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 08 00:48:58 2020 +0000"
      },
      "message": "Merge \"Change the way how we call setStorageParams.\" into rvc-dev"
    },
    {
      "commit": "f41567922839d9e84fad0333788301b6c2b330de",
      "tree": "404766a196d175d15820c1528eeacc44501c42a5",
      "parents": [
        "21f4dd5c7cd6daa4dd005832024c746a9f551d04"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Apr 07 14:26:55 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Apr 07 14:42:50 2020 -0700"
      },
      "message": "Change the way how we call setStorageParams.\n\nNow it\u0027s unified with callback FS connector - we are passing the\ncallback pointer directly to dataloader. This restricts access only\nto methods we want and only by someone we want.\n\nBug: b/153468113\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ib557ebbe7c6c5ce92140eb20534a3626b3ac96d3\n"
    },
    {
      "commit": "c3fcae21aed258f3ede1412a565faca73123125f",
      "tree": "7704209de74850d8385142333dcf0fad6f7e09e6",
      "parents": [
        "53c55f826006c5345d269351445c8381a96b81f7",
        "3787c9f5c6e85b027864b6f1a8c8fa1947daa5e4"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Tue Apr 07 18:20:18 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 18:20:18 2020 +0000"
      },
      "message": "Merge \"[incfs] Add time measurement for native libs extraction\" into rvc-dev"
    },
    {
      "commit": "3787c9f5c6e85b027864b6f1a8c8fa1947daa5e4",
      "tree": "d3e93427f306129959a79f7b0c6d3487d9750b5a",
      "parents": [
        "48079ba38c4035c316c3b10dc474f61e2c5af17f"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Mon Apr 06 23:10:28 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Tue Apr 07 09:20:35 2020 -0700"
      },
      "message": "[incfs] Add time measurement for native libs extraction\n\nUse the \"incremental.perflogging\" boolean system property\nto enable it\n\n+ a bunch of code cleanups\n\nBug: 152913040\nTest: manual\n\nChange-Id: I1cd259ff5821a47ce055003049f77cbf43eba24a\n"
    },
    {
      "commit": "1d89216eac8d5c122056165d77322151cc26a70c",
      "tree": "bad152666c0b2e0b2e4728b83418b19f1d73e498",
      "parents": [
        "3fc58ee5d501fc4a87455b690762207d8de52a32"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 03 23:00:19 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 06 12:22:49 2020 -0700"
      },
      "message": "Appops permission monitoring for GET_USAGE_STATS.\n\nThis makes sure DataLoader won\u0027t be able to obtain read logs once user\ndenies access.\n\nBug: b/152633648\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nTest: adb shell appops set 1000 GET_USAGE_STATS deny\nChange-Id: Ibbb74933b4ef0dd8f5fe27732743e5820b8ee4dc\n"
    },
    {
      "commit": "96e350b30d0c86ab6a3c283a796910c633249606",
      "tree": "e225391b6b31c6797f5e12972cb19ca934973f5a",
      "parents": [
        "b131e1b7463553f9c8147a9637c57b838542bb2a"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 02 20:03:47 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 03 18:44:43 2020 -0700"
      },
      "message": "Disallow read logs collection if user changes their mind.\n\nBug: b/152633648\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nTest: adb shell appops set 1000 GET_USAGE_STATS deny\nChange-Id: I7fc8356f84fe30669483470579eedf546f81f297\n"
    },
    {
      "commit": "107ae354444175218fd19bed1c1c4947969aa006",
      "tree": "af513ff9d6180d59def19f19d9b888ffeae2e593",
      "parents": [
        "8885e4f11569ac5aeb37074884bc4025972797c3"
      ],
      "author": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 03 13:12:51 2020 -0700"
      },
      "committer": {
        "name": "Yurii Zubrytskyi",
        "email": "zyy@google.com",
        "time": "Fri Apr 03 13:15:53 2020 -0700"
      },
      "message": "[incfs] fix the storage loading for existing mounts\n\nIncrementalService used to keep the storage parameters in the\ndirectory metadata, but our current incfs doesn\u0027t support\nmetadata on directories - so the storage id is encoded in its\nname. But the loading code used to think it\u0027s still in the\nmetadata and couldn\u0027t load anything for that reason\n\nBug: 151241369\nTest: install an app and reboot the phone. It\u0027s still there\nChange-Id: Ic93f8f368b48fc5c5cc9bb726eff80478183596c\n"
    },
    {
      "commit": "50e0244012bf627d015ed04fab224609258870eb",
      "tree": "251588009923ee31a3a42444adb365850b9ac8aa",
      "parents": [
        "a957475923108063af3ec244042df20b74cbb4f3",
        "5e860ba10563f092110cfd708d8b310372c4df3c"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 02 00:36:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 02 00:36:26 2020 +0000"
      },
      "message": "Merge changes from topic \"LOADER_USAGE_STATS\" into rvc-dev\n\n* changes:\n  Checking LOADER_USAGE_STATS before enabling read logs.\n  Revert \"Update the current API dump\"\n"
    },
    {
      "commit": "5e860ba10563f092110cfd708d8b310372c4df3c",
      "tree": "2e2eda058704f18549641f50bd99af74e7a5aad0",
      "parents": [
        "431c3abc1d769f7e65852b39f5f85a69ed34ffd7"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Mar 31 15:30:21 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Thu Apr 02 00:31:41 2020 +0000"
      },
      "message": "Checking LOADER_USAGE_STATS before enabling read logs.\n\nBug: b/152633648\nTest: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest\nChange-Id: Ic747a51b97b785c627c95bddecc6834ef602ff30\n"
    }
  ],
  "next": "e82cdd7935db15c861840a1c10beab37750acaa9"
}
