)]}'
{
  "log": [
    {
      "commit": "84db2e40e1fc3a9d2e5091845abb51a04ee95793",
      "tree": "a87553b5c618658857ad13718e2d9db49d27a203",
      "parents": [
        "ee418ecb66f08cfe5a0375f2608bd9edd3f7c4c3",
        "c95f7819017eeeccfb78cab728c3c443546affed"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Jun 01 19:14:09 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 01 19:14:09 2020 +0000"
      },
      "message": "Merge \"Retry pullfinish with empty payload if call fails\" into rvc-dev"
    },
    {
      "commit": "413668bcf3079fa729b8d4d7f424070d55da79bc",
      "tree": "c684a284bcd6d0cf1aedf3434217a5034dd16498",
      "parents": [
        "b2cc8cb2d7a1107db8c2e41057710911a46729cf",
        "00ffb6c77e28ce24c1ca0025894586db58ab8437"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Sat May 30 09:59:13 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 30 09:59:13 2020 +0000"
      },
      "message": "Merge \"Libstatspull: decrease default pull timeout to 2s\" into rvc-dev"
    },
    {
      "commit": "00ffb6c77e28ce24c1ca0025894586db58ab8437",
      "tree": "be674680996d6f944eb1dd1fc005ef0dc30de1c8",
      "parents": [
        "9113e7be9556d002e84c08bb5ed1aa7dd1bcf618"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu May 21 19:34:09 2020 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri May 29 23:37:21 2020 +0000"
      },
      "message": "Libstatspull: decrease default pull timeout to 2s\n\nDecrease the default pull timeout to 2 seconds.\n\nTest: atest LibStatsPullTests\nTest: atest libstatspull_test\nBug: 154056912\nChange-Id: I8f7660de64e8c74a8c7ce7d252369c0456895e3b\n"
    },
    {
      "commit": "c95f7819017eeeccfb78cab728c3c443546affed",
      "tree": "f97c2faea59a3f91e7a54c17af215f720a5026e5",
      "parents": [
        "9113e7be9556d002e84c08bb5ed1aa7dd1bcf618"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri May 29 15:21:08 2020 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri May 29 15:21:08 2020 -0700"
      },
      "message": "Retry pullfinish with empty payload if call fails\n\nIf the first call for pullFinished fails, it is likely because the\ntransaction is too large. Currently, if this happens statsd will just\nsleep until the timeout. With this change, the client will retry calling\npullFinish if the first attempt fails, but with an empty payload (and\nwith success \u003d false) to cause the puller to fail fast, and so statsd\ndoes not wait for the timeout.\n\nTest: atest LibStatsPullTests\nBug: 157768117\nChange-Id: I3af991fae47bb7c09bf8a6fc83f28556b836c6e4\n"
    },
    {
      "commit": "c724fb670f3a57d123cda7ba8bbea9d38eb069db",
      "tree": "7e558571f2bd9c7f68485cf0f5b58af8285242e7",
      "parents": [
        "5daea5a6a28310a7b32b62706e52eac61122fb17"
      ],
      "author": {
        "name": "Chen Zhu",
        "email": "chenzhu@google.com",
        "time": "Wed May 20 13:06:24 2020 -0700"
      },
      "committer": {
        "name": "Chen Zhu",
        "email": "chenzhu@google.com",
        "time": "Thu May 21 14:51:59 2020 -0700"
      },
      "message": "Add test config to libstatspull_test and libstatssocket_test\n\nand apply mainline module test controller to it so that\n\nthe tests will only be run when statsd apex is found on device.\n\nBug: 154845935\nTest: m mts \u0026\u0026 mts-tradefed run mts-statsd\nChange-Id: I8939e68b4d4c3772e248c1960b74c0f1bd6a21a6\n"
    },
    {
      "commit": "18d239c5c503468c5500d5479d2818b6baa74e2f",
      "tree": "c1a98f9f38cec02930818d2893a562648c2c4a29",
      "parents": [
        "61e2b0104a77e43d1c7f127b7fa1986add0b133e"
      ],
      "author": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Fri Apr 24 10:43:08 2020 -0700"
      },
      "committer": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Fri Apr 24 10:44:25 2020 -0700"
      },
      "message": "Add require root to libstats tests\n\nroot is required for coverage tests\n\nBug: 154652564\nTest: m -j\nChange-Id: I3325565818a275a069aed35a34bf3a58ee4b5bfc\n"
    },
    {
      "commit": "2f51ad7b86839d00dcef29c62e761673e8db013a",
      "tree": "7cb656c878a901f4d88ff4683073919747e95038",
      "parents": [
        "8ee349bdbd75f8d92fbe25ebd9d7a96979da852b"
      ],
      "author": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Wed Apr 22 17:09:30 2020 -0700"
      },
      "committer": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Wed Apr 22 17:13:24 2020 -0700"
      },
      "message": "Tag libstatspull and libstatssocket tests as MTS\n\ncreate both 32 and 64 bit variants\nfixes libstatssocket_test for 32 bit devices\n\nBug: 154652564\nTest: make mts, adb push, adb shell all 4 tests\nChange-Id: Ia6b51686c06e786b38cb3713315977533f1bb819\n"
    },
    {
      "commit": "5d8f770b1ce4e689d6744d888ddff45b48ff2823",
      "tree": "3fb09a4d2370adeee74dd8ede51bfd0c675f8c6e",
      "parents": [
        "27311fd844c397a32bb19d90ea3d5bfae3052d43"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Apr 06 15:01:41 2020 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Apr 06 19:52:03 2020 -0700"
      },
      "message": "Link libc++ statically\n\nTest: bit statsd_test:*\nTest: bit libstatssocket_test:*\nTest: bit libstatspull_test:*\nBug: 153349659\nChange-Id: Ief3d0e062ed3e5cabf5b8b6198510caf3f64eefd\n"
    },
    {
      "commit": "0d7fb3d260ebd2734410a99b7978d3a57192c3c0",
      "tree": "5d1b771563d5603b54474cf36d90decb00b20ed2",
      "parents": [
        "5d4ed0240af0fba67544b7bfea5a45d87796cc15"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Mar 30 18:15:05 2020 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Mar 30 18:15:05 2020 -0700"
      },
      "message": "libstatspull documentation for puller guardrails\n\nTest: atest LibStatsPullTests\nBug: 152543610\nChange-Id: Ia5caad7c9307c02fef7d3dfe70998601e7ffeb55\n"
    },
    {
      "commit": "e3bdbfa46c88cb9052a887036dd484f839bd6c34",
      "tree": "75c235eb8b0336333420ef4749b1318d87505819",
      "parents": [
        "e6ecb06dc71cb4d9dbd0f4632413a59699ef240c"
      ],
      "author": {
        "name": "Hsin-Yi Chen",
        "email": "hsinyichen@google.com",
        "time": "Mon Mar 23 11:26:38 2020 +0800"
      },
      "committer": {
        "name": "Hsin-Yi Chen",
        "email": "hsinyichen@google.com",
        "time": "Mon Mar 23 03:45:07 2020 +0000"
      },
      "message": "Disable ABI check for libstatspull\n\nThe ABI dump for libstatspull can\u0027t be built due to the link error.\n\nTest: development/vndk/tools/header-checker/utils/create_reference_dumps.py\nBug: 151102177\nBug: 151694054\nChange-Id: Id324890235679b9593995b6e12a60ef055b4c825\n"
    },
    {
      "commit": "47e5ae49c298c618bdc307539fe437fcac0980d2",
      "tree": "3d6db359a82fab46b8039b60d0660ea6fcebda86",
      "parents": [
        "c06f147566680c308e8ccd7a734e871d558e99c1"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Mar 20 12:13:40 2020 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Mar 20 12:16:28 2020 -0700"
      },
      "message": "Minor followups from api feedback\n\nBug: 150788562\nTest: m\nChange-Id: I3473e49bc3f3682300b036ddeb032c3776d8d830\n"
    },
    {
      "commit": "c06f147566680c308e8ccd7a734e871d558e99c1",
      "tree": "5556c7ee5dd33b9091f234aaab20393430e0c9e0",
      "parents": [
        "934135d5761cb2a12d0f787add6f615da3812dbc"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Mar 13 19:14:05 2020 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Mar 20 11:10:56 2020 -0700"
      },
      "message": "Native API feedback for puller API\n\n1. Rename registerPullAtomCallback to setPullAtomCallback\n2. Rename unregisterPullAtomCallback to clearPullAtomCallback\n3. Change Ns to Millis for consistency with java\n4. Swap metadata and callback params in setPullAtomCallback to match\njava\n5. Added getters for PullAtomMetadata\n6. Added libstatspull_test to test PullAtomMetadata\n7. Changed the types on setAdditiveFields from int to int32_t\n\nTest: make\nTest: atest LibStatsPullTests\nTest: bit libstatspull_test:*\nBug: 1507885621\nBug: 151875223\nChange-Id: I5cb07bfe71b1002180403828d5e8e6a5b88ce6fe\n"
    },
    {
      "commit": "8196687d396874a088458da1e9d8757337dd6fbc",
      "tree": "76450c253fe658261131902997cfbdd13fdf7a37",
      "parents": [
        "a94047be700815f3326023936f287f5917006111"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Mar 17 11:00:17 2020 -0700"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Mar 17 11:26:00 2020 -0700"
      },
      "message": "Enforce permission in native puller API.\n\nTest: m\nTest: No security exceptions on boot\nBug: 148955001\nChange-Id: If196a82bf5a54ee15557825e16f70b5f64f45412\n"
    },
    {
      "commit": "d78f4dab02b664fb7164763cdbdd52f3fbc226a5",
      "tree": "3a3ec7881abc0b91cfb4bf8ca3c5ab87ff6759f3",
      "parents": [
        "f3dfd4d821cca5be48a9bcb269beabd8ca212468"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Wed Jan 29 15:56:52 2020 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Feb 27 11:37:33 2020 -0800"
      },
      "message": "Make libstatssocket a shared_lib\n\nMake libstatssocket unable to be linked as a static lib on the platform.\n\nTest: bit libstatssocket_test:*\nTest: bit statsd_test:*\nTest: atest LibStatsPullTests\nBug: 149340100\n\nChange-Id: I5889dd718536f5f2c693b4c2e7331c9cc2eb2ac9\n"
    },
    {
      "commit": "b0a85dc46dff7bb5c277f2e85edfe38cf5b7ae36",
      "tree": "afb873715f9e8238dbbf648c535bb01e3aae6393",
      "parents": [
        "6d3fa224afd38f1ee440dbf54f3258351aa1c34c"
      ],
      "author": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Wed Feb 12 14:22:01 2020 -0800"
      },
      "committer": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Wed Feb 12 18:30:26 2020 -0800"
      },
      "message": "Add apex_available to libs\n\nBug: 145922701\nTest: m -j\nChange-Id: If5cbe5651e47878520bdc5b943b17a4f72a2a2f3\n"
    },
    {
      "commit": "223dadb830ceec78746f4bf227a4152c740b949e",
      "tree": "1658655b861a5ddb7522edda8560f44145418b04",
      "parents": [
        "bdd5ef3f451e8330bcc6c93a53e1fcb8f3772350"
      ],
      "author": {
        "name": "Ruchir Rastogi",
        "email": "ruchirr@google.com",
        "time": "Fri Jan 24 18:21:36 2020 -0800"
      },
      "committer": {
        "name": "Ruchir Rastogi",
        "email": "ruchirr@google.com",
        "time": "Mon Feb 10 16:07:18 2020 -0800"
      },
      "message": "Migrate libstatspull to libbinder_ndk\n\nSince libstatspull will be placed within the APEX, we need to move to\nlibbinder_ndk.\n\nTest: m -j libstatspull\nTest: atest LibStatsPullTests\nBug: 145213327\nChange-Id: I86dd6e759efa5eb20bffc76492d5fa72cf279872\n"
    },
    {
      "commit": "8095e4eef13fea9e86bdc4466426d894023015cd",
      "tree": "3cf36bcefaadd4a056c236acb56b38ad0fa8607b",
      "parents": [
        "178645f1ac96bbb28eb526c70f655d91a5719102"
      ],
      "author": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Fri Feb 07 12:06:41 2020 -0800"
      },
      "committer": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Fri Feb 07 12:17:40 2020 -0800"
      },
      "message": "Update libstatspull lib\n\nstatsd_aidl was updated, so this is the matching change.\n\nTest: m -j\nBug: 148682447\nChange-Id: Iec0459cec9f649eb23c6d04b205075fff9b6e911\n"
    },
    {
      "commit": "a8fd39d83ffe19051909ead5a8a18230eb43f5bd",
      "tree": "a4530356860add99e9db5c13bf36a734f0075165",
      "parents": [
        "98027bf9c2c2077ab198ad23110ee202f1c38bc8"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Jan 14 13:46:27 2020 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Feb 04 14:07:35 2020 -0800"
      },
      "message": "Expose libstatspull as a stable C API\n\nLibstatspull will ship as a part of the statsd apex in R.\n\nAlso update libstatssocket to have version 30 to align with api level,\nas per native api council feedback.\n\nChange both libraries to use NDK style naming conventions (AStatsEvent,\nAStatsManager), and remove unneeded APIs in libstatssocket.\n\nRemove KeyValuePairs from libstatssocket. KeyValuePairs will not be\nsupported in native code.\n\nBug: 147499386\nTest: make libstatspull\nTest: make libstatssocket\nTest: atest libstatssocket_test\nChange-Id: Ie79771461215a057529aaac91db95e4334c3960e\n"
    },
    {
      "commit": "518d77d208f97e7f0834969fa53a1b49d4eb87fb",
      "tree": "b36fea35ad9357e7571fcc565df47ada1e5a3dfa",
      "parents": [
        "dab324f6e037b02086149cddcad398976e3a0777"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Jan 13 17:56:58 2020 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Wed Jan 15 21:15:26 2020 +0000"
      },
      "message": "Register pullers in separate thread\n\nThis cl modifies getStatsService to use the blocking getService, but\nalso makes the binder call in a separate thread to not block the client\nthread. This is needed because it is possible for pullers to be\nregistered before statsd starts, and calling checkService before statsd\nis up will fail. We also would never receive the binderDied to register\nit, because we would never have a binder object to linkToDeath on.\n\nBug: 147682855\nTest: atest LibStatsPullTests\nChange-Id: I68c04bc24c7fe066eca88cab4f6a76885581c1ee\n"
    },
    {
      "commit": "dab324f6e037b02086149cddcad398976e3a0777",
      "tree": "8e26bfb6ffde7a4107c5c70f70d4a0db33e95762",
      "parents": [
        "044669fa560d119350476daedae133437e112b88"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Mon Jan 13 16:03:15 2020 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Tue Jan 14 14:37:58 2020 -0800"
      },
      "message": "Unregistration of native pullers\n\nChanges the API to return an int instead of a bool.\nCreates API to unregister pullers.\n\nTest: atest LibStatsPullTests\nBug: 144373250\nChange-Id: I6d395237082337a22f37190343a1fc59703d39bf\n"
    },
    {
      "commit": "7e1b190832d8b4afd902a23ff89e2e0f4e2ebbe0",
      "tree": "869ebc6777b585ca9158f147d3eec17169b5c849",
      "parents": [
        "cde63fd301f072c8c6739000243657fea0601f57"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Jan 09 11:48:36 2020 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Jan 09 11:53:53 2020 -0800"
      },
      "message": "Remove extra indirection in native puller API\n\nThe indirection is unneeded since we already take a function pointer.\n\nTest: builds\nChange-Id: Ice426d7dcb090aaf87a377ede233a4eb18f5eb30\n"
    },
    {
      "commit": "5dc56738bf4131cd726b2b4a6337e0121bfa1253",
      "tree": "ca0b18cf1bdb9988da8ae1db88d804c9a97b46a1",
      "parents": [
        "6c63fa2e1f089fa5af49b219e60124867ae38170"
      ],
      "author": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Mon Dec 16 12:14:08 2019 -0500"
      },
      "committer": {
        "name": "Stan Iliev",
        "email": "stani@google.com",
        "time": "Mon Dec 16 12:14:08 2019 -0500"
      },
      "message": "Change register_stats_pull_atom_callback cookie parameter to non-const\n\nTest: Ran GRAPHICS_STATS puller\nBug: 146052586\nBug: 142665516\nChange-Id: I98b4cbb99e35eda50fa9dc3069b3f0ddf16f5ff9\n"
    },
    {
      "commit": "666510a0d4f7c80aaad432f3dc7ec6b0f08f4383",
      "tree": "d165bec5288d5ece0bf2964573a84251b181cee5",
      "parents": [
        "992777321c904c9826cde37ac9945f39435d9339"
      ],
      "author": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Wed Dec 11 14:46:14 2019 -0800"
      },
      "committer": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Thu Dec 12 11:32:41 2019 -0800"
      },
      "message": "Rename IStatsManager to IStatsd\n\nBug: 146075178\nTest: CTS/GTS tests\nChange-Id: I08f1b5c6f67c9e510dfaa7b50737c2720e177ad9\n"
    },
    {
      "commit": "9ecc986bb75bf81578cac7413934be1b2c02f05f",
      "tree": "1ed65cbd643210552e7277e8c159827894dd5d14",
      "parents": [
        "f76ceb3aa7bea938b8f2c6684f8666eaf262109a"
      ],
      "author": {
        "name": "Ruchir Rastogi",
        "email": "ruchirr@google.com",
        "time": "Fri Dec 06 12:42:27 2019 -0800"
      },
      "committer": {
        "name": "Ruchir Rastogi",
        "email": "ruchirr@google.com",
        "time": "Fri Dec 06 13:57:42 2019 -0800"
      },
      "message": "Use StatEventParcel in libstatspull\n\nTest: m -j128 libstatspull\nChange-Id: Ice031f38cdde8a505a887359f6c0cb3312046929\n"
    },
    {
      "commit": "c03d009697d44d58709d9dad91cc6088218214d7",
      "tree": "428782a342ef6a04e39f29bd1a2aa996df133c3d",
      "parents": [
        "b4fa891b014f6178568e2c5fa6e91b62a596c2c2"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Nov 21 12:47:37 2019 -0800"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Wed Dec 04 15:56:21 2019 -0800"
      },
      "message": "Native puller API: libstatspulled\n\nCreate a new library for the native puller callback API. The library has\n2 main interfaces: register_stats_pull_atom_callback, which is used to\nregister a callback, and stats_pull_atom_callback_t, which is the\ncallback for the puller. It also exposes pulled_stats_event_list, which\nis a struct wrapper around a vector of stats_event.\n\nTest: make libstatspull\nBug: 142969725\n\nChange-Id: I14fe4dc523d6f81fdeaa3fe6fad3e95aeecfe92e\n"
    }
  ]
}
