)]}'
{
  "commit": "10da41d236c44f26fcf75e2f8cb116e47f69f4a5",
  "tree": "9068b91e27f4bbd5f6fcc48f7542fed4edf915fe",
  "parents": [
    "93b9cc185a674b17d3dde1bb356ea2f177b80d12"
  ],
  "author": {
    "name": "Wendy Wang",
    "email": "wendy.wang10@sap.com",
    "time": "Thu Aug 03 18:45:25 2023 +0200"
  },
  "committer": {
    "name": "Wendy Wang",
    "email": "wendy.wang10@sap.com",
    "time": "Thu Sep 07 13:35:55 2023 +0200"
  },
  "message": "Improve locking to handle stale locks\n\nLocks are a mechanism to ensure exclusive usage of the locked\nresource. Here we provide a Spanner-specific implementation of\nlocks which are used from the global-refdb module.\n\nTo ensure lock freshness we use heartbeats. Stale locks can be\nreclaimed.\n\nSee Documentation/locks.md for more details.\n\nChange-Id: Idbe3b457327d05fda2c2352bab2be27411346965\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb10160199211ddb08b9998708f3c109a80778ba",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/Lock.java"
    },
    {
      "type": "modify",
      "old_id": "fc666661d6b9d9ad04d7ed46f3b9e80a8eafb403",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/Module.java",
      "new_id": "df30ab73e76d541166738a7bb59758c3f3a91366",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/Module.java"
    },
    {
      "type": "modify",
      "old_id": "5a95276cb05f2501cdb884d02b730cc37f0987a6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerLifeCycleManager.java",
      "new_id": "9c80b6323fdfe3cd68031df138539b826a29e215",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerLifeCycleManager.java"
    },
    {
      "type": "modify",
      "old_id": "021bb0f57d7545692a262677d32d3aa9d6d858b0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabase.java",
      "new_id": "ad6655be5064164afef3d7de6d282afb94796d11",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabase.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47d1a955d5459cb944b58f0cb2e71c9ecaf949d0",
      "new_mode": 33188,
      "new_path": "src/main/resources/Documentation/locks.md"
    },
    {
      "type": "modify",
      "old_id": "8b7fcfec12dddce7359d18c50a2b90b07fa2fe33",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java",
      "new_id": "4eaaf8493c079cba2922795f366372c6e65d6990",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/spannerrefdb/EmulatedSpannerRefDb.java"
    }
  ]
}
