)]}'
{
  "log": [
    {
      "commit": "619121a15364dd489148e014a928480eb6b18abd",
      "tree": "9f8c8c6a4d440ffce7e25ed0e45bcb890085e56d",
      "parents": [
        "18fba4cee0da2a2ca3051791a9cbdf5fa6f552c9"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Nov 03 10:25:28 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Nov 04 23:17:07 2021 +0000"
      },
      "message": "Remove the code for verifying artifacts.\n\nVerifying artifacts using dexoptanalyzer takes long and is not suitable\nfor running at early boot. It was replaced with a faster approach, but\nthe code hasn\u0027t been cleaned up. As we are making more and more changes\nto odrefresh, the code for verifying artifaccts is outdated and becomes\na maintenance burden.\n\nBug: 203198541\nTest: Presubmits\nChange-Id: Ie689a38f44c986582901c1589b31af41e769d13e\n"
    },
    {
      "commit": "954b995c8cf3d3809d534353396225c9a29e6a42",
      "tree": "76dc28a60906efe9a418a3a1f881fd5d87be9653",
      "parents": [
        "4d4f3be595732e290d6973f9f83139d02fc1ab26"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Oct 08 16:38:45 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 16 02:15:11 2021 +0000"
      },
      "message": "odrefresh: Don\u0027t pass JARs in APEX as FD to dex2oat\n\nBug: 197285531\nTest: atest ComposHostTestCases\nTest: atest odsign_e2e_tests\nChange-Id: If315826031f5e0ef9c9a000bc375e7dfd16dbd6d\n"
    },
    {
      "commit": "884fe766bfcdff1a2a6423caef18bb2681d33283",
      "tree": "b9f9619fda7142b9cc38850f1eeab33466fe7236",
      "parents": [
        "d4d21bf191f2afcd4d6479d60a4d3ab7a19af839"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Oct 13 13:55:41 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Oct 15 17:26:51 2021 +0000"
      },
      "message": "Set timeout by command line flag\n\nInstead of deriving from --use-compilation-os implicitly, the client\nshould specify its desired timeout by command line flags.\n\nBug: 202830861\nTest: atest ComposHostTestCases\nChange-Id: Id47f80475639d952d055b4658ff89d153f0f4048\n"
    },
    {
      "commit": "d4d21bf191f2afcd4d6479d60a4d3ab7a19af839",
      "tree": "904e32af33a858babf5b05bfee05683e5866069c",
      "parents": [
        "740e1f972ab1401d0afa98f365d9f5fe70a8a895"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Wed Oct 13 11:07:25 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 15 15:03:44 2021 +0000"
      },
      "message": "Allow odrefresh to write elsewhere than dalvik-cache\n\nFor CompOS we want to be able to generate artifacts in different\nsubdirectories, e.g. /data/misc/apexdata/com.android.art/pending\nrather than /data/misc/apexdata/com.android.art/dalvik-cache.\n\nAdd a command line flag to enable this.\n\nBug: 200020887\nTest: atest art_standalone_libartbase_tests\nTest: manual: odrefresh --dalvik-cache\u003dfoo --force-compile\nChange-Id: Id10c9bcc8cb9f810c48727abc1858f5b16b360d2\n"
    },
    {
      "commit": "8d12ed67ba98bd0dce58bcebddf89cdb10fe3106",
      "tree": "c6f1a427139772aafd541dfacc48070a0e730db5",
      "parents": [
        "381e66a768c5100c5efc085d0e74d2e37fe6b7a4"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Tue Oct 12 16:17:37 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Tue Oct 12 16:17:37 2021 +0000"
      },
      "message": "Revert \"Implement another OdrDexopt to use new CompOS API\"\n\nThis reverts commit 381e66a768c5100c5efc085d0e74d2e37fe6b7a4.\n\nReason for revert: Build break\n\nBug: 202843353\nChange-Id: I48299a90f17d9ad8ff9260ebc618ac915b24e6a7\n"
    },
    {
      "commit": "381e66a768c5100c5efc085d0e74d2e37fe6b7a4",
      "tree": "7762353c8990e448917cfa4f336adaca6ad6b740",
      "parents": [
        "dc744e552a489c0b9e01112a065e5c4f56077006"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Oct 01 12:05:35 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Tue Oct 12 15:48:35 2021 +0000"
      },
      "message": "Implement another OdrDexopt to use new CompOS API\n\nThe old OdrDexoptCompilationOS (now renamed) is still active (currently\ncontrolled by a constant in the code) until everything is in place.\n\nThe new OdrDexoptCompilationOS put DexoptBcpExtArgs or\nDexoptSystemServerArgs into ExtendableParcelable with TaskType.\nThe ExtendableParcelable and TaskType makes it easy for ART to add other\ntask types to run in CompOS.\n\nBug: 193668901\nTest: atest ComposHostTestCases (with other changes)\n\nChange-Id: I7fc76942e38c50c12f5819e5114e48911f77d08b\n"
    },
    {
      "commit": "507a729e51588f7fa4eac7579d54ce7c96804349",
      "tree": "27f5b255f4dc7dc788688832c145494c63e5b79b",
      "parents": [
        "4a4696ad2a1403139828e5e6703479f320f06fee"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Sep 27 17:27:26 2021 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Oct 11 08:06:15 2021 +0000"
      },
      "message": "Increase max execution time for a VM\n\nWe already increased the per-process time, now additionally increase\nthe overall time. This is only needed for nested virtualization, but\nas before we currently do it for any VM. This is being fairly cautious\n- I\u0027ve only seen the timeout exceeded once, but we don\u0027t want flaky\ntests.\n\nI also modified the logic for deciding the timeout for any individual\nprocess. I think the modification reflects the original intent, but I\nmay have completely misunderstood.\n\nBug: 200924405\nTest: atest art_standalone_odrefresh_tests\nTest: atest ComposTestCase\nChange-Id: I2e1843431f709345e9b51f51be76a6c3aed2e179\n"
    },
    {
      "commit": "73c4f79b14492a930903f15553969a4e7ecbefed",
      "tree": "72ca8780c8d2584d344d1c01a0205a706f262338",
      "parents": [
        "507cf9052116f8052c45a08586a356d00daba563"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Oct 01 18:13:52 2021 +0000"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Oct 08 17:38:21 2021 +0000"
      },
      "message": "Reland^2: Create an abstraction for dexopt tasks\n\nCause of the revert / broken test:\n\nbuildbot-build.sh does not build libbinder_ndk.so.  Add the missing\ndependency to copy to the chroot.\n\nOriginal message:\n\nInstead of letting odrefresh building dex2oat cmdline arguments, hide\nthe specifics of cmdline flags behind an API abstraction. The API\ndefines the only necessary parameters for the actual dexopt task (e.g.\ncompiling BCP extension, system server) to proceed. The introduced API\nis private within ART.\n\nlibdexopt.so is created to contain the API and implementation. It is put\nunder art/artd/ in the sense that the future ART services can reuse and\nevolve the code.\n\nThis change should not have any effective change to the compilation\nresults.  Given the large size of the change, the dex2oat cmdline is\npurposely ordered in the same way as before.  The compiled artifacts\nshould not change at all.\n\nAlso, art_odrefresh_test is no longer built for the \"second\" ABI. This\nis to make it consistent to odrefresh, so that we won\u0027t need to test\nunused variation and build \"second\" for the dependencies.\n\nBug: 193668901\nTest: 1. Revert this change, run `odrefresh --force-compile`, capture\n\t the checksum of all output files.\n      2. Apply this change, repeat the same step.\n      3. Saw all the file hashes remain the same (except for\n\t cache-info.xml where the timestamp changed).\nTest: atest ComposHostTestCases\nTest: atest odsign_e2e_tests\nTest: atest art_standalone_odrefresh_tests\nTest: art/build/apex/runtests.sh\nTest: lunch full-eng; m; art/build/apex/runtests.sh\nTest: with master-art, art/tools/run-gtests.sh \\\n        /apex/com.android.art/bin/art/arm64/art_odrefresh_tests\nTest: TH\n\nChange-Id: I3bf805fba925c197ec10508a67f0a16e74d64c62\n"
    },
    {
      "commit": "4aaf6958e95a869d6677e0a07ebdd79bb77de507",
      "tree": "ea3a94705c3bc5dbacd60ed52ca8302755e8c7f9",
      "parents": [
        "139a5b991f0b4825829cccd21dc666fb9f386728"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 01 07:21:12 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 01 08:44:44 2021 +0000"
      },
      "message": "Revert \"Create an abstraction for dexopt tasks\"\n\nThis reverts commit 6221e67f136c5d766273029b0175f42de80eaaf3.\n\nBug: 193668901\n\nReason for revert: Still failing art_odrefresh_tests\n\nChange-Id: Ia521b4e4b560004186fdd46d8291ebc51cc526ed\n"
    },
    {
      "commit": "6221e67f136c5d766273029b0175f42de80eaaf3",
      "tree": "cff79c4e30d22acd0d6caeb60f2da2f94ca5e65a",
      "parents": [
        "52f7f63d8deb64a4d24530c9ce8d53ddf67c637c"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Sep 10 11:17:55 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Sep 30 15:26:00 2021 -0700"
      },
      "message": "Create an abstraction for dexopt tasks\n\nInstead of letting odrefresh building dex2oat cmdline arguments, hide\nthe specifics of cmdline flags behind an API abstraction. The API\ndefines the only necessary parameters for the actual dexopt task (e.g.\ncompiling BCP extension, system server) to proceed. The introduced API\nis private within ART.\n\nlibdexopt.so is created to contain the API and implementation. It is put\nunder art/artd/ in the sense that the future ART services can reuse and\nevolve the code.\n\nThis change should not have any effective change to the compilation\nresults.  Given the large size of the change, the dex2oat cmdline is\npurposely ordered in the same way as before.  The compiled artifacts\nshould not change at all.\n\nAlso, art_odrefresh_test is no longer built for the \"second\" ABI. This\nis to make it consistent to odrefresh, so that we won\u0027t need to test\nunused variation and build \"second\" for the dependencies.\n\nBug: 193668901\nTest: 1. Revert this change, run `odrefresh --force-compile`, capture\n         the checksum of all output files.\n      2. Apply this change, repeat the same step.\n      3. Saw all the file hashes remain the same (except for\n         cache-info.xml where the timestamp changed).\nTest: atest ComposHostTestCases\nTest: atest odsign_e2e_tests\nTest: atest art_standalone_odrefresh_tests\nTest: art/build/apex/runtests.sh\nTest: lunch full-eng; m; art/build/apex/runtests.sh\nTest: TH\nChange-Id: Id418ebd142e0610a307956a846586e9c0659ae93\n"
    },
    {
      "commit": "d7506309377250d7eb3202c2b01711a94b4aa989",
      "tree": "804c2a605a0aed384f10ff809d3967afaca568ec",
      "parents": [
        "c8878164931624a8f602551994e52a59183b4bc0"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Sep 24 17:08:23 2021 +0000"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Sep 24 17:08:23 2021 +0000"
      },
      "message": "Revert \"Create an abstraction for dexopt tasks\"\n\nThis reverts commit c8878164931624a8f602551994e52a59183b4bc0.\n\nReason for revert: broken build\n\nBug: 193668901\nChange-Id: Ib48e3681a4fa5d5858538030871a8bbb21f98840\n"
    },
    {
      "commit": "c8878164931624a8f602551994e52a59183b4bc0",
      "tree": "08cbf7eb301069b68631ad58b58965fee5affbc1",
      "parents": [
        "2f01e8ed55663b73787e079955d890e1ffd2983e"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Sep 10 11:17:55 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Sep 24 15:46:34 2021 +0000"
      },
      "message": "Create an abstraction for dexopt tasks\n\nInstead of letting odrefresh building dex2oat cmdline arguments, hide\nthe specifics of cmdline flags behind an API abstraction. The API\ndefines the only necessary parameters for the actual dexopt task (e.g.\ncompiling BCP extension, system server) to proceed. The introduced API\nis private within ART.\n\nlibdexopt.so is created to contain the API and implementation. It is put\nunder art/artd/ in the sense that the future ART services can reuse and\nevolve the code.\n\nThis change should not have any effective change to the compilation\nresults.  Given the large size of the change, the dex2oat cmdline is\npurposely ordered in the same way as before.  The compiled artifacts\nshould not change at all.\n\nAlso, art_odrefresh_test is no longer built for the \"second\" ABI. This\nis to make it consistent to odrefresh, so that we won\u0027t need to test\nunused variation and build \"second\" for the dependencies.\n\nBug: 193668901\nTest: 1. Revert this change, run `odrefresh --force-compile`, capture\n         the checksum of all output files.\n      2. Apply this change, repeat the same step.\n      3. Saw all the file hashes remain the same (except for\n         cache-info.xml where the timestamp changed).\nTest: atest ComposHostTestCases\nTest: atest odsign_e2e_tests\nTest: atest art_standalone_odrefresh_tests\nTest: art/build/apex/runtests.sh\nTest: TH\nChange-Id: I3404057050bc1ce6fce4f99cc5c9998e3d67808a\n"
    },
    {
      "commit": "ad58e1cec027a27a8fa9ac270557b566e903913b",
      "tree": "a9528e4695ddbf7f97218a6fa1fbd7c9a9b24a3b",
      "parents": [
        "d726cb1f9c607fc2f640ec595286cadd155af68e"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Sep 22 07:30:12 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Sep 22 09:44:18 2021 +0000"
      },
      "message": "Remove the use of --updatable-bcp-packages-fd from odrefresh.\n\nHistorically, this flag is used when compiling system server to prevent\nartifacts from being invalidated after a mainline update. We are now\nre-compiling system server after every mainline update, so this flag\nis no longer needed.\n\nSystem property `dalvik.vm.dex2oat-updatable-bcp-packages-file` and\ncode in dex2oat that related to the flag will be cleaned up in\nsubsequent CLs.\n\nBug: 200241946\nTest: atest art_standalone_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: I62a4b1a0a8750d55a8a59a5fa8618bfcfd0a7eca\n"
    },
    {
      "commit": "4e6cc7384f7c52d2fd9e13414696338c289d63f9",
      "tree": "712dfdfe9bec86f0ed98474f23b43c2fdaad3a4c",
      "parents": [
        "075567130f9353a0d0899c97910552f92529c038"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Fri Sep 17 04:46:24 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Sep 22 05:30:53 2021 +0000"
      },
      "message": "Support using boot image on system when compiling system server.\n\nWhen compiling system server, odrefresh assumes that boot classpath\nartifacts are on data, which is not necessarily true now because we\ndon\u0027t re-compile boot classpath jars unless there is an ART update.\n\nBug: 197176583\nTest: atest art_standalone_odrefresh_tests\nChange-Id: I613e8ce8a97ff5ec6e8dcb6fc7975363220a021c\n"
    },
    {
      "commit": "075567130f9353a0d0899c97910552f92529c038",
      "tree": "3888b0871f913c92e6661e6345ae89a58d413f5e",
      "parents": [
        "7fa70866414df11ef0c9d8eca3e6c23788e8c9d8"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Sep 16 07:21:00 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Sep 22 05:30:53 2021 +0000"
      },
      "message": "Update odrefresh to check APEX system server artifacts on system.\n\nBug: 194150908\nTest: manual - 1. Patch aosp/1828115.\n  2. Build a system image and flash it into a device.\n  3. adb logcat -d odrefresh:D odsign:D \"*:S\"\n  4. See \"odrefresh said artifacts are VALID\" and no dex2oat invocation\n  in the output.\nChange-Id: I702847515778affde49289b87f2f834aa3c2a922\n"
    },
    {
      "commit": "d44add98a69ac112c44423bced92b37cc495da86",
      "tree": "14d621a776ad035e177ea91c5c6892756dd0a066",
      "parents": [
        "059210dd634396b9a8d8b2cefb8637791894cb3c"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Aug 25 09:47:30 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 30 16:31:01 2021 +0000"
      },
      "message": "odrefresh: Allow extra 30s for subprocesses in VM\n\nThe test is still flaky (9.2% on aosp-master, cuttlefish on GCE) due to\nthe timeout. Give it extra time to see if it helps.\n\nBug: 197275229\nTest: TH\nChange-Id: I850cc14103599a0a6c141834d1deb166f0cee597\n"
    },
    {
      "commit": "f1865b3e0c03d40eb38df227603a3418fee41da5",
      "tree": "a1c97651c5970a7a67f461baecd1899b93d8f338",
      "parents": [
        "4fba66c84245be79b1b32cbfa1584cfc5a87f053"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Aug 24 18:33:45 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Aug 27 14:36:13 2021 +0000"
      },
      "message": "odrefresh: minor diagnostic improvements\n\nFix potentially unchecked access to the value of a std::optional\nfield.\n\nLog the ART APEX version when checking artifacts. Useful for issues\nwithout a bugreport.\n\nBug: 197489543\nTest: boot \u0026 check logcat, manually test with broken xml derived C++\nChange-Id: I7691d9eaa52206b125760e414f065be9d0358009\n"
    },
    {
      "commit": "ccbcfb17c9eabee791d674b794e696da10b1b28b",
      "tree": "75393520dd83f976246d5152ae4f97613691b56d",
      "parents": [
        "a7e7426a89bb5d1255a0a6f90cc3efb0a83d9195"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon Aug 23 15:10:35 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Aug 24 03:31:06 2021 +0000"
      },
      "message": "Revert^2 \"Add unit tests for odrefresh - step 2\"\n\nThis reverts commit b89649bd95cffec48f6f6746054553f71ab3e807.\n\nReason for revert: Fixed the fugu build breakage\n\nThe test failed on fugu because fugu is running Android O, while the\ntest depends on a system property introduced in S. Since the whole\nodrefresh program is for S and later, we don\u0027t need to run the test on\nolder platforms. This failure is fixed by adding a check on the API\nlevel and skipping the test if the API level is below S.\n\nBug: 196188549\nTest: atest art_standalone_odrefresh_tests\n\nChange-Id: I484696d065d715da65ae262a5aa8b3e1b30ffdcf\n"
    },
    {
      "commit": "a7e7426a89bb5d1255a0a6f90cc3efb0a83d9195",
      "tree": "3885cabe7032e514f21d4d58f02c94aab062f2ba",
      "parents": [
        "9bbecd08cccaae45cee9d87e72faeacb6b9ffe5b"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri Aug 20 09:25:37 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 23 19:14:01 2021 +0000"
      },
      "message": "Give extra time for odrefresh subprocess in VM\n\nBug: 197275229\nTest: run test on cuttlefish for several times\nChange-Id: I380c6f9a1aaeafc726bfb0257d46c8531fe090d6\n"
    },
    {
      "commit": "b89649bd95cffec48f6f6746054553f71ab3e807",
      "tree": "faaff2611b018e4864b29d1f5df47b2d0187b8d2",
      "parents": [
        "054c8008272861c4c2a845424a3be6705f884d93"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Aug 23 10:48:17 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 23 12:26:31 2021 +0000"
      },
      "message": "Revert \"Add unit tests for odrefresh - step 2\"\n\nThis reverts commit b91dad2b98e8c562aed7c4471615d7c325756c08.\n\nReason for revert: breaks builds on fugu.\n\nBug: 196188549\nChange-Id: Iec08674c2ed53b8e6048c044d5e72fdd26518a83\n"
    },
    {
      "commit": "b91dad2b98e8c562aed7c4471615d7c325756c08",
      "tree": "85f1d6092a86116555f785a4f906b5f852aa1fca",
      "parents": [
        "3bc03531d1ae5cbe5b0a7ac34c10d5c51f20f233"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon Aug 16 03:20:07 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 20 12:59:57 2021 +0000"
      },
      "message": "Add unit tests for odrefresh - step 2\n\n- Define MockableExecUtils, which is a wrapper class to make exec_utils\nmockable.\n- Add another constructor to the OnDeviceRefresh class to support\ninjections.\n- Update OdrConfig to support overriding the staging directory.\n- Add a unit test to verify that odrefresh sets compiler filter based on\n\"dalvik.vm.systemservercompilerfilter\".\n\nBug: 196188549\nTest: atest art_standalone_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Ia7b4347bba6873878490a513b8a5ff6642122d71\n"
    },
    {
      "commit": "3ba3edfee2592edeea4a4cf06336577178bf2b12",
      "tree": "e06356064d47310651e5f65f8449d3716aea05c4",
      "parents": [
        "70aa29e2d93ba66e71a8ff88c9210719efae1c31"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Aug 11 08:25:40 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 16 08:38:52 2021 +0000"
      },
      "message": "Add unit tests for odrefresh - step 1\n\n- Define `class OnDeviceRefresh` in the header file and expose some\npublic methods.\n- Changed the ordering of functions. (Function bodies are\nnot changed.)\n- Move static functions to the anonymous namespace, outside of the\nclass.\n- Cleanup \"static\" keywords inside the anonymous namespace.\n- Move the `main` function and related functions about argument parsing\nand usage help to a separate file `odrefresh_main.cc`.\n- Move `Concatenate` and `QuotePath` to separate files\n`odr_common.h`/`odr_common.cc`.\n\nBug: 196188549\nTest: m odrefresh\nTest: m odrefreshd\nTest: atest odsign_e2e_tests\nChange-Id: I0ae1cf34181ae2edf7fd2728ec90b842470d729e\n"
    },
    {
      "commit": "7de49d88a1fded45a20209b5335464dd84c3ea03",
      "tree": "e70608fd9d970418cc74e5fd8bcba55959c1ac63",
      "parents": [
        "668daf892a2b81b1acc09c354d705774daa17958"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Jul 14 11:09:49 2021 +0800"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Aug 11 00:21:46 2021 +0000"
      },
      "message": "Update on-device AOT compilation to cover all cases.\n\nAfter the change, odrefresh can properly determine whether to do\ncompilation when:\n1. There is a mainline update (either a normal one or a samegrade one) that updates the ART module.\n2. There is a mainline update (either a normal one or a samegrade one) that updates a module other than ART.\n3. There is an OTA that updates a boot classpath jar.\n4. There is an OTA that updates a system server jar.\n5. There is no change since the last run.\n\nTest: manual - 1. Install a mainline module without changing its\ncontents.\n    2. Reboot the device.\n    3. See if system_server components are recompiled.\nTest: manual - 1. Do nothing and reboot the device.\n    2. See if nothing is recompiled.\nTest: atest odsign_e2e_tests\nTest: atest art_odrefresh_tests\nBug: 189467174\n\nChange-Id: I43dea5380fcd221d5d4e34753d64d46be4dbc27e\n"
    },
    {
      "commit": "5503a8aef8019e536b9702326eccdc92e7be7644",
      "tree": "377cd41fc2ea30dd2f3eb50e4426808ad1ee626c",
      "parents": [
        "b09a983e8dab0477b2546ed56544d31f575c5d2a"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Aug 10 08:07:12 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Aug 10 11:46:45 2021 +0000"
      },
      "message": "odrefresh: Respect \"dalvik.vm.systemservercompilerfilter\".\n\nIf the property is set, we should use whatever specified in the\nproperty, rather than always using \"speed\".\n\nThis is brought up by bdc@. The change that merges into sc-dev is\nalready fixed. We need this fix in AOSP as well.\n\nBug: 195653499\nTest: adb shell setprop dalvik.vm.systemservercompilerfilter verify \u0026\u0026 adb shell odrefresh --force-compile\n    (Found \"/apex/com.android.art/bin/dex2oat64\n    --dex-file\u003d/system/framework/services.jar\n    ...\n    --compiler-filter\u003dverify\" in logcat)\nTest: atest odsign_e2e_tests\n\nChange-Id: Icb57ed5eb6b8976ecf6ac88bf8c278bbe144b450\n"
    },
    {
      "commit": "b09a983e8dab0477b2546ed56544d31f575c5d2a",
      "tree": "7fa0b67a5d8d03aa1205d9cfbc5edc96edda17ec",
      "parents": [
        "855cc35a2212d51de19d1daaefe6577223882fd6"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon Aug 09 03:49:33 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Aug 10 05:34:48 2021 +0000"
      },
      "message": "odrefresh: Defaults to using \"speed\" for compiling system_server.\n\nMost device builds use the speed configuration for system_server preopt,\nunless \"dalvik.vm.systemservercompilerfilter\" is set to \"speed-profile\".\nodrefresh should not change this behavior.\n\nBug: 195653499\nTest: adb shell odrefresh --force-compile\n    (Found \"/apex/com.android.art/bin/dex2oat64\n    --dex-file\u003d/system/framework/services.jar\n    ...\n    --compiler-filter\u003dspeed\" in logcat)\nTest: adb shell setprop dalvik.vm.systemservercompilerfilter speed-profile \u0026\u0026 adb shell odrefresh --force-compile\n    (Found \"/apex/com.android.art/bin/dex2oat64\n    --dex-file\u003d/system/framework/services.jar\n    ...\n    --profile-file-fd\u003d...\n    --compiler-filter\u003dspeed-profile\" in logcat)\nTest: atest odsign_e2e_tests\n\nChange-Id: I85feeceef4c1410451765274bd02c634d7d8051f\n"
    },
    {
      "commit": "ce9b902a161b86eb2d5ef9fe4442305e25828d0a",
      "tree": "3108d6315b779816b076b220870748631235e2ea",
      "parents": [
        "a8f858e4eddeede8c465cc5b9fb40733e4649aed"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jul 21 10:44:06 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 27 16:56:08 2021 +0000"
      },
      "message": "Reland: Support pass BCP art/vdex/oat files by FD\n\nThe original implementation in odrefresh generated inconsistent number\nof files between jars and other files. The code is reworked.\n\nOriginal description:\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nTest: odsign_e2e_tests\nChange-Id: Ie3ae48c7d70a2779cfbd80b307199a0f327c895c\n"
    },
    {
      "commit": "d7a4da1f357e089c5d150559d8d2f2ddb7c4958a",
      "tree": "bde88500eac9eda86031cfe8536241dfc79e12d2",
      "parents": [
        "2cb2527d4136f681b8e79352c546e65431ceb10c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 15:05:49 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 14:16:27 2021 +0000"
      },
      "message": "Revert \"Support pass BCP art/vdex/oat files by FD\"\n\nThis reverts commit b1adfc2a0570f52d74b8a4acdd578efc1790995b.\n\nReason: reports from Realtime Stability Insights (RTSI) infra.\n\nBug: 193720426\nFix: 194481664\nFix: 194475273\nFix: 194478073\nTest: TH\nChange-Id: I421d0b4a613de5ac8fb2830fa27206edb5428374\n"
    },
    {
      "commit": "b1adfc2a0570f52d74b8a4acdd578efc1790995b",
      "tree": "c5058390901f2abbb0e281d8403be2b8db02c337",
      "parents": [
        "71f763399e95676d665e071623bccb714acf88b4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jul 21 10:44:06 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 23 01:47:27 2021 +0000"
      },
      "message": "Support pass BCP art/vdex/oat files by FD\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nChange-Id: I209085f047c42823ff20415804f65a9b32378b40\n"
    },
    {
      "commit": "d61b021fffc641906d1c531a233b62a8f66c184a",
      "tree": "2e81f49ce6986fbc069286d28b48f41b19dce0c6",
      "parents": [
        "9e050ab1a061d9660eb0c1daa01a823ad75b0f05"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Jul 08 10:20:26 2021 +0800"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Jul 14 23:37:32 2021 +0000"
      },
      "message": "Trigger on-device AOT compilation for system_server on mainline update.\n\nBefore this change, AOT compilation for system_server are triggered only\non ART mainline update, and only the system_server components in /system are compiled.\n\nAfter this change, AOT compilation for system_server are triggered on\nany mainline update that touches $BOOTCLASSPATH or\n$SYSTEMSERVERCLASSPATH, and the system_server components in mainline\nmodules are also compiled.\n\nTest: manual - 1. Modify a mainline module (such as com.android.wifi).\n    2. Install the modified module on a device and reboot the device.\n    3. See if system_server components are recompiled (while boot\n    classpath components are not).\nTest: atest odsign_e2e_tests\nTest: art/tools/run-gtests.sh -j8 apex/com.android.art/bin/art/x86_64/art_libartbase_tests\nTest: atest art_odrefresh_tests\nBug: 189467174\nChange-Id: Icaba5471e9f62fd035f0a24d662ecfaf2e064cab\n"
    },
    {
      "commit": "20b3c57170206febd53a20287bf6b7d5e620b62d",
      "tree": "b00ce13aa9fd9069dcf922f23901a6e70e9cb539",
      "parents": [
        "2ec38232c632a2c7f3069f02d5c4d7036f14575b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 08 20:41:48 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 09 14:00:00 2021 +0000"
      },
      "message": "odrefresh: add test for samegrade ART APEX install\n\nAdds a test that a samegrade ART APEX installation triggers\nrecompilation of AOT artifacts.\n\nThe test exposed situation where the first log entry is incorrectly\nlogged as zero which is also fixed here.\n\nBug: 192647837\nTest: atest odsign_e2e_tests\nTest: atest art_odrefresh_tests\nChange-Id: Iefb0fbbca119ed3e47bc17caa2ef8467b241b26c\n"
    },
    {
      "commit": "79f874d287cb314dcf3fb8a78122d4296e91bd42",
      "tree": "7f2c9bd81b107e4acda51dcd7a133153980961de",
      "parents": [
        "4f623272bdf76d0308af4e45a71fb5a728d4f0f1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 07 08:28:31 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 08 14:37:36 2021 +0000"
      },
      "message": "odrefresh: add support for lastUpdateMillis as part of version check\n\nThis is to support samegrade updates for module evaluation.\n\nBug: 192647837\nTest: atest art_standalone_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Ied43ebdcc4b2ec57e337e709970fab948cf5f992\n"
    },
    {
      "commit": "2c9667363ba0f8178a077332a8ec1c74426fdc70",
      "tree": "b3b8f5c32c423e10f1419cd3fd4d35fdd0e4ac94",
      "parents": [
        "ea936c02701dc7ac773f5c2272dafde5e1967ea0"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Fri Jul 02 12:04:15 2021 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Jul 05 09:41:08 2021 +0100"
      },
      "message": "Don\u0027t delete everything in apexdata/com.android.art.\n\nRather than deleting everything we now specifically delete the\nartifacts directory when validation fails or forcing compilation. This\nallows the pending directory, with CompOS artifacts, to be preserved\nand used as an alternative.\n\nAs a slightly gratuitous bonus, delete the staging directory when\nwe\u0027re done with it, rather than just its contents.\n\nTest: Manual, create pending directory, see it preserved.\nTest: atest --host art_odrefresh_tests\nTest: Presubmits\nBug: 190166662\nChange-Id: Ic6f0cb15eb22b3a235d9df90653c6e6d63ea80bc\n"
    },
    {
      "commit": "156a8618372cda12eaff321c545d9126df225c0d",
      "tree": "c68e18a57ec9496abb2b5146a9b6965f04a36b9c",
      "parents": [
        "ac97f3e110eb57824a2560888406e31cb157bd7b"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 17 12:47:17 2021 -0700"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Jun 22 08:13:48 2021 +0000"
      },
      "message": "odrefresh: don\u0027t stage profile if not exists\n\nThe code staged the file even if the open failed. This causes a null\npointer dereference later in JoinFilesAsFDs (only used in the\nCompilaiton OS case).\n\nBug: 186132447\nTest: odrefresh --use-compilation-os\u003d10 --force-compile\n      # complete successfully with other changes\nChange-Id: I8227d863ea56e2a7071816130f6b354ac80d03ce\n"
    },
    {
      "commit": "71b2cb54099218952385c8c295dbff8be81263ce",
      "tree": "eb63230d86e92b12af34fc2ea3d3290352855bf0",
      "parents": [
        "885929fda9e1247910aa1f68f982d098fb84c843"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 16 20:08:16 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 17 08:47:26 2021 +0000"
      },
      "message": "odrefresh: fix instruction set selection.\n\nRefactoring led to the instruction-set argument being dropped in\nodrefresh. This manifested itself as failures in the odsign_e2e_tests\nas the secondary zygote was running in jit-zygote mode.\n\nRe-enables the verifyGeneratedArtifactsLoaded test and enforces a\ndeterministic order for the odsign_e2e_tests.\n\nBug: 191113888\nTest: atest odsign_e2e_tests\nChange-Id: I5308a6cf9ddf16e2991bfaf9c6f27bd7e8ff0aff\n"
    },
    {
      "commit": "885929fda9e1247910aa1f68f982d098fb84c843",
      "tree": "1cee9495c84311c4acc9bfd3e01cb71c1b6f23bf",
      "parents": [
        "869746ef31936f09a93717ee1ef3960f8fb6dd69"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jun 16 15:11:16 2021 -0700"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 17 08:45:28 2021 +0000"
      },
      "message": "odrefresh: Fix mis-placed delimiter when joining FDs\n\nBroken example: [3,4,5] -\u003e \"34,5,\"\n\nBug: 187327262\nTest: Start a VM; odrefresh --use-compilation-os\u003d10 --force-compile\nChange-Id: I32d6289889645f68b4e82fdca1a770713225c357\n"
    },
    {
      "commit": "b3a4e01448a32b2dc53cad8a981ed7c75d12d2cc",
      "tree": "6bf28066ed85e965d1bc141abcdac5c3a5a72a7f",
      "parents": [
        "0be3da60fa382ded4a3f9b714d9da4e22667e15a"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 12:48:10 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "odrefresh: Support option to run dex2oat in PVM\n\npvm_exec is an executable to run a command remotely, assuming the code\nis also in the VM. Since the input files may not be available in the VM,\npvm_exec internally takes over the FDs and becomes a file server. In the\nremote execution setup, dex2oat receives the same FD numbers, and relies\non \"authfs\", a FUSE client that talkes to the file server, to translate\nthe read/write.\n\nBy wrapping dex2oat with pvm_exec, this change makes it possible run\ndex2oat remotely, though not necessarily securely. For example, a\ncommand is not a secure interface since it allows unlimited numbers of\ncombination of input paramters (or even allow manipulating the\ncompilation, e.g. by adjusting Java property).\n\nWe\u0027ll need to change the interface later. But in the meantime, this\nchange will allow us to iterate more easily.\n\nBug: 187346876\nTest: 1. Start a PVM with ART and CompOS apex mounted\n      2. /apex/com.android.art/bin/odrefresh --use-compos\u003d$CID \\\n         --force-compile\n      # odrefresh returns successfully (though much slower right now)\nChange-Id: I722e5290246e180a89f6d42d9a6bc10c79dc0d1a\n"
    },
    {
      "commit": "0be3da60fa382ded4a3f9b714d9da4e22667e15a",
      "tree": "3e46c14034576a30f3ddfc586bf4a0f8f5758c73",
      "parents": [
        "f667c33fc88356aa80d455430752719aaae57717"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 12:37:03 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "odrefresh: pass BCP JARs as FDs to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile  # succeed\nTest: strace  # observed less openat(2) of JARs\n\nChange-Id: I8eec85374bcf3135ec2be3f542bb82dd62fd010d\n"
    },
    {
      "commit": "4ab592315e766876d2ae96f28f05bab9ae46c160",
      "tree": "70434b91f12a6fe7d52581446ce879732ea07900",
      "parents": [
        "b10668cb6a34398eb720f9a6305ff9a51b3ebfd4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 10 12:24:02 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 15:08:21 2021 +0000"
      },
      "message": "Add --dirty-image-objects-fd and --updatable-bcp-packages-fd\n\nAlso, let odrefresh pass the files as FD to dex2oat.\n\nReadCommentedInputFromZip is removed since it\u0027s not used at all.\n\nBug: 187327262\nTest: odrefresh --force-compile\nChange-Id: Ie9247362eebaf46ef473f84effeb6e66830d077e\n"
    },
    {
      "commit": "f761f5887918375b842e4cc62ed9cbe7521c8444",
      "tree": "5cc23ca0310d55ac2f9a1dcd8959351f1376745b",
      "parents": [
        "890f2eb950930b9054bca6a77fd19f0e6c1a9c9b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 09 10:50:57 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 10 08:00:22 2021 +0000"
      },
      "message": "Revert^2 \"odrefresh: compilation backoff\"\n\nAdds backoff logic to limit attempts odrefresh tries to compile. It\nwill always recompile if the APEX is updated or the input JARs change,\nbut if compilation fails for any reason then odrefresh backs off\nexponentially in days.\n\nRelands commit 6859ffca5ffd15128459293046590488008221ff. The\nodsign_e2e tests required updating to remove the compilation log whose\npurpose is to backoff compilation attempts in the wild.\n\nBug: 187494247\nTest: atest art_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Id41ee875cf1ca376f8e2ae05a43d0f6f74a9995f\n"
    },
    {
      "commit": "2835c29a338bbf3c85052cfa157561d0a42043f6",
      "tree": "a0e21b1d1e8b8d37ca8678d935f13feac4415c77",
      "parents": [
        "9faf7c77ac6974e34a644d75ceddd1d5f4268bfb"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu May 27 15:32:18 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 02 19:26:31 2021 +0000"
      },
      "message": "Pass classpath loader FDs to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile  # success\nTest: strace  # no more open for such case\nChange-Id: I3e4a892663420f725b83610b21537f9443d35657\n"
    },
    {
      "commit": "ae553e0e1b26d95006aa27df4675104bfb55d49d",
      "tree": "cff192c4ec487a77f6b2564870a9338fd8b0d371",
      "parents": [
        "bdf1737bd17132525bcfdc778663123b61e97fa3"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 27 12:39:49 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 27 15:47:13 2021 +0000"
      },
      "message": "Revert \"odrefresh: compilation backoff\"\n\nThis reverts commit 6859ffca5ffd15128459293046590488008221ff.\n\nReason for revert: Break presubmits (b/189316064)\nFix: 189316064\nBug: 187494247\n\nChange-Id: I146480c01e401e5e0de8f7e0dcf1dbc9d68850f4\n"
    },
    {
      "commit": "6859ffca5ffd15128459293046590488008221ff",
      "tree": "cb43cbcd94b20208ad704a9b094de170e7f837fc",
      "parents": [
        "d196f661fae8473dedfd4b544c6873144202bc78"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 17 15:09:06 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed May 26 08:42:34 2021 +0000"
      },
      "message": "odrefresh: compilation backoff\n\nAdd backoff logic to limit attempts odrefresh tries to compile. It\nwill always recompile if the APEX is updated or the input JARs change,\nbut if compilation fails for any reason then odrefresh backs off\nexponentially in days.\n\nBug: 187494247\nTest: atest art_odrefresh_tests\nTest: manual\nChange-Id: I11fe5549038680d03df663135ed087161428f392\n"
    },
    {
      "commit": "a9f80fcd2e2aca477eab7c0e9a6fce1f9537633a",
      "tree": "fedda7c1cd0fe5e0629de5606e2d5601b3d7ea05",
      "parents": [
        "3d05e61a420e499bfc9221445237c964e0a8aa63"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 17:28:26 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 21 16:06:45 2021 +0000"
      },
      "message": "odrefresh: pass profile file as fd to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile # succeeded; saw expected strace\nTest: atest art_odrefresh_tests\n\nChange-Id: Ie30f70ca9740b703d5ff5ac8efb3c14cdf48bce8\n"
    },
    {
      "commit": "826e6667c4d543c5c75a4a87d7cceb43f72078d0",
      "tree": "8ae4e9c93339c61fc1c30525a448b5c8ee61f77e",
      "parents": [
        "b3bc892bfae8267c3b82bbbd4263cb368f7a3be3"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 15:40:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 18 22:41:46 2021 +0000"
      },
      "message": "Add --dex-fd to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile\n      (also, no longer seeing openat(2) BCP extension jars via strace)\nTest: atest art_odrefresh_tests\n\nChange-Id: Icac9ed522eae307e8e4391ba9cc59927c57c0d68\n"
    },
    {
      "commit": "8ba64c2143564063ff04fbd519e5695138ab3dd8",
      "tree": "193df95c82534e6675a299417756e5daf0d01745",
      "parents": [
        "0108f0d5c1e820d3a4bb0d90aad989b89e28784a"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon May 10 07:16:09 2021 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon May 10 07:16:09 2021 -0700"
      },
      "message": "odrefresh: Avoid string copy\n\nGetFreeSpace() takes a const std::string\u0026, so we don\u0027t need to\nuse c_str().\n\nTest: TreeHugger\nChange-Id: I8d7fd3841481d7aee2caa59ce775c8fe380aeb3d\n"
    },
    {
      "commit": "816cab342a8db032b660018d4c933032a326b5c8",
      "tree": "dff85eeb5a05c1cca9cc281751489d138175ded0",
      "parents": [
        "263c39eaef07d56a34f853320dae76ab5693c377"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 07 14:14:42 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 10 08:39:02 2021 +0000"
      },
      "message": "odrefresh: log an error if updatable_bcp_packages file is missing\n\nCompilation of system_server JARs will fail if\nupdatable_bcp_packages file is missing.\n\nBug: 187494247\nTest: manual ART APEX update\nChange-Id: I9e8ead0d42ff889bdcb99042c5c83fd581be4f75\n"
    },
    {
      "commit": "263c39eaef07d56a34f853320dae76ab5693c377",
      "tree": "e33364abe27f58f0b508131844dfc7bfbdb24aeb",
      "parents": [
        "053e1383c721b0a1c4f87b2d391ab392c64caf84"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 07 10:17:14 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 10 08:39:02 2021 +0000"
      },
      "message": "odrefresh: add compilation space checks\n\nBug: 160683548\nTest: manual\nChange-Id: Ic640da41855477bf3b6524e82efb15f384127d9e\n"
    },
    {
      "commit": "d4edf4fc8a25a1fb21a9b8e4e73303458652dbce",
      "tree": "34fbac3de4f15a2afcad9f428cca93e2f3bea770",
      "parents": [
        "61c624239ced1203d1c77cbeb5a57f9ad2c5c73d"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Apr 26 06:31:28 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 28 13:00:29 2021 +0000"
      },
      "message": "odrefresh: Avoid a couple string copies\n\nWith the new utility versions of these functions changing their\narguments from \"const char *\" to \"const std::string\u0026\", we want\nto avoid using c_str(), so we don\u0027t end up making an extra\ncopy of the string.\n\nBug: 160683548\nTest: TreeHugger\n\n(cherry picked from commit 648fefa36c37ec40060b975b893ccc57b7f6ef89)\n\nMerged-In: If547052e8292bb4d9b26ceaa27b4e5e5ca627ea3\nChange-Id: Id38387b40b0f7a4f29402fc05e5affab835c7d69\n"
    },
    {
      "commit": "957fb15e70533874f1e60da2ef89fdd0f1469a6d",
      "tree": "b288f41d4a075a3ddacbd898b240c07a2eca36f5",
      "parents": [
        "f96c9163a7dc68d750234b66cbada0b2c70c28bf"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 08 07:52:15 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: add metrics support\n\nAdds metrics to stages of odrefresh.\n\nBug: 169925964\nTest: atest art_odrefresh_tests\nTest: atest --host art_odrefresh_tests\n\n(cherry picked from commit 3d877f082636f26ad57c92e3aae1525faacff51b)\nMerged-In: I768ce5f122b0c1b839f4cdf55aa6dafb68708eb2\nChange-Id: I8355fd38c28e41b04f0ea52384061b686cb1e362\n"
    },
    {
      "commit": "f96c9163a7dc68d750234b66cbada0b2c70c28bf",
      "tree": "d6c8f98643e2280f7c52b534d7e00ca299e3d0eb",
      "parents": [
        "c182a17abb1857b6edaa7fb1fcda00595051775d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 07 10:43:01 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: move file-system utilities into odr_fs_utils.{h,cc}\n\nPreparation for metrics support which will use the same functionality.\n\nAdd tests for odrefresh file-system utilities too.\n\nBug: 160683548\nTest: atest art_odrefresh_tests\n\n(cherry picked from commit dda82d2ed4d073866f3c3da3d88ad178261c62f4)\nMerged-In: I1da2f477f51b1d445bbee3b22a9c1fb268d25e80\nChange-Id: If4b8cfdb9c68167aae07268b29140e1162af2293\n"
    },
    {
      "commit": "4b3f4d33fb9edcc35af39ec283b915cd8fac24f2",
      "tree": "aebed8d1f1b44033b2599dc89730e7eb81bc3f10",
      "parents": [
        "e1d170683b7f61f0c86c45b110889a999725c7a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 15:17:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 21 08:56:28 2021 +0000"
      },
      "message": "Limit odrefresh progress percent to 90.\n\nThe boot animation will handle the finish to a 100.\n\nTest: boot after an ART update\nChange-Id: I5e7691ebcc506ba971a28b546c934aab818d522f\n"
    },
    {
      "commit": "5db2fd0e535b056ccb11e137f195b311627b48ff",
      "tree": "e998887ca55772dc43a0238dff373758472e646c",
      "parents": [
        "40e53f8c4ce22196b817dddb5aa795d8bc63288a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 15:07:56 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 08:11:18 2021 +0000"
      },
      "message": "odrefresh: update progress bar when compiling.\n\nTest: update ART, visually see progress bar\nBug: 160683548\nChange-Id: Id5edb2655434d3f04fd6952f8ce892e01d2bbbb0\n"
    },
    {
      "commit": "84ebf3ca3a71cbde2607d30581c8bed7a24277ab",
      "tree": "f3834f2c8b2e4c9b2544426316bef1c87a6c9d74",
      "parents": [
        "fcbbdd4f364969afac7fc5862d0899460fba3e33"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 22 17:03:42 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 23 11:21:19 2021 +0000"
      },
      "message": "odrefresh: ensure dalvik-cache exists for cache-info.xml file\n\nEnsure ART module apexdata/dalvik-cache directory exist before writing\ncache-info.xml.\n\nMinor comment clarifications.\n\nBug: 160683548\nTest: manual, observe updated module only recompiles on initial reboot.\nChange-Id: I51e5f0bc35bc6de5ae3bfb4ce7a6ab5e0dd4fe29\n"
    },
    {
      "commit": "fcbbdd4f364969afac7fc5862d0899460fba3e33",
      "tree": "ac3642c448ccf8998c350fd2be2c8e07d7cbd4e3",
      "parents": [
        "3b2629b90106b027ed5bcb7a9c1bf98be22b5d10"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 22 17:02:05 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 23 11:21:19 2021 +0000"
      },
      "message": "odrefresh: make --compile single pass\n\nEnable single pass use of odrefresh. Using --compile now checks\nartifacts (performing any necessary cleaning) and compiles them.\n\nBug: 160683548\nTest: manual\nChange-Id: I6293a2d0709e11e475bf20e1b7971e7fbf14b779\n"
    },
    {
      "commit": "3407fb2590756bd571020e175e607c8b8c988ede",
      "tree": "dd3059ff51b2a568cd41cc36ff52ada05b359647",
      "parents": [
        "c4b9ae96c20f1c86695c1774ed77cd0acac1c543"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 17 14:40:51 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 19 13:01:52 2021 +0000"
      },
      "message": "odrefresh: failure handling improvements\n\nAdd ExitCode::kCleanupFailed to report issues when removing files and\ndirectories.\n\nAdd WARN_UNUSED to important methods to ensure their return values are\nchecked.\n\nRemove LOG(FATAL) use in target code paths.\n\nRemove TEMP_FAILURE_RETRY for calls that are not interruptable\naccording to their man page documentation (fchmod, unlink).\n\nBug: 160683548\nTest: manual\nChange-Id: I9681c83d048f4dd7988e9ff7ec1caf25ed02fbec\n"
    },
    {
      "commit": "35363cf978d4d0b452cb8849041ff7dd6a6718bc",
      "tree": "7e478f10afc9cb582687d1f061f329e5a6a29be7",
      "parents": [
        "c9f4a3762b6c59714393aeca3662d96117e3b72f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 18 14:23:13 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 18 14:23:13 2021 +0000"
      },
      "message": "odrefresh: clean error message if env var missing\n\nMissing DEX2OATBOOTCLASSPATH and SYSTEMSERVERCLASSPATH environment\nvariables are non-recoverable, but fail with a clear error message.\n\nTest: TH\nChange-Id: I3c493eb75b62030c2b87f6a9a6215e9d0135caab\n"
    },
    {
      "commit": "a2e2eb187e0355314e59608dc204f68571e14069",
      "tree": "ee93a77cfbc5c756177710a9654ca5d47895b8b5",
      "parents": [
        "7c5e5c61e7c319ec88dc037f30b2ab357ec4db9a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 16 18:05:42 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 17 09:26:09 2021 +0000"
      },
      "message": "odrefresh: update flags to dex2oat\n\nUpdates following performance investigation.\n\nAdds: --no-abort-on-soft-verifier-error --force-determinism\nChanges: --image-format\u003dlz4hc to --image-format\u003dlz4\nRemoves: --generate-debug-info\n\nBug: 160683548\nBug: 181943478\nTest: adb install com.android.art.apex \u0026\u0026 adb reboot \u0026\u0026 check artifacts\nChange-Id: I79f171760c25858c629fb07004246a5bd5eb4874\n"
    },
    {
      "commit": "947a8504f0ccce5e8adff2a2c96c33b0aa93c8fc",
      "tree": "ae0042bab1333da6864594e23c6dc41fc5c224a4",
      "parents": [
        "3f64940d7c6ce4d3f06ea5dbe195c244ca7a8fbc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 08 15:40:09 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 12 17:27:34 2021 +0000"
      },
      "message": "odrefresh: check artifacts using cache and filesystem metadata\n\nRenables checking of artifacts when invoked with \"--check\".\n\nReplaces the former \"--check\" code with a lightweight method based on\nartifact cache metadata and filesystem metadata. The worst case checks\ntake 60ms on aosp_blueline-userdebug.\n\nThe old \"--check code\" is now invoked with \"--verify\". This remains\nfor testing purposes and as an option for post-compilation checking.\n\nBug: 160683548\nBug: 181689036\nTest: manual module installs, reboots, deleting artifacts.\n\nChange-Id: I2a75e0fde032a8e3a29d105d8b52e1ede6cb764d\n"
    },
    {
      "commit": "8059bdb5ab41ef0beb18eabf00fee877292d8a33",
      "tree": "ad15674ff4a9bcc1b0e49c32d20b0b664bd0fb29",
      "parents": [
        "eb7882bd913fe3224bb144b943816376753f491b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 05 12:07:14 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 05 17:44:41 2021 +0000"
      },
      "message": "odrefresh: temporarily disable check\n\nTemporary measure for boot time regression whilst an alternative\napproach is underway.\n\nBug: 160683548\nBug: 181689036\nTest: manual\nChange-Id: I0e7d9df5de056f89e489fe8f075f2e1355f8da36\n"
    },
    {
      "commit": "8f19867228345de08e8c224a3743c3f24926f834",
      "tree": "d4980670134504a92eb0a85649b9bfc09e26a089",
      "parents": [
        "e5276da1c7179e768ef25d2a65702816261cab59"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sat Feb 27 22:23:18 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 02 12:03:20 2021 +0000"
      },
      "message": "odrefresh: fixes for launching from init\n\nWhen launched from init, the umask() of odrefresh is 0077 which means\nonly the owner can read files and directories created by\nodrefresh. This prevents loading system_server compilation artifacts.\n\nThis change unsets the umask when creating installation directories\nand files. It also ensures they have the expected permissions.\n\nFix: 181397437\nTest: trigger recompilation, observe system_server odexes mapped\nChange-Id: I7086421d4a2281c563dc1fdb3ec74e31da9da978\n"
    },
    {
      "commit": "4c3ade67c470543562a0029e39b576954a807321",
      "tree": "21f56e9c9dae7868ee5d68c18457fd0ea3a271fe",
      "parents": [
        "3a8d7c2de4392ff4c40858803447efe14c3c9fa8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 10 14:07:10 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 25 08:44:32 2021 +0000"
      },
      "message": "odrefresh: regenerate artifacts after ART APEX update\n\nReplaces compile_bcp.sh to check and compile boot class path\nextensions and system server jars.\n\nEnable ART to load those artifacts when present in the ART APEX data\ndirectory.\n\nBug: 160683548\nTest: art_libartbase_tests\nTest: adb root \u0026\u0026 adb odrefresh {--force-check,--force-compile}\nTest: adb install com.android.art \u0026\u0026 adb reboot \u0026\u0026 adb root \u0026\u0026 \\\n      adb shell odrefresh {--check,--compile} \u0026\u0026 adb reboot \u0026\u0026 \\\n      adb shell cat /proc/\u003czygote\u003e/maps | grep apexdata\nChange-Id: I81bf520d38f9dc0109c91f192bc6e728099049fd\n"
    }
  ]
}
