)]}'
{
  "log": [
    {
      "commit": "a838e3a24c5076e027caa318f7b5fe4f736cb460",
      "tree": "c4be431594d7f1d3183a0e435cc8ffe96293562d",
      "parents": [
        "0dc852ad1da91f7d97b1035101890627b2a14c46"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Apr 08 16:18:35 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Apr 08 16:18:35 2015"
      },
      "message": "Support for date filters.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/223140043\n"
    },
    {
      "commit": "0dc852ad1da91f7d97b1035101890627b2a14c46",
      "tree": "c747203d166dca260c75f904e851227785fc2c95",
      "parents": [
        "df374edb8c5173a7fb04f9a410ef1894f36e9fb1"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Apr 01 16:09:20 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Apr 01 16:09:20 2015"
      },
      "message": "Added path to BotsService.\n\nSigh. Test code looks at an API\u0027s resource_name, but real code looks at its path.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/217560043\n"
    },
    {
      "commit": "df374edb8c5173a7fb04f9a410ef1894f36e9fb1",
      "tree": "d4b1a29fa9a85699a86b7db62963d93c4a4be6b3",
      "parents": [
        "c043b409936afc92b998802b49ed89577e29c0c0"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Mar 31 21:23:41 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Mar 31 21:23:41 2015"
      },
      "message": "Removed http_method specification.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/219550043\n"
    },
    {
      "commit": "c043b409936afc92b998802b49ed89577e29c0c0",
      "tree": "6c362d9c199d49f2c6ebe1b48099da04f5ed655a",
      "parents": [
        "e552273fac460bc625caab256c26ace0a956793f"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sun Mar 29 13:13:15 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sun Mar 29 13:13:15 2015"
      },
      "message": "Major files refactoring - auth_service.\n\n- Migrate auth_server/backend/, common/ and frontend/ into the main application\n  directory and rename source files for consistency.\n- Enforce debug parameter on all create_application().\n- Remove appstats, the new Cloud Console Trace features can give meaningful data\n  without require intervention from within the app.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220250043\n"
    },
    {
      "commit": "e552273fac460bc625caab256c26ace0a956793f",
      "tree": "d8d18e96facc41ae94a65479ffce09c06ff0aee7",
      "parents": [
        "a8ef0d416b94c453ea8f3605e8cae7147ae90830"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Fri Mar 27 17:59:00 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Fri Mar 27 17:59:00 2015"
      },
      "message": "Fixed app.yaml.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/224740043\n"
    },
    {
      "commit": "a8ef0d416b94c453ea8f3605e8cae7147ae90830",
      "tree": "f8ad741b18c9d1be594c17fb56e10ab5459444a3",
      "parents": [
        "4b061a25b579c5463b963bcba580284c8dc64903"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 15:05:33 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 15:05:33 2015"
      },
      "message": "Fix typo in commit 4b061a25b579c and 2c2176043b739.\n\nIt\u0027s IsolateService, not IsolateServer.\n\nTBR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/221200043\n"
    },
    {
      "commit": "4b061a25b579c5463b963bcba580284c8dc64903",
      "tree": "24ab8b76dea438552ad202774c88456729c16053",
      "parents": [
        "014a55667ad17d81655be2054510b9d0cde6ecf9"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 15:01:08 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 15:01:08 2015"
      },
      "message": "Fix typo in isolate server.\n\nDid I say we need more integration tests?\n\nTBR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220370043\n"
    },
    {
      "commit": "014a55667ad17d81655be2054510b9d0cde6ecf9",
      "tree": "a610a99d33d3bc5f8cc3889808d112bc7cfec07f",
      "parents": [
        "2c2176043b7396a4ae494e7bc1c98491180f306d"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 14:24:00 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 14:24:00 2015"
      },
      "message": "Fix typo in app.yaml.\n\nSwarming Cloud Endpoints couldn\u0027t load at all.\n\nTBR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220360043\n"
    },
    {
      "commit": "2c2176043b7396a4ae494e7bc1c98491180f306d",
      "tree": "0e087bc289b98ccd5134ae5e8d759ac3f8cc1a10",
      "parents": [
        "d65b84542869b7dfbc7872ca3ff0d40a2b453af8"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 14:08:58 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 27 14:08:58 2015"
      },
      "message": "Major files refactoring - isolate.\n\n- Split main from handlers declaration for endpoints handlers.\n- Remove unnecessary imports.\n- Remove APP from mapreduce_jobs, it unnecessary.\n- Rename source files for consistency.\n- Enforce debug parameter on all create_application().\n- Remove appstats, the new Cloud Console Trace features can give meaningful data\n  without require intervention from within the app.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/221150043\n"
    },
    {
      "commit": "d65b84542869b7dfbc7872ca3ff0d40a2b453af8",
      "tree": "bcdceafea88b19c7ea4d9009a5a5650cc3eca8a4",
      "parents": [
        "dd0973e50e5d81e64cc3a49b92d511b6b40fd9dc"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 26 22:21:08 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 26 22:21:08 2015"
      },
      "message": "Remove unneeded import.\n\nIt was left by accident in decb219c55 but it\u0027s not needed.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220310043\n"
    },
    {
      "commit": "dd0973e50e5d81e64cc3a49b92d511b6b40fd9dc",
      "tree": "0db69fbd3ac1c04980c787df35f62ee256169aff",
      "parents": [
        "decb219c55a7566c2e3ec7135c3f2d9988ea8383"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 26 22:19:57 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 26 22:19:57 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "decb219c55a7566c2e3ec7135c3f2d9988ea8383",
      "tree": "9ca36b1f2ac2e6074e907a2db7d78638f1b64ba6",
      "parents": [
        "8d56c974d3e9f7f9838253424b40f21114d55321"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 26 13:39:35 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 26 13:39:35 2015"
      },
      "message": "Major files refactoring - swarming.\n\n- Split main from handlers declaration for endpoints handlers.\n- Remove unnecessary imports.\n- Remove APP from mapreduce_jobs, it unnecessary.\n- Stop the forced logservice flushing, it\u0027s stable now.\n- Remove appstats, the new Clout Console Trace features can give meaningful data\n  without require intervention from within the app.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/216350043\n"
    },
    {
      "commit": "8d56c974d3e9f7f9838253424b40f21114d55321",
      "tree": "4d0fc52d16213bb25a61a7e6ed0ea289e95f8642",
      "parents": [
        "b2c4b21331f1b3a650d55bcea5c8ccb22c439d78"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 21:35:04 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 21:35:04 2015"
      },
      "message": "Reduce sys.path manipulation.\n\nCode still works.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/218160045\n"
    },
    {
      "commit": "b2c4b21331f1b3a650d55bcea5c8ccb22c439d78",
      "tree": "9b77bbbc796cec6a1426ff9bfb078b6a070b254e",
      "parents": [
        "244a9d760df0a79ee59508dd94f3afbbf886d25b"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Mar 25 21:12:25 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Mar 25 21:12:25 2015"
      },
      "message": "Fixed model.entry_key problem.\n\nR\u003dvadimsh@chromium.org, maruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/221790043\n"
    },
    {
      "commit": "244a9d760df0a79ee59508dd94f3afbbf886d25b",
      "tree": "00794beeed9a10a826e0343957d58226a6ddd48c",
      "parents": [
        "ddef67a942ba0af3067ad1c778a4b03683113db6"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Mar 25 21:11:44 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Mar 25 21:11:44 2015"
      },
      "message": "Added stats to Endpoints API.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/215660043\n"
    },
    {
      "commit": "ddef67a942ba0af3067ad1c778a4b03683113db6",
      "tree": "4a3fe4ab4493ea0f932a3747da22ac93483f2698",
      "parents": [
        "487c890cb41a6752b162cc2a62957406f034a321"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 12:56:50 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 12:56:50 2015"
      },
      "message": "Migrate non-components third parties into /appengine/third_party/.\n\nThe ones used by components are addressed differently.\n\n- Minor reduction in sys.path hacking.\n- Improve run_coverage filters to skip more external packages.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/216310043\n"
    },
    {
      "commit": "487c890cb41a6752b162cc2a62957406f034a321",
      "tree": "540f9b43310e2ad381e62e17fdff4adc16d64a83",
      "parents": [
        "3e2046aec942d7c460aebbf36ab9ba9be198a96e"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 01:10:19 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 01:10:19 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "3e2046aec942d7c460aebbf36ab9ba9be198a96e",
      "tree": "61ba6696550ef2d063a93c15f3ce462cfc2c5f33",
      "parents": [
        "de6967a75aa3b0079454408c7d03e273909481bd"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 01:03:32 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 25 01:03:32 2015"
      },
      "message": "Migrate testing related third parties to /appengine/third_party_local/.\n\nThese third parties are not used nor uploaded to the AppEngine instances. They\nwere under /appengine/components/ but I think it\u0027s worth raising at higher\nlevel. More importantly, the name is intentionally \u0027third_party_local\u0027 to make\nit clear that these packages are never to be uploaded to AppEngine. This gets\nrid of the confusion between components/third_party and\ncomponents/components/third_party.\n\nRemoved a few sys.path manipulation along the way and renamed appengine/README\nto README.md.\n\nImported libraries will be migrated in a follow up.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/217190043\n"
    },
    {
      "commit": "de6967a75aa3b0079454408c7d03e273909481bd",
      "tree": "3b8081b93e7d7aa9737e3928827370ce5d3f2dd9",
      "parents": [
        "3ef1b180c9f3f2fbb171265648632b3cce4986d3"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 24 21:08:37 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 24 23:07:57 2015"
      },
      "message": "Stop using test_env.py symlinks.\n\nWhen PYTHONDONTWRITEBYTECODE\u003dx is not defined, test_env.pyc is created aside a\ntest_env.py symlink. The problem is that the real test_env.py uses\nos.path.realpath() to find its real path. On the second run, after a\ntest_env.pyc was created aside the test_env.py symlink, this one is loaded and\nnot the real source file. This means that the source file path is different,\ncausing generalized failure.\n\n(CL was reviewed manually, Rietveld couldn\u0027t handle replacing a symlink with a\nfile)\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n"
    },
    {
      "commit": "3ef1b180c9f3f2fbb171265648632b3cce4986d3",
      "tree": "a3a7636c29f5f0305c484072f987f4ff9431495f",
      "parents": [
        "f4a18792f6d7578bd12483952fbce53467021a3a"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 20:40:01 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 20:40:01 2015"
      },
      "message": "Move endpoints_smoke_test.py out of components/*.\n\nIt creates a symbolic link cycle that confuses appcfg.py.\n\nR\u003dmaruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/214550045\n"
    },
    {
      "commit": "f4a18792f6d7578bd12483952fbce53467021a3a",
      "tree": "108b1406780533471c5d697ee926162fe9de4398",
      "parents": [
        "c202de3642fce130d1184047adcd83703308c5bf"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 01:34:03 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 01:34:03 2015"
      },
      "message": "Add pyasn1 and rsa to swarming bot archive, since utils/net.py depends on it.\n\nR\u003dmaruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220850044\n"
    },
    {
      "commit": "c202de3642fce130d1184047adcd83703308c5bf",
      "tree": "0947b37babd95e6f9cf84820ede7ca2ad1c5a957",
      "parents": [
        "e9ffaa44679d03b1b24718041ab59d2f30d65da9"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 01:32:14 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 01:32:14 2015"
      },
      "message": "Fix os_utilities_test.py on retina Mac.\n\nR\u003dmaruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/212660043\n"
    },
    {
      "commit": "e9ffaa44679d03b1b24718041ab59d2f30d65da9",
      "tree": "91bf8233872d51a17af48f6e3712f9e4c89d7eaa",
      "parents": [
        "9da4c4b4efb1700353dd30ccf55337a387dcf73c"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 00:35:51 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Tue Mar 24 00:35:51 2015"
      },
      "message": "Roll client/.\n"
    },
    {
      "commit": "9da4c4b4efb1700353dd30ccf55337a387dcf73c",
      "tree": "4451c10bc9952f832514402f558d85af3c86e5e0",
      "parents": [
        "5c2d53aece45b442c8f7daf4faf4cf208461daa7"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Mar 24 00:08:24 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Mar 24 00:08:24 2015"
      },
      "message": "This CL contains Swarming\u0027s Cloud Endpoints API.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/194690043\n"
    },
    {
      "commit": "5c2d53aece45b442c8f7daf4faf4cf208461daa7",
      "tree": "a54bbcb50dd3c883d7c855f47df5ef55e4c848d6",
      "parents": [
        "09634ade0e5f13e3fd9ea332f99791c18471e065"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sat Mar 21 14:50:27 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sat Mar 21 14:50:27 2015"
      },
      "message": "Move components tests into their respective directories.\n\nThis is the final CL moving testing code. This gets rid of\n/appengine/components/tests.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/213430043\n"
    },
    {
      "commit": "09634ade0e5f13e3fd9ea332f99791c18471e065",
      "tree": "7b0f3804769f9cab460c3f7c58c7814cdd004a1c",
      "parents": [
        "659c16288883ce60d2bc4bfa20dac8c657743948"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sat Mar 21 01:34:08 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sat Mar 21 01:34:08 2015"
      },
      "message": "Migrate auth_service/tests/ to be aside the source code.\n\nRename replica_app to test_replica_app to ensure it\u0027s not uploaded to AppEngine\nand make it clear, since it\u0027s not in a tests/ directory anymore.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220030043\n"
    },
    {
      "commit": "659c16288883ce60d2bc4bfa20dac8c657743948",
      "tree": "e59f3cde72aab6cfd3f5bb952c98473a7e2d92cf",
      "parents": [
        "7b3414f1f0ad265536a43e45033661074cd6a99f"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 21:11:46 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 21:11:46 2015"
      },
      "message": "Migrate tests in isolate/tests/ to aside their source file and use test_env.\n\nThis has the side effect of using \u0027sample-app\u0027 instead of what defined in\napp.yaml.\n\nMake PRESUBMIT.py ready to add more subdirectories.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/218060043\n"
    },
    {
      "commit": "7b3414f1f0ad265536a43e45033661074cd6a99f",
      "tree": "6fc4ef2095f97fb410a711d58ea273621e09af6d",
      "parents": [
        "acdf1880f4be6f23e2ce1382cd731241bfe32568"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 21:11:08 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 21:11:08 2015"
      },
      "message": "Migrate swarming/test_env.py to use test_support/test_env.py\n\nReduce the amount of sys.path manipulation significantly.\n\nAdded symlinks to compensate where necessary.\n\nSide effect includes the version changed from \u0027default-version\u0027 to \u0027v1a\u0027 in unit\ntests.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/215440043\n"
    },
    {
      "commit": "acdf1880f4be6f23e2ce1382cd731241bfe32568",
      "tree": "7ae5e658dc71df58faae13db97355c70d26ad4a3",
      "parents": [
        "7200814de8af24ec9bc7761a01b314bd9144a07e"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 19:17:24 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 19:17:24 2015"
      },
      "message": "Add test coverage for task_runner hang when grand children + hard_timeout.\n\nThis happens frequently, the fix is in subprocess42.\n\nRoll client/\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/219140044\n"
    },
    {
      "commit": "7200814de8af24ec9bc7761a01b314bd9144a07e",
      "tree": "dfe4e53f5fbaf413464e860041ac68dcbb96cc31",
      "parents": [
        "66824e937a9773c6ac69a90a14287b17c4576b7a"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 18:57:55 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 18:57:55 2015"
      },
      "message": "Migrate tests/test_env.py to test_support/test_env.py\n\nDo not do the applications yet, it\u0027ll be done in a follow up as it requires\nupdating unit tests.\n\nAdd function in gae_sdk_utils.py to setup GAE environment. Mostly useful for\nsmoke test, which do not need the test classes.\n\nThe actual tests in components/tests/ will be moved afterward. It\u0027ll be simpler\nat that point, since there won\u0027t be any content modification, making the review\neasier.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/219100043\n"
    },
    {
      "commit": "66824e937a9773c6ac69a90a14287b17c4576b7a",
      "tree": "28660ad7bdd28ecfcdddad195559fcca1bcb4a31",
      "parents": [
        "2afd6df42d533914421802bdc9cc591a06e23781"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 18:56:40 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 18:56:40 2015"
      },
      "message": "Bikeshed the import statements.\n\nNo functional change, this will follow up in the next CL which migrate\ntest_env.py.\n\nThe goal here is to settle on one style, not much about which style. The style\nis now:\n\n\"\"\"\n\u003cimport block of stdlib\u003e\n\n\u003cimport block of import sys.path hack, e.g. test_env. Needed for now\u003e\n\n\u003cimport block of appengine lib\u003e\n\n\u003cimport block of appengine third_party lib, e.g. webapp2, or in third_party/\u003e\n\n\u003cimport block of components and other application external libs\u003e\n\n\u003cimport block of application libs\u003e\n\"\"\"\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/217110043\n"
    },
    {
      "commit": "2afd6df42d533914421802bdc9cc591a06e23781",
      "tree": "d24429a94900fa8cc8ec96dd9b9da256bfbb1ba2",
      "parents": [
        "d637d12870eeaafbf9dd5a5f2eb238c27a6b62ef"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 12:32:50 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 12:32:50 2015"
      },
      "message": "Move remaining files in support/ to test_support/.\n\nIntentionally fix as little code as possible, basically a\n  sed s#from support#from test_support#\nto not enlarge this CL too much. A follow up will humanly update tests.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/219080043\n"
    },
    {
      "commit": "d637d12870eeaafbf9dd5a5f2eb238c27a6b62ef",
      "tree": "7efcca12ed51e94321afea7ddfd0a2f374262ec4",
      "parents": [
        "66b4d5bd402bc997cccafa2648bf6c5eb0c49fac"
      ],
      "author": {
        "name": "Nodir Turakulov",
        "email": "nodir@chromium.org",
        "time": "Thu Mar 19 23:16:44 2015"
      },
      "committer": {
        "name": "Nodir Turakulov",
        "email": "nodir@chromium.org",
        "time": "Fri Mar 20 03:12:25 2015"
      },
      "message": "Added mock 1.0.1\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\n"
    },
    {
      "commit": "66b4d5bd402bc997cccafa2648bf6c5eb0c49fac",
      "tree": "437311c1db625a6cab5d323f8541397d38efdb36",
      "parents": [
        "545d2d21b7941d432473e9a612e627df483330ac"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Fri Mar 20 01:52:34 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Fri Mar 20 01:52:34 2015"
      },
      "message": "Support OAuth2 authentication in dev server locally.\n\nUseful when developing authentication related stuff. It is the same method that\nEndpoints are using: a call to https://www.googleapis.com/oauth2/v1/tokeninfo.\n\nR\u003dmaruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/217090043\n"
    },
    {
      "commit": "545d2d21b7941d432473e9a612e627df483330ac",
      "tree": "3cf398dea9fb7492dac8bc5a03e2a1a7a0ef8add",
      "parents": [
        "aca6760a29bbfe7628c96d18551236eacab335f3"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 01:42:16 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 20 01:42:16 2015"
      },
      "message": "Move gae_sdk_utils and local_app to tool_support/.\n\nNote that we consider \u0027smoke tests\u0027 to not require the testing framework, since\nthey do not need to import the SDK itself.\n\nLots of other changes are planned but intentionally do not do more changes to\nkeep this CL reviewable.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/219060043\n"
    },
    {
      "commit": "aca6760a29bbfe7628c96d18551236eacab335f3",
      "tree": "74bd7a50b3a6747a7fb2379b22eb86a569f463e7",
      "parents": [
        "12ec3a9593128d94ab58b2e528a3fa3c37e5c1d7"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 19 19:13:40 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 19 19:13:40 2015"
      },
      "message": "Add test_support and tool_support, and update skip_files in yaml.\n\nBoth new directories are currently empty, except for an __init__.py and\nREADME.md explaining the purpose of each directory. Moving the files requires a\nlot of changes throughout the code base, which makes a CL unreviewable. Do this\npiecemeal.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/212560043\n"
    },
    {
      "commit": "12ec3a9593128d94ab58b2e528a3fa3c37e5c1d7",
      "tree": "3f82f13e9db7d71952ffc179c98beeecd8a8e2c4",
      "parents": [
        "6c442232be75e1c3275c90318c7479fa67066c3e"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Mar 17 22:32:53 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Mar 17 22:32:53 2015"
      },
      "message": "Exception name correction.\n\nR\u003dmaruel@google.com, maruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/217930043\n"
    },
    {
      "commit": "6c442232be75e1c3275c90318c7479fa67066c3e",
      "tree": "c343b1469103304d153d03ee8b620cea60731af8",
      "parents": [
        "4567bb47cd0ab1fb39ea24cfb52bef7295733b98"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 21:09:48 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 21:09:48 2015"
      },
      "message": "Remove last uses of auto_now\u003dTrue.\n\nUsing auto_now\u003dTrue makes it impossible to run mapreduces to update schema\nwithout breaking the entities content. Not using it requires being more careful\nto update the timestamp at *each* locations where the entity is updated.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/219900043\n"
    },
    {
      "commit": "4567bb47cd0ab1fb39ea24cfb52bef7295733b98",
      "tree": "3cf1adcfd16ae80965475e2aee15301159559dfe",
      "parents": [
        "214267ebf414536461d9ddd937d599f9bc608856"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 20:55:04 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 20:55:04 2015"
      },
      "message": "Standardize skip_files in all appengine services.\n\nThis will forcibly skip unit tests files in shared components. This is\nespecially important if we decide to move appengine/components/tests/ into their\nrespective components/components/ subdirectory, which should be done for sanity.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220780043\n"
    },
    {
      "commit": "214267ebf414536461d9ddd937d599f9bc608856",
      "tree": "7fdd1d15e6c35e1397440d0a916a1f673c547beb",
      "parents": [
        "a50bc1b89e5bfc9cf089c0f88514af4146891c5e"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 20:54:39 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 20:54:39 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "a50bc1b89e5bfc9cf089c0f88514af4146891c5e",
      "tree": "ba1f8500490dac12725d8324372502821d19fbfb",
      "parents": [
        "7786e712eadda900629c299402143e82078d7fab"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 18:56:03 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 18:56:03 2015"
      },
      "message": "Do not HTTP 500 when searching complex task name.\n\nThe search API is limited with single words and will fail on anything complex.\nConvert it to HTTP 400 for now.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/218980043\n"
    },
    {
      "commit": "7786e712eadda900629c299402143e82078d7fab",
      "tree": "f784eced44d925cd478fed87712a28dc52a52165",
      "parents": [
        "422a0b1ee1d747c4af6264798bdcd54973b18c80"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 12:12:01 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 12:12:01 2015"
      },
      "message": "Cleanups and switch to use TaskRequest.key default order.\n\n- Switch from using TaskResultSummary.created_ts to using\n  TaskResultSummary.__key__. The main advantages are the this greatly reduce the\n  number of required composite indexes, improving performance in the hotest code\n  path and it permits using ndb.OR() for the query \u0027pending_running\u0027.\n- Trim indexes from .created_ts. This still need an explicit vacuum_indexes on\n  the instances.\n- Rename key_string to key_packed. key_string was confusing.\n- Shorten self.response.out.write() to self.response.write().\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/215330043\n"
    },
    {
      "commit": "422a0b1ee1d747c4af6264798bdcd54973b18c80",
      "tree": "c0be931c97f2ebb401cde9ea53b4e01be6a79a26",
      "parents": [
        "a97a584ba8c589979f57c3bd36424aca4004fd2d"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 12:11:10 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 17 12:11:10 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "a97a584ba8c589979f57c3bd36424aca4004fd2d",
      "tree": "29678e4c1c8f7884ec8e7ee37a4b2a6be7a685e2",
      "parents": [
        "c70f311f3db8f25752c793a0d7b36cf537d95580"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 16 22:59:35 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 16 22:59:35 2015"
      },
      "message": "Do not die with HTTP 500 when authenticating user with a weird email address.\n\nReturn HTTP 401 instead with error message explaining what\u0027s wrong.\n\nR\u003dmaruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/215340043\n"
    },
    {
      "commit": "c70f311f3db8f25752c793a0d7b36cf537d95580",
      "tree": "01655268109d21124ef362764300e294a8a9d2f3",
      "parents": [
        "e834901043366265d721dffb8dabbe8913463bee"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sat Mar 14 01:10:39 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Sat Mar 14 01:10:39 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "e834901043366265d721dffb8dabbe8913463bee",
      "tree": "8e72c90d79fad46b34f4d5fb29a131fa28770c43",
      "parents": [
        "efb06f2449d2e2f5de7884be41b11c52b96b654c"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 13 21:23:42 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 13 21:23:42 2015"
      },
      "message": "Leverage callable parameters in yield_any().\n\nyield_any() didn\u0027t work, since it was freezing the parameters at start.\n\nInclude client/ roll to update subprocess42.py API to support callable.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/213200044\n"
    },
    {
      "commit": "efb06f2449d2e2f5de7884be41b11c52b96b654c",
      "tree": "4789a0681adcf730bfbc0985b8535634c09c95f0",
      "parents": [
        "9684ed8eca4b59a0e185618149722531e6455a76"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 13 21:19:04 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Mar 13 21:19:04 2015"
      },
      "message": "Enable hard failure when task_runner hangs in bot_main.\n\nThat\u0027s a very very big hammer but will at least recover the bots that hangs on\nreal hardware on Windows. Further investigation will continue to find the root\nsource but this safe guard is still useful long haul.\n\nAdd logging to help with investigation.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/220720043\n"
    },
    {
      "commit": "9684ed8eca4b59a0e185618149722531e6455a76",
      "tree": "340510936de56dd4602ba263edb26126fffe2a28",
      "parents": [
        "a4220aa478be78d1748a364bf9f0d18849b7d510"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 12 18:15:45 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 12 18:15:45 2015"
      },
      "message": "Add logging after post_update() return.\n\nStill trying to figure out where the hang happens.\n\nTBR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/218800043\n"
    },
    {
      "commit": "a4220aa478be78d1748a364bf9f0d18849b7d510",
      "tree": "16b7f0facadea403f471b41d6f037a628c3d5f50",
      "parents": [
        "f47a72ccc08ffa128f9d6f7c53b09dc05c311fdd"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 12 17:02:00 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Mar 12 17:02:00 2015"
      },
      "message": "Add more logs.\n\nI\u0027m trying to figure out why task_runner hangs as I don\u0027t have enough signal.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/210700043\n"
    },
    {
      "commit": "f47a72ccc08ffa128f9d6f7c53b09dc05c311fdd",
      "tree": "01a2b3fbb1a00d4367cd7d40699c7bebadd2f607",
      "parents": [
        "e7ea4e55222d0b8ba4e4a5a20fcf8de21673794c"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 11 20:26:08 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 11 20:26:08 2015"
      },
      "message": "Remove bots from global stats page and remove dead code.\n\nThe bot list its just noise.\nAlso remove users calculation since it wasn\u0027t used.\n\nR\u003dvadimsh@chromium.org\nBUG\u003dswarming:132\n\nReview URL: https://codereview.appspot.com/212370043\n"
    },
    {
      "commit": "e7ea4e55222d0b8ba4e4a5a20fcf8de21673794c",
      "tree": "4779a475a64c16514791b6431190028651b1e234",
      "parents": [
        "870ae184b468edcd1be56a82acafb9c90e29885d"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 11 18:09:35 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 11 18:09:35 2015"
      },
      "message": "Fix exception when the Swarming server is rapidly updated.\n\nRapid server upgrade causes a race condition where the swarming_bot version\nrequested to update to by the server may not exists at the time of downloading\nthe actual code. Simply poll again, which will then forward to the new version\nthat is valid.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/217730043\n"
    },
    {
      "commit": "870ae184b468edcd1be56a82acafb9c90e29885d",
      "tree": "9ed3f485848bc49409d90b84740880adc60c8071",
      "parents": [
        "7b34a1f442e2c5569b494e5e4fc12d09e20051ac"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 11 17:51:50 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Mar 11 17:51:50 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "7b34a1f442e2c5569b494e5e4fc12d09e20051ac",
      "tree": "6535948c27b17ba1efab93aca66dd54b6122d3c1",
      "parents": [
        "735953192e70661623367276e0e05362f34f2a6d"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 10 21:28:04 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Mar 10 21:28:04 2015"
      },
      "message": "Remove command_index support from the bot API.\n\nOnly one \u0027commmands\u0027 has been supported for a while, start to remove the actual\nimplementation. This converts \u0027commands\u0027 to \u0027command\u0027 at the bot API level\n\nThis doesn\u0027t change any of the schema, since this will be more involved.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/210620043\n"
    },
    {
      "commit": "735953192e70661623367276e0e05362f34f2a6d",
      "tree": "8d0aef498c10d1ac157fe023530f7c58e2e2abb4",
      "parents": [
        "e6aca4fd8e788b1fff7780af6c24d95a0a94b10c"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 20:51:52 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 20:51:52 2015"
      },
      "message": "Add anchors to \u003ca\u003e elements in group chooser.\n\nIt makes \"Copy Link Address\" on group item in the group chooser to actually\ngrab a link to the group.\n\nR\u003dnodir@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/209630043\n"
    },
    {
      "commit": "e6aca4fd8e788b1fff7780af6c24d95a0a94b10c",
      "tree": "acce7240f12dc377a14eef03917e4e99acf7d737",
      "parents": [
        "2cedcba706b403037b6a8138c286e70af200fc34"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Mar 09 20:31:29 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Mar 09 20:31:29 2015"
      },
      "message": "Make sure it\u0027s not doing a negative wait.\n\nCaught via monitoring.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/214070043\n"
    },
    {
      "commit": "2cedcba706b403037b6a8138c286e70af200fc34",
      "tree": "e3476d5e3f998268678d56c4b7293d7b045c7080",
      "parents": [
        "28e3d98a104d393d063e4a9560ffe9544df22896"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Mar 09 19:39:22 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Mar 09 19:39:22 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "28e3d98a104d393d063e4a9560ffe9544df22896",
      "tree": "baaac904127c05a12fc7776a007325856f7734a8",
      "parents": [
        "8b526fe312f44a2e49ab5914af819bf10041cb22"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 19:18:35 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 19:18:35 2015"
      },
      "message": "Free up some space by moving non essential group info to a separate page.\n\nIt also sets up basic UI structure for \"Group change log\" feature.\n\nR\u003dnodir@chromium.org\nBUG\u003dswarming:216\n\nReview URL: https://codereview.appspot.com/214970043\n"
    },
    {
      "commit": "8b526fe312f44a2e49ab5914af819bf10041cb22",
      "tree": "91a1f9d1a198a9e1fe50bac9b1b39194c8988cf0",
      "parents": [
        "26933e40e6d3739cdd52bbad4a795ae1c73a9162"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 19:01:09 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 19:01:09 2015"
      },
      "message": "Improve search on Groups page by searching for substring, not just prefix.\n\nR\u003dnodir@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/206650043\n"
    },
    {
      "commit": "26933e40e6d3739cdd52bbad4a795ae1c73a9162",
      "tree": "821e5df5e4ceb887d72b60ae30185516039c4e13",
      "parents": [
        "6d5d719f6f7b27b46236548e5bb0c3ab5e21f943"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 18:49:50 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Mon Mar 09 18:49:50 2015"
      },
      "message": "Use anchors for in-page navigation in Groups page.\n\nR\u003dnodir@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/211400043\n"
    },
    {
      "commit": "6d5d719f6f7b27b46236548e5bb0c3ab5e21f943",
      "tree": "d1fd4fa62d728ce0d4d2ca297ac57ede242e2972",
      "parents": [
        "9cba115b8191fba9ee3d7e76bbaa088eba647773"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Sun Mar 08 04:38:35 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Sun Mar 08 04:38:35 2015"
      },
      "message": "Refactor importer to always import \u0027plainlist\u0027 groups into external/* namespace.\n\nNow config for single plain imported group is:\n{\n  \"url\": \"...\",\n  \"format\": \"plainlist\",\n  \"group\": \"\u003cgroup-name\u003e\"\n}\n\nAnd it will become available as \"external/\u003cgroup-name\u003e\".\n\nR\u003dsergiyb@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/211330043\n"
    },
    {
      "commit": "9cba115b8191fba9ee3d7e76bbaa088eba647773",
      "tree": "aa73f7e24a07409de04ad9dc6b1f7b14683a4856",
      "parents": [
        "9d349be61b36baef047a0e5c82e4554427ddf565"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Thu Mar 05 00:31:12 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Thu Mar 05 00:31:12 2015"
      },
      "message": "Expose new AuthService Endpoints API in auth_service app.\n\nR\u003dcmassaro@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/210780045\n"
    },
    {
      "commit": "9d349be61b36baef047a0e5c82e4554427ddf565",
      "tree": "2f8e57e036405ba90e26770e460089d3bf0794bc",
      "parents": [
        "d33eeb9fd6d6d28b859972587add374e265230d7"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Mar 04 23:36:39 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Mar 04 23:36:39 2015"
      },
      "message": "Endpoints version of is_member API method.\n\nR\u003dvadimsh@chromium.org, maruel@chromium.org, nodir@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/206320043\n"
    },
    {
      "commit": "d33eeb9fd6d6d28b859972587add374e265230d7",
      "tree": "f9b20524b5e821087def742f9f4c310dbc10c9a6",
      "parents": [
        "12ccfc30cb4839309afb6c98188f958ab5b79fc3"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 26 15:26:42 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 26 15:26:42 2015"
      },
      "message": "Trap IOError when sending metrics.\n\nIt was seen live.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/202290043\n"
    },
    {
      "commit": "12ccfc30cb4839309afb6c98188f958ab5b79fc3",
      "tree": "5c1a0d9f982150f2fad18be33d879c81018c2562",
      "parents": [
        "eb11fc6a0279e8190caf07a5336a4f9bf67192ac"
      ],
      "author": {
        "name": "Sergiy Byelozyorov",
        "email": "sergiyb@google.com",
        "time": "Thu Feb 26 06:41:28 2015"
      },
      "committer": {
        "name": "Sergiy Byelozyorov",
        "email": "sergiyb@google.com",
        "time": "Thu Feb 26 06:41:28 2015"
      },
      "message": "Added plain-list format to chrome-infra-auth to support chromium-committers app\n\nR\u003dvadimsh@chromium.org\n\nReview URL: https://codereview.appspot.com/203350043\n"
    },
    {
      "commit": "eb11fc6a0279e8190caf07a5336a4f9bf67192ac",
      "tree": "b42bc58d37d821e0489767ac2f16d64733198e6a",
      "parents": [
        "4e8ac6b055fcce2e46576a2a73deb23dbc3e25ec"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 25 23:15:40 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 25 23:15:40 2015"
      },
      "message": "Fix roll_log() to not crash.\n\nCrashes we\u0027re trapped but it was not useful since it was immediately crashing.\nFix this.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/208820043\n"
    },
    {
      "commit": "4e8ac6b055fcce2e46576a2a73deb23dbc3e25ec",
      "tree": "26713b34cd52b6e4413e9a5c877eb98229cb482c",
      "parents": [
        "39c0710675bf90eef76e1deec32b549e0d9b496c"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 25 20:23:20 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 25 20:23:20 2015"
      },
      "message": "Add HSTS and CSP headers to all services and static files.\n\n- The services are not accessible over HTTP anyway.\n- Refuse loading anything not over HTTPS and outside of the same-origin through\n  CSP.\n- Add .woff to supported static files.\n\nUpdate both *.yaml for static content and AuthenticatingHandler to set these\nheaders.\n\nReferences:\n  http://www.html5rocks.com/en/tutorials/security/content-security-policy/\n  https://www.owasp.org/index.php/Content_Security_Policy\n  https://www.owasp.org/index.php/HTTP_Strict_Transport_Security\n  https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet\n\nR\u003dvadimsh@chromium.org\nBUG\u003dswarming:96\n\nReview URL: https://codereview.appspot.com/206940043\n"
    },
    {
      "commit": "39c0710675bf90eef76e1deec32b549e0d9b496c",
      "tree": "5c50001c886c601191cf1ea146f41ee148088439",
      "parents": [
        "f060f1a8a4d6039e758f6148413907f402400072"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Wed Feb 25 20:13:23 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Wed Feb 25 20:13:23 2015"
      },
      "message": "Remove reference to underscore-min.map.\n\nIt is not part of the source tree. Should fix 404 error visible in DevTools.\n\nR\u003dmaruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/206030043\n"
    },
    {
      "commit": "f060f1a8a4d6039e758f6148413907f402400072",
      "tree": "2523c7f96263785e7d0a69a6b029527f5ad904c8",
      "parents": [
        "f9f4032d6919df928d69ef9a13d7e5640987144a"
      ],
      "author": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Wed Feb 25 19:20:03 2015"
      },
      "committer": {
        "name": "Vadim Shtayura",
        "email": "vadimsh@chromium.org",
        "time": "Wed Feb 25 19:20:03 2015"
      },
      "message": "Fix UnicodeDecodeError when reporting a error.\n\nR\u003dmaruel@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/203370043\n"
    },
    {
      "commit": "f9f4032d6919df928d69ef9a13d7e5640987144a",
      "tree": "bee1866ea97d843454b441b5e85e7b185d80cb6f",
      "parents": [
        "99be8e59a13aab11e0b223a360db0dc28f5d8e65"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 21:08:17 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 21:08:17 2015"
      },
      "message": "Implement LKGBC.\n\nIt\u0027s needed as bots tend to keep very old swarming_bot.zip, which causes errors.\n\nR\u003dvadimsh@chromium.org\nBUG\u003dswarming:112\n\nReview URL: https://codereview.appspot.com/206910043\n"
    },
    {
      "commit": "99be8e59a13aab11e0b223a360db0dc28f5d8e65",
      "tree": "2814364829d7cc7c13366b36fb4060352e111c99",
      "parents": [
        "b552b4615d29c77f1fa47127df19297d7f81a65a"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 21:07:05 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 21:07:05 2015"
      },
      "message": "Multiple changes towards resilience.\n\n- Stop accumulating processes on Windows.\n- Add bot_config.on_bot_shutdown().\n- Add os_utilities.roll_log() and trim_rolled_log() to be used in\n  on_bot_shutdown().\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/205980043\n"
    },
    {
      "commit": "b552b4615d29c77f1fa47127df19297d7f81a65a",
      "tree": "35324aec3535fe62d71b8e27218070c06f259cdf",
      "parents": [
        "964e018cca480fc3a148ff2923e50bf35174ad12"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 19:23:57 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 19:23:57 2015"
      },
      "message": "Fix \u003cpre\u003e wrapping for sample commands.\n\nOtherwise the graphs get in the way, which defeats the purpose.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/198700043\n"
    },
    {
      "commit": "964e018cca480fc3a148ff2923e50bf35174ad12",
      "tree": "02bb0bc7f5e2580b4bac7a09a643a1070c230940",
      "parents": [
        "7e4c90751c3699b4667d37b38acec379354c64c7"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 15:40:49 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 15:40:49 2015"
      },
      "message": "Fix typo in get_dimensions() get_state() in case of exception.\n\nThe error handler would cause itself an exception, bad.\n\nTBR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/202230043\n"
    },
    {
      "commit": "7e4c90751c3699b4667d37b38acec379354c64c7",
      "tree": "2f918d01340a4019397e457e6c191c026de64480",
      "parents": [
        "d9886f3e293854a27fb8dc816fafe0e96ea5378a"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 00:32:43 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 24 00:32:43 2015"
      },
      "message": "Fix multiple bugs in 42b735086.\n\nThis commit was untested, so obviously it didn\u0027t work.\n\n- Skip auth, it got in the way.\n- Fix the url regexp.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/205960043\n"
    },
    {
      "commit": "d9886f3e293854a27fb8dc816fafe0e96ea5378a",
      "tree": "aff5b0de24754c483c240bec62e89cf8dc172f65",
      "parents": [
        "42b735086e357696d34f695d9759afc8a7e61c96"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 23 21:15:00 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 23 21:15:00 2015"
      },
      "message": "Add Cloud Monitoring custom metrics; Add on_bot_startup(); Add stack traces.\n\n- Add the code in os_utilities.py to simplify setting cloud monitoring custom\n  metrics. It will be used for the autoscabler.\n    Ref: https://cloud.google.com/compute/docs/autoscaler/\n- Add on_bot_startup() hook in bot_config.py since it\u0027s needed to set metrics at\n  that moment.\n- Improve error reports, as I needed this while debugging and it\u0027s generally\n  useful.\n\nR\u003dvadimsh@chromium.org\nBUG\u003dswarming:189\n\nReview URL: https://codereview.appspot.com/203240043\n"
    },
    {
      "commit": "42b735086e357696d34f695d9759afc8a7e61c96",
      "tree": "1d45129d32229483dcf2b7c2edbb64ee8d999945",
      "parents": [
        "2f0fe405e9d51d65d1e67193fecd0e8816090394"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 23 20:10:48 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 23 20:10:48 2015"
      },
      "message": "Blackhole emails sent to the instances.\n\nIt\u0027s generally ereporter2 reports. This solves the inconvenience that doing a\nreply-all would cause a mail bounce from the instance.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/200690043\n"
    },
    {
      "commit": "2f0fe405e9d51d65d1e67193fecd0e8816090394",
      "tree": "8fa6be0ede875cd16d6f3e06f4763a1b7f5376e8",
      "parents": [
        "589033b560933b9befd694c08835cd904fd62795"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Feb 18 21:44:23 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Feb 18 21:44:23 2015"
      },
      "message": "Added server_details.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/197700043\n"
    },
    {
      "commit": "589033b560933b9befd694c08835cd904fd62795",
      "tree": "27cb8098a9b533e860c4ce1eb6aa0287412240db",
      "parents": [
        "1ed8eb8fd7bc1fc508c5eae675f4057f6e442e4a"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 17 21:51:25 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 17 21:51:25 2015"
      },
      "message": "Roll back client/ at right revision.\n"
    },
    {
      "commit": "1ed8eb8fd7bc1fc508c5eae675f4057f6e442e4a",
      "tree": "8a1d05b80b12bda7494a65058c7c0150c2453a5e",
      "parents": [
        "1ace795efdf69e83cefb2c0cedaa60c19b0e4dfe"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Thu Feb 12 22:14:36 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Thu Feb 12 22:14:36 2015"
      },
      "message": "Bitty lints.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/203860043\n"
    },
    {
      "commit": "1ace795efdf69e83cefb2c0cedaa60c19b0e4dfe",
      "tree": "7ee6d89963b45174823d52d7d01bfd3a6fb877ba",
      "parents": [
        "cdbdf88abfb179f0985a874cb989770e8699183c"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 19:16:05 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 19:16:05 2015"
      },
      "message": "Add further logging and use subprocess on cygwin.\n\nAdd process id to help figure out when processes change.\n\nI wrote that while diagnosing a problem, which eventually boiled down to broken\nuuid on cygwin x64 when libuuid-devel is missing. Argh.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/200400043\n"
    },
    {
      "commit": "cdbdf88abfb179f0985a874cb989770e8699183c",
      "tree": "804ba6ac2cc87c4d561f672ccbe81d8422eb640c",
      "parents": [
        "d4d4252a95a4491e5204e568bbfe9352ce241477"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 19:14:35 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 19:14:35 2015"
      },
      "message": "Densify the root page text.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/203880043\n"
    },
    {
      "commit": "d4d4252a95a4491e5204e568bbfe9352ce241477",
      "tree": "0271ff75fd0003cb2f31d12c6e7ebb14d29a9b3d",
      "parents": [
        "0ff1a24f8b283f4cf859adf5c695da6ca240c113"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 19:13:42 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 19:13:42 2015"
      },
      "message": "Return a dummy number of cores when the system fails to get the number of cores.\n\nSaw this happen on Win2K8R2 on cygwin. Since cygwin is just used for the initial\nbootstrap, this should be just enough to get going to finish the bootstrap\nprocess.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/203870043\n"
    },
    {
      "commit": "0ff1a24f8b283f4cf859adf5c695da6ca240c113",
      "tree": "193fe4b6d29f9e683a980c456e68f87656605770",
      "parents": [
        "88290379395ff6db0e929c6963e8b168db5075e6"
      ],
      "author": {
        "name": "Nodir Turakulov",
        "email": "nodir@chromium.org",
        "time": "Thu Feb 12 17:29:45 2015"
      },
      "committer": {
        "name": "Nodir Turakulov",
        "email": "nodir@chromium.org",
        "time": "Thu Feb 12 17:29:45 2015"
      },
      "message": "ereporter2: require login on error pages\n\nWhenever I try to open an error page from a report email, I get 403 because I am\nnot logged in. This change requires a person to login.\n\nTested:\nhttps://1545-41e5ed2-dot-cr-buildbucket.appspot.com/restricted/ereporter2/request/54dc2c7c00ff02b44db9328d230001737e63722d6275696c646275636b65740001313534312d35346265646436000100\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/198440044\n"
    },
    {
      "commit": "88290379395ff6db0e929c6963e8b168db5075e6",
      "tree": "465fbaa283908b7bced90ece7068630ef792f21c",
      "parents": [
        "added33f2e53cd4c81c66daf199f6084fdc43658"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 14:24:35 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Thu Feb 12 14:24:35 2015"
      },
      "message": "Do not refresh token immediately.\n\nIt was not necessary and it\u0027s an issue when bootstrapping via cygwin. What\nhappens is that third_party/oauth2client/multistore_file.py really wants to\nwrite a token file right away and for some unknown reason the cygwin home\ndirectory for some bots is not writable over ssh (I suspect an UAC issue).\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/197550043\n"
    },
    {
      "commit": "added33f2e53cd4c81c66daf199f6084fdc43658",
      "tree": "f338a648a66a7c1be8c77a3d5f078847ba99258d",
      "parents": [
        "57abf0d04f4599fbcc516c8963bf1c8ef5611346"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Feb 11 21:32:29 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Wed Feb 11 21:32:29 2015"
      },
      "message": "Endpoints Strangeness Workaround\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/203040043\n"
    },
    {
      "commit": "57abf0d04f4599fbcc516c8963bf1c8ef5611346",
      "tree": "15970fd4895a6086a2802bd605041a8742b5bf16",
      "parents": [
        "7637e65cc6ba559c204938d6d53a3ee0b0fbad20"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 11 21:09:51 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 11 21:09:51 2015"
      },
      "message": "Handle when the clock goes backward.\n\nWhen this happens, both duration and cost_usd become negative and this causes an\ninternal_failure, while just ditching the value is fine enough.\n\nThis will fix a few failures that have been observed from time to time.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/201970043\n"
    },
    {
      "commit": "7637e65cc6ba559c204938d6d53a3ee0b0fbad20",
      "tree": "7011a7b360db32c25b1e55dec432ef8c206e6596",
      "parents": [
        "dd8685fb4627373af421d77991d47371ae77413e"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 11 20:38:53 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 11 20:38:53 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "dd8685fb4627373af421d77991d47371ae77413e",
      "tree": "cc2d5b692425d84fb4bf2bd8b755a0a7b638a8c8",
      "parents": [
        "886df5560ec1b136c16adc933cc0d36419b3c322"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 11 20:32:20 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Wed Feb 11 20:32:20 2015"
      },
      "message": "Update tests to stop simulating tests with multiple commands.\n\nThis was forgot from ab26dcbc0e6 where the code stopped to accept task requests\nwith multiple commands.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/204870043\n"
    },
    {
      "commit": "886df5560ec1b136c16adc933cc0d36419b3c322",
      "tree": "2d6d1c733ee78b207b66c05d7bad92ecef58afaa",
      "parents": [
        "e0bb9b211d42f25606d6f9d77ea42fe3a71725fc"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 10 20:26:54 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 10 20:26:54 2015"
      },
      "message": "Improve reliability of Swarming bot startup in case of long network failure.\n\nWhen the network is down for an extended period of time (over 20 minutes),\n.refresh_token() will fail, then on_error() will fail too, which will raise at\nthe call site and will terminate the bot_main process. Handle this exception and\nloop again, until (hopefully) the network comes back.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/202950043\n"
    },
    {
      "commit": "e0bb9b211d42f25606d6f9d77ea42fe3a71725fc",
      "tree": "c9866c2b7b4f5aac7d5208fbb9b2fba7ae811a25",
      "parents": [
        "8db36af37765f5c74b1d061377180646931d917f"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 10 20:25:28 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Tue Feb 10 20:25:28 2015"
      },
      "message": "Revert incorrect client/ roll in 8db36af37765f\n"
    },
    {
      "commit": "8db36af37765f5c74b1d061377180646931d917f",
      "tree": "fd095277139e309bf365d206315d47685b060d2e",
      "parents": [
        "c17c84d972465357e8d895b730a4af0af0282cba"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Feb 10 01:51:15 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Tue Feb 10 01:51:15 2015"
      },
      "message": "Added BytesField for retrieval.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\n\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/203810043\n"
    },
    {
      "commit": "c17c84d972465357e8d895b730a4af0af0282cba",
      "tree": "ecfac9fc3fb00203e8d7e5898ce0841f243d452a",
      "parents": [
        "ab26dcbc0e671ebf599ce3745cb7881bd9d595ef"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 21:14:04 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 21:14:04 2015"
      },
      "message": "Ignore any firmwaresyncd volume on OSX for low free space check.\n\nThis volume is irrelevant for this and this check causes OSX bots to\noccasionally self-quarantine themselves as a false-positive.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/201930043\n"
    },
    {
      "commit": "ab26dcbc0e671ebf599ce3745cb7881bd9d595ef",
      "tree": "ce7759aba3a81dba024c1e3160a92549fbf58ef8",
      "parents": [
        "e5715a67608aa27c3a83f838dadc22d97f7d84e4"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:13:41 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:13:41 2015"
      },
      "message": "Remove support for multiple commands.\n\nThis will greatly simplify the API when switching to endpoints.\n\nFollow up CLs:\n- a mapreduce to merge outputs from multiple commands and update\n  TaskProperties.commands to be a list of str.\n- remove support for multiple output streams and bot supporting multiple\n  commands.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/199440043\n"
    },
    {
      "commit": "e5715a67608aa27c3a83f838dadc22d97f7d84e4",
      "tree": "27c2f10f58a7e85f612c9d36ac108f20aa4ddde6",
      "parents": [
        "11515b83ddd71be0df855c155a1341afe0c4c33f"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:09:26 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:09:26 2015"
      },
      "message": "Force TaskResultSummary and TaskRunResult to be saved in a transaction.\n\nThis is necesary to eventually support running task cancelation and for general\ntask coherency.\n\nTaskOutput will have the next treatment eventually but I\u0027ll get rid of the\nmulti-command support first.\n\nR\u003dvadimsh@chromium.org\nBUG\u003dswarming:62\n\nReview URL: https://codereview.appspot.com/204720043\n"
    },
    {
      "commit": "11515b83ddd71be0df855c155a1341afe0c4c33f",
      "tree": "88ee7fabde2d497a2c19cb84402207d52e01fa14",
      "parents": [
        "1e2f285b72a584e91acf72a503f7858520429d23"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:08:12 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:08:12 2015"
      },
      "message": "Add support to retry a task directly from the web UI.\n\nIt\u0027s useful when diagnosing task failure. There\u0027s no no need to add the\nequivalent API wise for now, as the CLI tool can achieve this with the current\nAPIs.\n\nRefactor task_scheduler.make_request() into a required separate call to\ntask_request.make_request() plus task_scheduler.schedule_request().\n\nR\u003dvadimsh@chromium.org\nBUG\u003dswarming:201\n\nReview URL: https://codereview.appspot.com/203730043\n"
    },
    {
      "commit": "1e2f285b72a584e91acf72a503f7858520429d23",
      "tree": "e3d459b2e8909ad272ea78c2349ce8f0159b1e4f",
      "parents": [
        "a3ca387b085ee6bd06ec761db6bb9c62a4b2008f"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:07:05 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:07:05 2015"
      },
      "message": "Fix bug introduced in 610048179c64.\n\nIt resulted in a HTTP 500 in task that had a parent.\n\nR\u003dvadimsh@chromium.org\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/196650043\n"
    },
    {
      "commit": "a3ca387b085ee6bd06ec761db6bb9c62a4b2008f",
      "tree": "30af19c770a4494a4a9fe097f97c0a214118bf9b",
      "parents": [
        "1f4b519bb99737deab2872d3298c705cd4836b29"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:05:23 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Mon Feb 09 18:05:23 2015"
      },
      "message": "Update client/ to point back as a valid commit.\n"
    },
    {
      "commit": "1f4b519bb99737deab2872d3298c705cd4836b29",
      "tree": "81c19e9bc58488a705fbbfee7055b4d9af34b18d",
      "parents": [
        "830cefc0cbdd6540a1168c38d126c0cb0a2d7b3d"
      ],
      "author": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Mon Feb 09 17:31:24 2015"
      },
      "committer": {
        "name": "Cory Massaro",
        "email": "cmassaro@chromium.org",
        "time": "Mon Feb 09 17:31:24 2015"
      },
      "message": "More compression support.\n\nR\u003dmaruel@chromium.org, vadimsh@chromium.org\n\nBUG\u003d\n\nReview URL: https://codereview.appspot.com/194700043\n"
    },
    {
      "commit": "830cefc0cbdd6540a1168c38d126c0cb0a2d7b3d",
      "tree": "3f30d90d5e953b3236352112eb4375fee96a0d86",
      "parents": [
        "81f5198cb3a5c4170b53ca9e046f0e0e7268c5b5"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Feb 06 23:22:15 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Feb 06 23:22:15 2015"
      },
      "message": "Improve ereporter2 silencing and add autologin for paths not covered by app.yaml\n\n- Add auth.autologin to convert anonymous access from 403 to automatic login\n  flow. Most of the paths have this handled by AppEngine automatically via\n  app.yaml but not all. This decorator manually handles the one missed by\n  app.yaml.\n- Improve default checking of silencing options. By default the options where\n  invalid.\n\nR\u003dvadimsh@chromium.org\nBUG\u003dswarming:209\n\nReview URL: https://codereview.appspot.com/198310043\n"
    },
    {
      "commit": "81f5198cb3a5c4170b53ca9e046f0e0e7268c5b5",
      "tree": "fb0616258a48abcda04143d9b792fec545fc307b",
      "parents": [
        "7a831b64ebff96260756e353ab002644d7c3abb6"
      ],
      "author": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Feb 06 21:15:38 2015"
      },
      "committer": {
        "name": "Marc-Antoine Ruel",
        "email": "maruel@chromium.org",
        "time": "Fri Feb 06 21:15:38 2015"
      },
      "message": "Roll client/\n"
    },
    {
      "commit": "7a831b64ebff96260756e353ab002644d7c3abb6",
      "tree": "0abdd9f26ad34ea2ce521f5ab561c4795aff9c3b",
      "parents": [
        "f7e7d34afcf55ce4b022d25f4f53490aadbc79f8"
      ],
      "author": {
        "name": "Nodir Turakulov",
        "email": "nodir@chromium.org",
        "time": "Fri Feb 06 16:58:21 2015"
      },
      "committer": {
        "name": "Nodir Turakulov",
        "email": "nodir@chromium.org",
        "time": "Fri Feb 06 16:58:21 2015"
      },
      "message": "Configurable ereporter2 groups\n\nMade ereporter2 reports and viewers groups configurable in\nappengine_config.py:\n\ncomponents_ereporter2_RECIPIENTS_AUTH_GROUP \u003d \u0027swarming-ereporter2-reports\u0027\n\nBUG\u003d\nR\u003dvadimsh@chromium.org\n\nReview URL: https://codereview.appspot.com/200090043\n"
    }
  ],
  "next": "f7e7d34afcf55ce4b022d25f4f53490aadbc79f8"
}
