)]}'
{
  "commit": "a53f41020e59776604ca4fc42efd43fed94def00",
  "tree": "9b1d2e14d3778e7d1f121feca90f7d3a4587aead",
  "parents": [
    "d112131610ad2e37beda5f364e7b3ca7cce7792c"
  ],
  "author": {
    "name": "Ricardo Amador",
    "email": "ricardoamador@google.com",
    "time": "Fri Dec 15 23:48:33 2023 +0000"
  },
  "committer": {
    "name": "CQ Bot Account",
    "email": "flutter-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Dec 15 23:48:33 2023 +0000"
  },
  "message": "This cl introduces a cache micro manager that will run cleanup primarily for osx_sdk directories but could be used elsewhere to manage clean up on the cache subdirectory level.\n\nAddresses: https://github.com/flutter/flutter/issues/137951 in which it was found that having multiple versions of Xcode was causing significant overhead to runtimes on mac os tests.\n\nThe change here will track packages in a cache for example osx_sdk and keep track of the time in which packages will be removed with a metadata file in the directory.\n* If a package is updated and used the removal date will always be x days (currently 30 days) from the last day it was touched.\n* If a package is not updated it will be determined if it needs to be removed and if so will remove it.\n* Packages FOUND ON disk but NOT IN the file will be added automatically for tracking and removal.\n* Packages NOT FOUND on disk BUT IN the metadata file will be removed from the metadata file.\n\nOne things to note is that we may want to tweak the time that we leave the packages around to something shorter or make it configurable via the ci.yaml. Though I am not sure how often multiple packages are used.\n\nThis tool is unobtrusive and does not aggressively remove files. If you want to reset all package expirations you can simple remove the file from the machine to force it to recalculate the removal dates.\n\nThis does not run as a service and can be added as a step to existing recipes if we need to remove packages causing overhead to other test runtimes.\n\nhttps://ci.chromium.org/ui/p/flutter/builders/try.shadow/Mac%20plugin_test_ios/4/overview\n\n\nBug: https://github.com/flutter/flutter/issues/137951\nChange-Id: I7e552aff11d722d850ec40125c89311db6191b1b\nReviewed-on: https://flutter-review.googlesource.com/c/recipes/+/52703\nReviewed-by: Keyong Han \u003ckeyonghan@google.com\u003e\nCommit-Queue: Ricardo Amador \u003cricardoamador@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8248f8b7a085bddb0b0d4e93ba0265106d282940",
      "old_mode": 33188,
      "old_path": "recipe_modules/adhoc_validation/examples/full.expected/mac.json",
      "new_id": "01fccae7d61a4f184aaecf9352adde43afbd1d6d",
      "new_mode": 33188,
      "new_path": "recipe_modules/adhoc_validation/examples/full.expected/mac.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "37a0c5150de1c7fefa684573b844c54ccaa98ef6",
      "new_mode": 33188,
      "new_path": "recipe_modules/cache_micro_manager/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "95d2d6d00b32074676855e66525fca9fd0e97d61",
      "new_mode": 33188,
      "new_path": "recipe_modules/cache_micro_manager/api.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e9316b0956ac4fb882325edf268d58c5663c9caf",
      "new_mode": 33188,
      "new_path": "recipe_modules/cache_micro_manager/examples/existing_cache_file.expected/cache_metadata_exists_is_created.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7b747d9c7e9395107737601adaaa034d863d7432",
      "new_mode": 33188,
      "new_path": "recipe_modules/cache_micro_manager/examples/existing_cache_file.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "704b7eb59f1e7eb9622f72ec57d5ed61c0e2b673",
      "new_mode": 33188,
      "new_path": "recipe_modules/cache_micro_manager/examples/no_cache_file.expected/cache_metadata_exists_is_created.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "25af149db012eed8e2d3fbf03e474d96688880c8",
      "new_mode": 33188,
      "new_path": "recipe_modules/cache_micro_manager/examples/no_cache_file.py"
    },
    {
      "type": "modify",
      "old_id": "5eb1daed8a979907d4cdf51e3bdf363239abaa52",
      "old_mode": 33188,
      "old_path": "recipe_modules/flutter_deps/examples/full.expected/mac.json",
      "new_id": "b5665ed20ad4d212d562c1461e4323dbb3cf998c",
      "new_mode": 33188,
      "new_path": "recipe_modules/flutter_deps/examples/full.expected/mac.json"
    },
    {
      "type": "modify",
      "old_id": "2040e986ce28bb108827ed88b2c7ece58559f8c0",
      "old_mode": 33188,
      "old_path": "recipe_modules/flutter_deps/examples/full.expected/mac_old.json",
      "new_id": "a43790e11d47ba48787a1c54090f0ee0d1ff55b8",
      "new_mode": 33188,
      "new_path": "recipe_modules/flutter_deps/examples/full.expected/mac_old.json"
    },
    {
      "type": "modify",
      "old_id": "01dff5b534bfefe7521e3987c0810bcda08dc50d",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/__init__.py",
      "new_id": "bd3108d1e3077c641bccc006d6aff9e82be2e796",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/__init__.py"
    },
    {
      "type": "modify",
      "old_id": "0ce2a63928bf9ee21871c4ed8b653906d7466cfb",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/api.py",
      "new_id": "905918a77482268f93c6d2717f6a61e77cdefee9",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/api.py"
    },
    {
      "type": "modify",
      "old_id": "a2142e296fd663ad0e7d56e6d0d2cc85c00907c6",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/ancient_version.json",
      "new_id": "b0ca432ce75bfc68f572491a703502fdef2c89ae",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/ancient_version.json"
    },
    {
      "type": "modify",
      "old_id": "ea0ab76ddb3a6d7b4efa0d94344227e194dc21a9",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/automatic_version.json",
      "new_id": "d8b88e4f74cf3adfc08c8c5be44648dbcfc09b39",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/automatic_version.json"
    },
    {
      "type": "modify",
      "old_id": "734b3991eeb6dfb1a315e8565728ed7ca005b304",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_invalid_runtime_version_with_mac_13.json",
      "new_id": "7426ef991c3afaa2d07899c775b354b97a10d04c",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_invalid_runtime_version_with_mac_13.json"
    },
    {
      "type": "modify",
      "old_id": "740ab054195f1d63a9565ec92722597ac9721853",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_package_source.json",
      "new_id": "9d266383bc206cb81761657b5363ed24efa8bf93",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_package_source.json"
    },
    {
      "type": "modify",
      "old_id": "a56c86a28cdd5f22b329241361a6175ea25e10fd",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version.json",
      "new_id": "8b4720d4ff59e3cd68226e23b8f2b7b98b4f95ea",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_runtime_version.json"
    },
    {
      "type": "modify",
      "old_id": "32da7dd6939deeddc474b6817d609d50fbc7cd01",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_version.json",
      "new_id": "0f83c21b16d80e77034cd37044f9811277e00201",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/explicit_version.json"
    },
    {
      "type": "modify",
      "old_id": "065b50bab850f7f87fa1bd9eebef7e146ffca317",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stderr.json",
      "new_id": "62e036f1e8d47b4c681ab9234c20934f4db0418e",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stderr.json"
    },
    {
      "type": "modify",
      "old_id": "3dad70d25194a9c9a7f746f612d5970f34750591",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stdout.json",
      "new_id": "2ec6143f6f39ae56357e3e3bf8206ef528913af8",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/failed_to_delete_runtimes_err_in_stdout.json"
    },
    {
      "type": "modify",
      "old_id": "9e6df99753776f84f6a167da9cc9204663b82ba9",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac.json",
      "new_id": "4c0d18c1baf12268915999dce33ac54bf52cc0b6",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac.json"
    },
    {
      "type": "modify",
      "old_id": "fb9de50ba8da6dfa8a0073e85a7aa221e6a46be7",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_arm_host.json",
      "new_id": "080813915a6e1e1b7b8c586e76cd32381f077864",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_arm_host.json"
    },
    {
      "type": "modify",
      "old_id": "81bcac03694bb16884b31c3b01e09a170781524a",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_cleanup_no_runtimes.json",
      "new_id": "d6bfbf2fa09aae03ab6b32017085c61cc0edfd6f",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_cleanup_no_runtimes.json"
    },
    {
      "type": "modify",
      "old_id": "6ba4bcf28705abe3a7577b07846c9ce1abdc0fa5",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_already_mounted.json",
      "new_id": "dd1effbe202a5408fca1c2ad913f832aa4e88055",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_already_mounted.json"
    },
    {
      "type": "modify",
      "old_id": "42266f8757f4214c6ebabd3a972e909cfc4c5883",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_build_verion_failure.json",
      "new_id": "7d957fd6b71e56e2c4e4fede25240c162c6376ac",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_build_verion_failure.json"
    },
    {
      "type": "modify",
      "old_id": "695ab405f47c6f7a7716129f83295225f79138fc",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_clean.json",
      "new_id": "c90337e825838bc0af34cbd7beb51e3edd2c7d8a",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_clean.json"
    },
    {
      "type": "modify",
      "old_id": "712e92016dceb680002c0ee35b6374a8bdf585f4",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_fails_to_find_dmg.json",
      "new_id": "9161a171329fe61c37bf8cb9e1060b5b462d69c1",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_fails_to_find_dmg.json"
    },
    {
      "type": "modify",
      "old_id": "3265675e7daa8cdf6192e34d3b602a256a9c63cb",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_not_mounted.json",
      "new_id": "acbc019a96e9c057029c9929e6db65c2ed53550e",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_explicit_runtime_version_not_mounted.json"
    },
    {
      "type": "modify",
      "old_id": "32f4e1887acd560266d32ddc9d15d0a82cb28e86",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_x86_host.json",
      "new_id": "1916ab6e36fb390f2e7bba96ce1fcae6b31d9658",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/mac_13_x86_host.json"
    },
    {
      "type": "modify",
      "old_id": "78acf66fdd0ae96b9b1a4433819d6f15be5206d5",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/no_runtime_version.json",
      "new_id": "8db4a145c04e0a2872b253ac823438700582ccb0",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/no_runtime_version.json"
    },
    {
      "type": "modify",
      "old_id": "340d4581b0a0c808ae5ef649f84a833082b63d55",
      "old_mode": 33188,
      "old_path": "recipe_modules/osx_sdk/examples/full.expected/xcode_install_fails_passes_on_retry.json",
      "new_id": "a97fc2cee083ca8194e0649d1a3c82ec28775ed3",
      "new_mode": 33188,
      "new_path": "recipe_modules/osx_sdk/examples/full.expected/xcode_install_fails_passes_on_retry.json"
    },
    {
      "type": "modify",
      "old_id": "68a8bbceb4d04e889b58552ee7c4b3465f235087",
      "old_mode": 33188,
      "old_path": "recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json",
      "new_id": "bff21bcbce8b17e0bad113e6fcfe609c07315145",
      "new_mode": 33188,
      "new_path": "recipes/devicelab/devicelab_drone.expected/upload-metrics-mac.json"
    },
    {
      "type": "modify",
      "old_id": "6084f13706e982c6229d7403a07619362f37351c",
      "old_mode": 33188,
      "old_path": "recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json",
      "new_id": "54cdd6c94065b0421c99a190879e753eb215491f",
      "new_mode": 33188,
      "new_path": "recipes/devicelab/devicelab_drone.expected/xcode-chromium-mac.json"
    },
    {
      "type": "modify",
      "old_id": "76990f28442905c239d392c7e977698a5a89043a",
      "old_mode": 33188,
      "old_path": "recipes/devicelab/devicelab_drone.expected/xcode-devicelab-timeout.json",
      "new_id": "cf6a21eeffe2c6c1119ceb878177265ef1a956a0",
      "new_mode": 33188,
      "new_path": "recipes/devicelab/devicelab_drone.expected/xcode-devicelab-timeout.json"
    },
    {
      "type": "modify",
      "old_id": "f9db4dc1958374aa908393149e7532fe58ff516e",
      "old_mode": 33188,
      "old_path": "recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json",
      "new_id": "b6973a2ca58eca3f699b175b3325d9fcdc8aef25",
      "new_mode": 33188,
      "new_path": "recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json"
    },
    {
      "type": "modify",
      "old_id": "ad7bb1fe512c62468b9868c6c9cd92da5dd75b56",
      "old_mode": 33188,
      "old_path": "recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json",
      "new_id": "2ae266a85647e79d6e69adc17a587c9d6cf01e38",
      "new_mode": 33188,
      "new_path": "recipes/devicelab/devicelab_drone_build_test.expected/xcode-mac.json"
    },
    {
      "type": "modify",
      "old_id": "8bd64cfd3edf1a718420925c9350bf92dfae3c8e",
      "old_mode": 33188,
      "old_path": "recipes/devicelab/devicelab_test_drone.expected/mac.json",
      "new_id": "309e3b2950828ca1004937ab0ed27c076ba16a18",
      "new_mode": 33188,
      "new_path": "recipes/devicelab/devicelab_test_drone.expected/mac.json"
    },
    {
      "type": "modify",
      "old_id": "30d1d77595953096a428ec564d1af9b7f1dd1c78",
      "old_mode": 33188,
      "old_path": "recipes/engine_v2/builder.expected/mac.json",
      "new_id": "ee68d6d45cd33de0e872f5d1d78821a2848e887b",
      "new_mode": 33188,
      "new_path": "recipes/engine_v2/builder.expected/mac.json"
    },
    {
      "type": "modify",
      "old_id": "f4b2bf9cfbdd5c290c1ec2d86ab8a0ac58883991",
      "old_mode": 33188,
      "old_path": "recipes/engine_v2/engine_v2.expected/basic_mac.json",
      "new_id": "2c01b14cf0fec6b3e901b4828b6c98f853c1abbc",
      "new_mode": 33188,
      "new_path": "recipes/engine_v2/engine_v2.expected/basic_mac.json"
    },
    {
      "type": "modify",
      "old_id": "ebd4483b9e16dcdf10a7464029b61e02871b5b6d",
      "old_mode": 33188,
      "old_path": "recipes/engine_v2/engine_v2.expected/basic_mac_dart_internal.json",
      "new_id": "873f4d717f07bb8abf6a412ef8cf18eb9b92a964",
      "new_mode": 33188,
      "new_path": "recipes/engine_v2/engine_v2.expected/basic_mac_dart_internal.json"
    },
    {
      "type": "modify",
      "old_id": "70409b958cd3f8d70283dd11899092acc3938904",
      "old_mode": 33188,
      "old_path": "recipes/engine_v2/engine_v2.expected/codesign_release_branch.json",
      "new_id": "b8aa9f308f6a1fcece6206832ca25c1aa95acd63",
      "new_mode": 33188,
      "new_path": "recipes/engine_v2/engine_v2.expected/codesign_release_branch.json"
    }
  ]
}
