)]}'
{
  "log": [
    {
      "commit": "a79ed4ae67eae540e6f638b05758129aadd37952",
      "tree": "c33ae8b8bf77a8226e56cfb43c26ccf701c79325",
      "parents": [
        "bf0ae87193d49abc7c779afaf2ff49144547adf5"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Mon Apr 13 14:34:09 2026 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Mon Apr 13 14:44:08 2026 +0200"
      },
      "message": "Migrate to bazel modules\n\nChange-Id: I39acad6222648570710f41f04c61e2f44dacb87a\n"
    },
    {
      "commit": "bf0ae87193d49abc7c779afaf2ff49144547adf5",
      "tree": "fe3dd79312ebb5108a28873ebb8c0442f480440e",
      "parents": [
        "253ac96357c55322f3f35c1a0bea5bf274e8fc12"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 15 13:30:07 2025 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Oct 15 13:30:07 2025 +0200"
      },
      "message": "Update dependencies and spanner emulator container\n\nUpdate dependencies\n- docker-java to 3.6.0\n- jackson to 2.20\n- jna to 5.18.1\n- testcontainers to 1.21.3\n\nUpdate SpannerEmulatorContainer to 1.5.42.\n\nIn LockTest#reclaimFreshLockedRef_Rejected use COMMMIT_TIMESTAMP instead\nof current timestamp obtained from Timestamp.now() to avoid races\nbetween the local clock and the Spanner emulator container which doesn\u0027t\nhave the exact same behavior as a real Spanner instance.\nWithout this fix the test sometimes failed with the error\n\"FAILED_PRECONDITION: Cannot write timestamps in the future\".\n\nChange-Id: I98e70505fbbac0261a927b66a60dca9082cc5638\n"
    },
    {
      "commit": "253ac96357c55322f3f35c1a0bea5bf274e8fc12",
      "tree": "10917a703d33a2fbb1d275614a140e04548cc5fc",
      "parents": [
        "aea6029deda3d457ae13b60a481d9a2b93e35959"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Fri Mar 14 16:34:09 2025 +0100"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Fri Mar 14 08:36:37 2025 -0700"
      },
      "message": "Bump dependencies (testcontainers to 1.20.2)\n\ndocker-java to 3.4.0 as required by testcontainers\njackson-annotations to 2.18.2\n\nChange-Id: Ida8959ae4698f430aa9b33b9cd1c758c3bc04b03\n"
    },
    {
      "commit": "aea6029deda3d457ae13b60a481d9a2b93e35959",
      "tree": "b4ecaad92022cc5ae75c00944e95c5624f57e386",
      "parents": [
        "8eaa2fbbdada43368717b3058c2e2a2158ec5c7f"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Feb 27 15:30:58 2025 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Feb 27 15:30:58 2025 +0100"
      },
      "message": "Update spanner jdbc driver to 2.27.0\n\nThis version contains the following transitive dependencies\n\n--- dependency:3.7.0:tree (default-cli) @ google-cloud-spanner-jdbc ---\ncom.google.cloud:google-cloud-spanner-jdbc:jar:2.27.0\n+- com.google.http-client:google-http-client:jar:1.46.1:compile\n+- org.apache.httpcomponents:httpclient:jar:4.5.14:compile\n+- org.apache.httpcomponents:httpcore:jar:4.4.16:compile\n+- com.google.errorprone:error_prone_annotations:jar:2.36.0:compile\n+- com.google.j2objc:j2objc-annotations:jar:3.0.0:compile\n+- io.grpc:grpc-context:jar:1.69.0:compile\n+- io.opencensus:opencensus-api:jar:0.31.1:compile\n+- io.opencensus:opencensus-contrib-http-util:jar:0.31.1:compile\n+- io.grpc:grpc-api:jar:1.69.0:compile\n+- com.google.cloud:google-cloud-core-grpc:jar:2.51.0:compile\n+- com.google.api:gax-grpc:jar:2.61.0:compile\n+- com.google.api.grpc:proto-google-common-protos:jar:2.52.0:compile\n+- com.google.api:gax:jar:2.61.0:runtime\n+- org.threeten:threetenbp:jar:1.7.0:compile\n+- com.google.cloud:google-cloud-spanner:jar:6.87.0:compile\n+- com.google.cloud:grpc-gcp:jar:1.6.1:compile\n+- io.grpc:grpc-auth:jar:1.69.0:compile\n+- io.grpc:grpc-inprocess:jar:1.69.0:compile\n+- io.grpc:grpc-core:jar:1.69.0:compile\n+- com.google.android:annotations:jar:4.1.1.4:runtime\n+- org.codehaus.mojo:animal-sniffer-annotations:jar:1.24:runtime\n+- io.perfmark:perfmark-api:jar:0.27.0:runtime\n+- io.grpc:grpc-util:jar:1.69.0:runtime\n+- io.grpc:grpc-protobuf:jar:1.69.0:compile\n+- io.grpc:grpc-protobuf-lite:jar:1.69.0:runtime\n+- io.grpc:grpc-stub:jar:1.69.0:compile\n+- com.google.auto.value:auto-value-annotations:jar:1.11.0:compile\n+- com.google.protobuf:protobuf-java-util:jar:3.25.5:compile\n+- com.google.api.grpc:grpc-google-common-protos:jar:2.52.0:compile\n+- com.google.guava:failureaccess:jar:1.0.2:compile\n+- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile\n+- org.checkerframework:checker-qual:jar:3.49.0:compile\n+- com.google.api.grpc:proto-google-iam-v1:jar:1.47.0:compile\n+- com.google.http-client:google-http-client-gson:jar:1.46.1:compile\n+- io.opencensus:opencensus-contrib-grpc-util:jar:0.31.1:compile\n+- io.opentelemetry:opentelemetry-context:jar:1.47.0:compile\n+- io.opentelemetry:opentelemetry-sdk:jar:1.47.0:compile\n+- io.opentelemetry:opentelemetry-sdk-trace:jar:1.47.0:compile\n+- io.opentelemetry:opentelemetry-sdk-logs:jar:1.47.0:compile\n+- io.opentelemetry:opentelemetry-sdk-common:jar:1.47.0:compile\n+- io.opentelemetry:opentelemetry-sdk-metrics:jar:1.47.0:compile\n+- com.google.cloud.opentelemetry:detector-resources-support:jar:0.33.0:compile\n+- com.google.cloud:google-cloud-monitoring:jar:3.54.0:compile\n+- io.grpc:grpc-grpclb:jar:1.69.0:compile\n+- org.conscrypt:conscrypt-openjdk-uber:jar:2.5.2:compile\n+- io.grpc:grpc-xds:jar:1.69.0:runtime\n+- io.grpc:grpc-services:jar:1.69.0:runtime\n+- com.google.re2j:re2j:jar:1.7:runtime\n+- commons-codec:commons-codec:jar:1.18.0:compile\n+- com.google.api.grpc:proto-google-cloud-monitoring-v3:jar:3.57.0:compile\n+- com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:jar:6.87.0:compile\n+- com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:jar:6.87.0:compile\n+- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:6.87.0:compile\n+- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:6.87.0:compile\n+- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:6.87.0:compile\n+- com.google.api:gax-httpjson:jar:2.61.0:compile\n+- com.google.code.gson:gson:jar:2.12.1:compile\n+- io.grpc:grpc-googleapis:jar:1.69.0:runtime\n+- io.grpc:grpc-rls:jar:1.69.0:runtime\n+- javax.annotation:javax.annotation-api:jar:1.3.2:compile\n+- io.grpc:grpc-alts:jar:1.69.0:compile\n+- com.google.protobuf:protobuf-java:jar:3.25.5:compile\n+- com.google.guava:guava:jar:33.4.0-jre:compile\n+- io.grpc:grpc-netty-shaded:jar:1.69.0:compile\n+- com.google.api:api-common:jar:2.44.0:compile\n+- com.google.code.findbugs:jsr305:jar:3.0.2:compile\n+- com.google.auth:google-auth-library-oauth2-http:jar:1.32.1:compile\n+- com.google.auth:google-auth-library-credentials:jar:1.32.1:compile\n+- com.google.cloud:google-cloud-core:jar:2.51.0:compile\n+- com.google.api.grpc:proto-google-cloud-spanner-v1:jar:6.87.0:compile\n\\- io.opentelemetry:opentelemetry-api:jar:1.47.0:compile\n\nChange-Id: Iedf03b8c99c16f72ef6dfb7204804a49e877e842\n"
    },
    {
      "commit": "8eaa2fbbdada43368717b3058c2e2a2158ec5c7f",
      "tree": "5ac1875efbbfaaecccbf1884f517f9a3e4627bae",
      "parents": [
        "4b7209d7df1056403cde0b71021d512afce560e3"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Apr 15 11:04:48 2024 +0200"
      },
      "committer": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Apr 15 15:16:49 2024 +0200"
      },
      "message": "Consume global-refdb from source instead of Maven\n\nChange-Id: I4b798e367db3e493160e8cd49b37917ed75eb924\n"
    },
    {
      "commit": "4b7209d7df1056403cde0b71021d512afce560e3",
      "tree": "3dbc25dd97cd061d73ffa142e0b58fb255f970d6",
      "parents": [
        "4420b5d56dec67905915de473d66633b2aa4c4b0"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Apr 04 16:53:04 2024 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Apr 04 16:53:04 2024 +0200"
      },
      "message": "Add index on (project, time)\n\nThis allows for efficient queries for all ref-updates in a given project\nbefore/after some time.\n\nChange-Id: If725ffa945d265167f8b3caaf8a0742264f5aa65\n"
    },
    {
      "commit": "4420b5d56dec67905915de473d66633b2aa4c4b0",
      "tree": "5a395a14930a99c0e7e8a6f287a69ecffef422f9",
      "parents": [
        "765d740a062cc5dedb5591b7ed353e3b50e04ab9"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Apr 04 13:25:56 2024 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Apr 04 13:43:00 2024 +0000"
      },
      "message": "Add Timestamp column to refs table\n\nChange-Id: I6a6ca62527108998968b3a7b7e563fd9c1d9db78\n"
    },
    {
      "commit": "765d740a062cc5dedb5591b7ed353e3b50e04ab9",
      "tree": "e7bdf72dc7b910c68271733462929ee231387b68",
      "parents": [
        "e4b85567047415ce98728252381efbb996827574"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Feb 19 14:18:54 2024 +0100"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Feb 19 13:24:54 2024 +0000"
      },
      "message": "Change log level from atInfo to atFine\n\nReduce how chatty this plugin is at default log levels.\n\nChange-Id: Iec80def81b38892dbda11e83bbe040859fd8cee1\n"
    },
    {
      "commit": "e4b85567047415ce98728252381efbb996827574",
      "tree": "4fc76c776b619c90cdcdb462c2bf98dc5a2b2103",
      "parents": [
        "5abeaeaa8106da9e781802a630ec2c94bfe82fa4"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 14:22:39 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 16:44:05 2024 +0100"
      },
      "message": "Allow to reuse an existing global refdb database when running tests\n\nDatabase creation and especially scheme initialization can take very\nlong time, up to a minute based on my observation. By allowing to reuse\nand existing database we significantly reduce test run time. Use\nSPANNER_DATABASE environment variable to specify a database.\n\nExample:\n\n  bazelisk test \\\n  --test_env\u003d\u0027GOOGLE_APPLICATION_CREDENTIALS\u003d/path/to/the/key.json\u0027 \\\n  --test_env\u003d\u0027SPANNER_INSTANCE\u003dtest-instance\u0027 \\\n  --test_env\u003d\u0027SPANNER_DATABASE\u003dtest-global-refdb\u0027 \\\n  --test_tag_filters\u003dspanner-refdb //...\n\nNote that the specified database doesn\u0027t even need to exist. It will be\ncreated if necessary. However, it will not be dropped when the test\nrun finishes, leaving it ready for a next test run.\n\nChange-Id: Ib4a46ab3f817a5063a5023f9bc89ad6b5c1eb747\n"
    },
    {
      "commit": "5abeaeaa8106da9e781802a630ec2c94bfe82fa4",
      "tree": "4a252f273b8f9d07395aaa9fea7e94d1be5c3c66",
      "parents": [
        "7b9e678637c22453bd768aec6c0ec5785615a8cc"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 10:45:44 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 10:45:44 2024 +0100"
      },
      "message": "Use Duration instead of Long for the heart beat staleness\n\nChange-Id: I02235bc10e37385a70096ab191673e771d7ab2e8\n"
    },
    {
      "commit": "7b9e678637c22453bd768aec6c0ec5785615a8cc",
      "tree": "ade0445927885accb3eb77d54ff8bc829ea02d15",
      "parents": [
        "29205e5490ef17c6b8bce3b9a9e0820461b3e964"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 10:08:15 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 10:37:13 2024 +0100"
      },
      "message": "Fix heartbeat task leak after lock reclaim\n\nReclaiming an existing lock (re)started the heartbeat task but it missed\nto set the heartbeatTask reference. After a reclaimed lock was closed\nthe heartbeat task wasn\u0027t stopped because the heartbeatTask reference\nwas null. The heartbeat thread continued to run on the scheduled rate\nindefinitely.\n\nMake sure to set the heartbeatTask reference after a lock is reclaimed.\nExtend the tests to verify the heartbeat task is running/stopped.\n\nChange-Id: Iecb7b77f54ad416a3a4de27bf26942270cfc3c1e\n"
    },
    {
      "commit": "29205e5490ef17c6b8bce3b9a9e0820461b3e964",
      "tree": "75983bea89aff88c46a73869498688e427f2ad8d",
      "parents": [
        "bc24cdc70c97185253fb121825dbeb7e12b33107"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 10:24:05 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 19 10:26:20 2024 +0100"
      },
      "message": "Use a more readable assertion style when comparing Timestamps\n\nChange-Id: I87c7c1a930fbf23fa48322d3802ecc218c202581\n"
    },
    {
      "commit": "bc24cdc70c97185253fb121825dbeb7e12b33107",
      "tree": "c62c88cb22b7d6ef7106395ad1be79c6d89d7eeb",
      "parents": [
        "baa032a7a73480b0e1cd96d8ea77054edb518908"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 16:36:04 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 16:36:04 2024 +0100"
      },
      "message": "Remove wrong javadoc\n\nThe heartbeat method doesn\u0027t throw GlobalRefDbLockException\n\nChange-Id: I7254b1558eb8cf79794ed9e35f744f43b8374592\n"
    },
    {
      "commit": "baa032a7a73480b0e1cd96d8ea77054edb518908",
      "tree": "37067296b6374956aa5888fde7c19bf101969c6a",
      "parents": [
        "11f08e82f7982a64088271cb0196569fa38c8c04"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 15:33:22 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 15:34:40 2024 +0100"
      },
      "message": "LockTest: always pass (project, ref) to the utility methods\n\nWe did pass (project, ref) to the getLockTimestamp and getLockRow but\nnot to the insertLockRow.\n\nChange-Id: Iecb0251ff03f8496b2be8a1720a9ee6baf22366b\n"
    },
    {
      "commit": "11f08e82f7982a64088271cb0196569fa38c8c04",
      "tree": "61854625f71771072bba3055fc92e973e83a88ed",
      "parents": [
        "b987059fc495f838a252bf276ae39fcbf0895c02"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 15:13:31 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 15:13:31 2024 +0100"
      },
      "message": "LockTest fix misleading variable name\n\nThe insertLockRow is used for various tests to insert locks. Not all\ninserted locks will be stale.\n\nChange-Id: I8d16e8f1d0367668df76a1a121391dfcdd1a49b4\n"
    },
    {
      "commit": "b987059fc495f838a252bf276ae39fcbf0895c02",
      "tree": "65252fe373099aa21ebae3c57e88fe0aa5659f48",
      "parents": [
        "f1933ae0642cda5f86b6bfff4cb7ecd54e523500"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 14:36:40 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 14:36:40 2024 +0100"
      },
      "message": "Use Duration instead of int for HEARTBEAT_INTERVAL\n\nThe HEARTBEAT_INTERVAL was an int with the implicit unit of seconds.\n\nDuration is an amount of time that can be accessed using any\ntime unit as needed by the caller.\n\nChange-Id: I40efed491004cd2d2e275bf0fe5dc2443b7d3d3a\n"
    },
    {
      "commit": "f1933ae0642cda5f86b6bfff4cb7ecd54e523500",
      "tree": "1de65df011d9f3bab7e080a24c0a909ba07879fb",
      "parents": [
        "fe59f6150a5ffd1a6ddecea92ef26fe6f372dac8"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 14:00:57 2024 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jan 18 14:00:57 2024 +0100"
      },
      "message": "Lock: add a missed final for a field\n\nChange-Id: I922d12b07aee8456af0fc490bea4b6be4d0ee4cc\n"
    },
    {
      "commit": "fe59f6150a5ffd1a6ddecea92ef26fe6f372dac8",
      "tree": "da43ce361328d1827b4e50e4449e825987499928",
      "parents": [
        "9fdabe0a591d5a54a137cdc0ee508ed4bc1400b3"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Fri Sep 29 13:12:42 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Fri Sep 29 11:15:53 2023 +0000"
      },
      "message": "Use SitePaths to acquire GCP Credentials\n\nCredential path will be expected in the gerritsite/etc/ directory.\n\nChange-Id: I1775e05cdc0f68e5458b4de43b42ca6ed9fe71cc\n"
    },
    {
      "commit": "9fdabe0a591d5a54a137cdc0ee508ed4bc1400b3",
      "tree": "a2a95d621007442c3a6de2bbf9a4a38013e1e52e",
      "parents": [
        "710e72e64628bfab8111ec3e37744b7d63feca47",
        "cd981f9b2b72943fa1db19b608d65db261c620e3"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 15 11:39:44 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 15 11:39:44 2023 +0000"
      },
      "message": "Merge \"Improve DatabaseSchemaCreator\""
    },
    {
      "commit": "cd981f9b2b72943fa1db19b608d65db261c620e3",
      "tree": "643ce6f3e21a7f1eae0a1ed8eb407f2e148dc6e2",
      "parents": [
        "c51cdb1b891df11b82c602115959206c7af1238c"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 14 15:50:17 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Fri Sep 15 12:09:00 2023 +0200"
      },
      "message": "Improve DatabaseSchemaCreator\n\nCreate locks and refs tables in one array of statements instead of\nissuing two separate updates.\n\nChange-Id: Ida11c6da8df15ef1f05a3b04470cac5b8be74851\n"
    },
    {
      "commit": "710e72e64628bfab8111ec3e37744b7d63feca47",
      "tree": "cd33f7d56a666e95a808d4349cc8c71f8adb4a9f",
      "parents": [
        "aaebb71cb5b8a2de1e0121b9d90bb19c3c6e7898"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 17:07:18 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 17:07:18 2023 +0200"
      },
      "message": "Remove @Ignore annotations from test support classes\n\nAt the bazel level treat only *Test.java classes as test classes and\nbuild the rest of the classes under src/test/java/** as a java_library.\n\nChange-Id: I10e418a09892da9700fa1f1a135ebab37e08ab95\n"
    },
    {
      "commit": "aaebb71cb5b8a2de1e0121b9d90bb19c3c6e7898",
      "tree": "84c9e87be5c6f5bec677ded3af87be4a90422e0c",
      "parents": [
        "751109c0ccec296351cd5068368ef819f2e944c6",
        "c51cdb1b891df11b82c602115959206c7af1238c"
      ],
      "author": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 14 14:38:57 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 14 14:38:57 2023 +0000"
      },
      "message": "Merge \"Rename SpannerLifeCycleManager -\u003e DatabaseSchemaCreator\""
    },
    {
      "commit": "751109c0ccec296351cd5068368ef819f2e944c6",
      "tree": "07fecde31e3af0f5a107a95660d6d55f91923d80",
      "parents": [
        "feb9f425ad500592cb284d64c749ff57fdf7ad0d",
        "d64b8c901f6cc9058db8415f0607b88d746fe465"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 14:26:22 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 14 14:26:22 2023 +0000"
      },
      "message": "Merge \"Use GOOGLE_APPLICATION_CREDENTIALS instead of SERVICE_ACCOUNT_KEY_PATH\""
    },
    {
      "commit": "c51cdb1b891df11b82c602115959206c7af1238c",
      "tree": "f39fedca15f5e9e3c7192e295303af55f42209f2",
      "parents": [
        "df2213f66d65f35022c393b777341fc7877e5063"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 14 16:11:00 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 14 16:12:41 2023 +0200"
      },
      "message": "Rename SpannerLifeCycleManager -\u003e DatabaseSchemaCreator\n\nChange-Id: I25ec2c189f708939d62b45833ce2158ebe718ccc\n"
    },
    {
      "commit": "feb9f425ad500592cb284d64c749ff57fdf7ad0d",
      "tree": "63ac9fbc92824800f1c86e0a47b5ea99d6b8b9ac",
      "parents": [
        "df2213f66d65f35022c393b777341fc7877e5063"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 14 16:02:11 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 14 14:04:26 2023 +0000"
      },
      "message": "Add missing backticks in documentation\n\nChange-Id: I87fede197fa5927d796a13152e720559b0ea6d4d\n"
    },
    {
      "commit": "d64b8c901f6cc9058db8415f0607b88d746fe465",
      "tree": "00959994ce71ba8ed4ab3362d0d898cc87e5120b",
      "parents": [
        "df2213f66d65f35022c393b777341fc7877e5063"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 15:58:19 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 16:00:11 2023 +0200"
      },
      "message": "Use GOOGLE_APPLICATION_CREDENTIALS instead of SERVICE_ACCOUNT_KEY_PATH\n\nThe GOOGLE_APPLICATION_CREDENTIALS is a standard env variable name [1]\nso we better stick to the standard and not invent new names for the same\npurpose.\n\n[1] https://cloud.google.com/docs/authentication/application-default-credentials#GAC\n\nChange-Id: I00f495b8b9f2cf275088cb11fc99660fe54fa71a\n"
    },
    {
      "commit": "df2213f66d65f35022c393b777341fc7877e5063",
      "tree": "ab063c39f15d16d0f1d41354e751bc3307a2c4e7",
      "parents": [
        "112e41a97574fb99a5e3fa3db58f1759562d7126",
        "18c915e602317f9a96740c25913417917c01ed0b"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 13:46:52 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 14 13:46:52 2023 +0000"
      },
      "message": "Merge \"Allow to run the tests using real spanner instance\""
    },
    {
      "commit": "18c915e602317f9a96740c25913417917c01ed0b",
      "tree": "e1ff8a5e57e44561f98211721128cafca0ad8568",
      "parents": [
        "01b6eada88e22ef20e0adb9eb48c03b835176989"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 14:12:18 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 14 15:31:34 2023 +0200"
      },
      "message": "Allow to run the tests using real spanner instance\n\nNow one can chose whether to run the tests against a real spanner\ninstance:\n\n  bazelisk test \\\n    --test_env\u003d\u0027SERVICE_ACCOUNT_KEY_PATH\u003d/path/to/the/key.json\u0027 \\\n    --test_env\u003d\u0027SPANNER_INSTANCE\u003dtest-instance\u0027 \\\n    //plugins/@PLUGIN@/...\n\nor using local spanner emulator docker container:\n\n  bazelisk test \\\n    --test_env\u003d\u0027USE_EMULATOR\u003dtrue\u0027 \\\n    //plugins/@PLUGIN@/...\n\nChange-Id: Ic1b172386e2da1b2e8581befaf32ece7bad46e25\n"
    },
    {
      "commit": "112e41a97574fb99a5e3fa3db58f1759562d7126",
      "tree": "93103b0879e91fbcf1abcbd92e386bac922c1c02",
      "parents": [
        "01b6eada88e22ef20e0adb9eb48c03b835176989"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Wed Sep 13 11:21:07 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 14 15:27:09 2023 +0200"
      },
      "message": "Adding concurrent locks/reclaiming locks tests\n\nChange-Id: Ia5b22d1f4fb83c85a2e14de144afcd1f983a7b4e\n"
    },
    {
      "commit": "01b6eada88e22ef20e0adb9eb48c03b835176989",
      "tree": "af1047a57a75f045cb7427a4d36bcc3946afff6b",
      "parents": [
        "aabb32fd935cd9b4971b322970b2d9c3ef9b1484",
        "9d0de234ec7ba95436a711fde37087c3bdbbf373"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@gmail.com",
        "time": "Wed Sep 13 08:48:26 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 13 08:48:26 2023 +0000"
      },
      "message": "Merge \"Use @PLUGIN@ placeholder instead of hardcoded plugin name\""
    },
    {
      "commit": "9d0de234ec7ba95436a711fde37087c3bdbbf373",
      "tree": "6229daf2535dbb828add1f31ded4c2244fe1cb42",
      "parents": [
        "f5f0fb5923e8f3f8466e0330b3e10a7b538c3dfd"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Sep 13 09:55:19 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Sep 13 08:38:06 2023 +0000"
      },
      "message": "Use @PLUGIN@ placeholder instead of hardcoded plugin name\n\nThe @PLUGIN@ and several other macros get resolved at the rendering\ntime [1].\n\n[1] https://gerrit-review.googlesource.com/Documentation/dev-plugins.html#documentation\n\nChange-Id: I2a5bbbc12a5d2610db5bb877fa211c3ea471d7de\n"
    },
    {
      "commit": "aabb32fd935cd9b4971b322970b2d9c3ef9b1484",
      "tree": "779fea1a1e389010ae9c5eaf49f45e75267bedff",
      "parents": [
        "f5f0fb5923e8f3f8466e0330b3e10a7b538c3dfd"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 12 23:36:28 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 12 23:46:12 2023 +0200"
      },
      "message": "Add dependency to net.java.dev.jna:jna:5.13.0\n\nNeeded if testcontainers use RootlessDockerClientProviderStrategy.\n\nChange-Id: I9d0896f58b53cf5c05eeb32c3e9c4f9d89f83393\n"
    },
    {
      "commit": "f5f0fb5923e8f3f8466e0330b3e10a7b538c3dfd",
      "tree": "1f9cb575053b4e322e4ea09254a6eb57d16bfbc1",
      "parents": [
        "4c4e25e9b126dc24382c85e083a61f6b76b8525c"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Tue Sep 12 10:33:28 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Tue Sep 12 11:39:49 2023 +0000"
      },
      "message": "Fix Config Documentation\n\nWe use spanner-refdb.config, not gerrit.config\n\nChange-Id: If5630cb385964bb64b5c28d3cadd4764fceb846e\n"
    },
    {
      "commit": "4c4e25e9b126dc24382c85e083a61f6b76b8525c",
      "tree": "933f042b0b43ebe7067fb27585628c4a9b475af9",
      "parents": [
        "6d53d856dbbb362216d46d58e9d0dee0860310b0"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 07 15:10:26 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Tue Sep 12 13:34:23 2023 +0200"
      },
      "message": "Add tests for Lock implementation\n\nChange-Id: I28317763f14493301e4c539e5f7710183ad19311\n"
    },
    {
      "commit": "6d53d856dbbb362216d46d58e9d0dee0860310b0",
      "tree": "e2e87fc287e01fe5996c178dfa7ee36c9e40ef5c",
      "parents": [
        "ff06af9c50a4272db248ce1e2fb7bddd80086841",
        "05cadeb5915e490bcf7cae2f314cb8bd5388b7b6"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Mon Sep 11 09:00:56 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 11 09:00:56 2023 +0000"
      },
      "message": "Merge \"Use a shared heartbeat thread pool, don\u0027t create one for each lock\""
    },
    {
      "commit": "ff06af9c50a4272db248ce1e2fb7bddd80086841",
      "tree": "15e7af145768bc30a315e6635dbe6345a5523dbe",
      "parents": [
        "abecc8e1951af2c1b334e05a439fd40450d8b4c3",
        "adf999917cecb7d21679416f40f6042558b43194"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Mon Sep 11 09:00:23 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 11 09:00:23 2023 +0000"
      },
      "message": "Merge changes I60b5a6fa,If088f635\n\n* changes:\n  SpannerRefDatabaseTest: use common setUp/tearDown method names\n  SpannerRefDatabaseTest: Use Google truth instead of JUnit assertions\n"
    },
    {
      "commit": "adf999917cecb7d21679416f40f6042558b43194",
      "tree": "52d37d8655d2ce8a376b48f916e0e62d25b56251",
      "parents": [
        "0fe9a4dcc7cb57eb770f1571cf32643276ebbced"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 16:23:44 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 16:23:44 2023 +0200"
      },
      "message": "SpannerRefDatabaseTest: use common setUp/tearDown method names\n\nChange-Id: I60b5a6fa6107d4583d515ca02b63802faf523194\n"
    },
    {
      "commit": "0fe9a4dcc7cb57eb770f1571cf32643276ebbced",
      "tree": "076e7ffc07b909db00cef280b967b1fc9d8a6c83",
      "parents": [
        "9e85b670395f26da8918961733fac271dbed1def"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 16:22:18 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 16:22:18 2023 +0200"
      },
      "message": "SpannerRefDatabaseTest: Use Google truth instead of JUnit assertions\n\nChange-Id: If088f63538ceec3e2bae704c23910f6e3cea7c3b\n"
    },
    {
      "commit": "05cadeb5915e490bcf7cae2f314cb8bd5388b7b6",
      "tree": "43024600814cc59a06275527bd82205e3809b450",
      "parents": [
        "abecc8e1951af2c1b334e05a439fd40450d8b4c3"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 12:48:49 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 13:19:59 2023 +0200"
      },
      "message": "Use a shared heartbeat thread pool, don\u0027t create one for each lock\n\nBefore this change, each instance of the Lock class created a thread\npool of size one to run the heartbeat task. This didn\u0027t scale well as\nthe number of threads needed to maintain the heartbeat of N locks was N.\nThere are Git operations which lock a large number of refs and this\nwould have resulted in the large number of threads maintaining\nheartbeat for each lock.\n\nNow we use a dedicated thread pool of hardcoded size 10. We may make\nthis size configurable in the future if we see a need for that.\n\nChange-Id: Ia657a7a7ab80c5124bba40981e79c281e7381f53\n"
    },
    {
      "commit": "abecc8e1951af2c1b334e05a439fd40450d8b4c3",
      "tree": "7a0e33f84b03194996d24ef118b49a9bb2e37239",
      "parents": [
        "26026613f44cd1c783746e73626fd1177b288260"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 13:12:31 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 13:18:13 2023 +0200"
      },
      "message": "Rename Lock.LockFactory to Lock.Factory\n\nSince the LockFactory is an inner type of the Lock it doesn\u0027t need to\nrepeat the name of the outer class. It is also a common pattern in\nGerrit code base to name inner factory interfaces just Factory.\n\nFurther, simplify the Guice binding of the Lock.Factory as the call to\n\u0027.implements(...)\u0027 is not really required in this case.\n\nChange-Id: I0c723aad011bb84702414450581195d27251e9d3\n"
    },
    {
      "commit": "26026613f44cd1c783746e73626fd1177b288260",
      "tree": "7a8496d106074d713b2179f6c99e8a8935be5c9b",
      "parents": [
        "9e85b670395f26da8918961733fac271dbed1def"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 10:14:07 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Sep 08 10:14:07 2023 +0200"
      },
      "message": "Lock.java: keep the order of fields and their assignments consistent\n\nChange-Id: I1ba554c982470d18ffbbffc04dc8495c098f34d2\n"
    },
    {
      "commit": "9e85b670395f26da8918961733fac271dbed1def",
      "tree": "dd8e124b1ebe7b9996357ef747d9172ba4c72597",
      "parents": [
        "62444a5add26efd7877e5dd870e4e8e93e6a8930"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Tue Sep 05 14:08:12 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Sep 07 16:01:05 2023 +0200"
      },
      "message": "Create SpannerOptions in Module instead of Configuration\n\nRemove unnecessary Configuration class, move functionality to Module.\nUpdate tests to function with aforementioned change, no need for faux\nConfiguration any more.\n\nChange-Id: I39b52ed74e42eeff0be973279c0a1510848b4354\n"
    },
    {
      "commit": "62444a5add26efd7877e5dd870e4e8e93e6a8930",
      "tree": "09e8b37ddc1e678ec4c790fbac3768b07908461b",
      "parents": [
        "c2d0b0f90e09fe628bb7703da5c8354f06d4c6a4"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Sep 05 13:07:33 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Sep 07 15:26:29 2023 +0200"
      },
      "message": "Fix ErrorProne reported error [EmptyBlockTag]\n\nChange-Id: I1e6666a241d3af43f4e1dd9f00bab0899d529b61\n"
    },
    {
      "commit": "c2d0b0f90e09fe628bb7703da5c8354f06d4c6a4",
      "tree": "bfa3505575aec93bac176055ee91e2309e98a077",
      "parents": [
        "9a1762b46e3d0da039f7a8d9606574844cde1588",
        "176014e91460607f01e367cee7acfef8d4dd2602"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@gmail.com",
        "time": "Thu Sep 07 13:12:29 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 07 13:12:29 2023 +0000"
      },
      "message": "Merge \"Use single-jar-with-dependencies jar of the Cloud Spanner JDBC driver\""
    },
    {
      "commit": "176014e91460607f01e367cee7acfef8d4dd2602",
      "tree": "4b10935a165e640b041dd5c2349946ad3ec34677",
      "parents": [
        "3ef15345ce4c45ff572550666556ebb7a64f6d73"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Tue Sep 05 11:19:17 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 07 13:08:04 2023 +0000"
      },
      "message": "Use single-jar-with-dependencies jar of the Cloud Spanner JDBC driver\n\nIn lieu of the fifty-odd individual dependencies previously required.\n\nChange-Id: I253e97d62fb3c49edb2879159db9356b83340637\n"
    },
    {
      "commit": "9a1762b46e3d0da039f7a8d9606574844cde1588",
      "tree": "0d6b8643dec5766635bbf39b1ea258aaa6e86793",
      "parents": [
        "3ef15345ce4c45ff572550666556ebb7a64f6d73"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Sep 05 13:21:44 2023 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Sep 07 14:49:51 2023 +0200"
      },
      "message": "SpannerEmulatorContainer: remove unused @Inject annotation\n\nInstances of this class are created explicitly, no Guice injection is\nused.\n\nChange-Id: If6734a114a8f17fc28b954f452000b9c4e2d7d38\n"
    },
    {
      "commit": "3ef15345ce4c45ff572550666556ebb7a64f6d73",
      "tree": "b9df470c4652cf0a8f3f20de8d97a123fcb82552",
      "parents": [
        "10da41d236c44f26fcf75e2f8cb116e47f69f4a5"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Aug 28 09:24:43 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Sep 07 14:16:55 2023 +0200"
      },
      "message": "Update tests and configuration for consistency\n\nAll tests run with updated configuration. Additionally, configuration\nnow uses constants for all configuration keys.\n\nChange-Id: I244709fac9ea133e59b90369e2e97547af9296fc\n"
    },
    {
      "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"
    },
    {
      "commit": "93b9cc185a674b17d3dde1bb356ea2f177b80d12",
      "tree": "69a2a9c9af2901332a417b8c48128413f8163c93",
      "parents": [
        "d5725dcce504c5e7dd9ee323435f296327001ba1"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 06 00:28:08 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Sep 07 11:02:32 2023 +0200"
      },
      "message": "Add Jenkinsfile for plugin verification\n\nChange-Id: I657e5f33f41c3b9b9b449437c764d4bd0f38a6bd\n"
    },
    {
      "commit": "d5725dcce504c5e7dd9ee323435f296327001ba1",
      "tree": "a826f5d0333a48024ed849c71b38ffe7fc1ef13e",
      "parents": [
        "ee4764189ad46fc01615322d4921662fccf598f1"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 06 15:57:50 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Sep 07 11:02:28 2023 +0200"
      },
      "message": "Improve running spanner emulator in docker\n\n- use GCloud testcontainer module [1] instead of generic container\n- use SpannerEmulatorContainer [2] from the GCloud testcontainer module\n- update testcontainers to 1.9.0\n- rename the class preparing a database for SpannerGlobalRefdatabase to\n  EmulatedSpannerRefDatabase\n\n[1] https://java.testcontainers.org/modules/gcloud/\n[2] https://java.testcontainers.org/modules/gcloud/#spanner\n\nChange-Id: I14decdce8c2d6bcf9a0af14f676fb530b23c97d5\n"
    },
    {
      "commit": "ee4764189ad46fc01615322d4921662fccf598f1",
      "tree": "604cffc66cf8a704048c91d6f956e43a4cfdf3f1",
      "parents": [
        "b96f88497dc6ac1c056f7e0a9b8b9495b2e2849c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 06 08:51:44 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Sep 06 08:51:44 2023 +0200"
      },
      "message": "Format code using google-java-format\n\nChange-Id: Ibb4f0c32ad90ed6ff09f101d683df49c6c1b4d2e\n"
    },
    {
      "commit": "b96f88497dc6ac1c056f7e0a9b8b9495b2e2849c",
      "tree": "5ac0ca7ae3174fe34e14f802ef57c1067ee15cd8",
      "parents": [
        "633bd13d1915a17bddd99e6891c36546d72555ae"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 05 20:28:31 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 05 20:28:31 2023 +0200"
      },
      "message": "Declare IOException thrown by #createEmulatorConfiguration\n\nChange-Id: I9fdb4740dab81cf84f871202f9a7999e0a50f0e2\n"
    },
    {
      "commit": "633bd13d1915a17bddd99e6891c36546d72555ae",
      "tree": "d7dbb4cb77c2e5c909c5388bab123a3e5940a322",
      "parents": [
        "c007a8d390628c99ed7bf6102809a5333419b969"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu Aug 03 18:17:25 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Sep 04 11:57:14 2023 +0000"
      },
      "message": "Remove Unnecessary Code/Add Code Reuse\n\ngetSpannerInstance() is unused and unnecessary.\nAdditionally, the existence check can re-use the get()\nmethod.\n\nChange-Id: I0a2b7b0fdc7173b22ce611670d8196a26c059ec4\n"
    },
    {
      "commit": "c007a8d390628c99ed7bf6102809a5333419b969",
      "tree": "a60aa8dc9dcd79015b0ecd6e1bbe65981a61111f",
      "parents": [
        "0bba8a72685f85d943eaef9e76899c6616117187"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Tue Jul 11 11:08:03 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Sep 04 13:56:12 2023 +0200"
      },
      "message": "Add configuration for Google credentials\n\nUpdate libraries to allow use of GoogleCredentials.\n\nChange-Id: Ic243b0a950955bae891210e30cb8975768b6743b\n"
    },
    {
      "commit": "0bba8a72685f85d943eaef9e76899c6616117187",
      "tree": "a7119d9a9f566d55b067eb21579e804b1e167087",
      "parents": [
        "f102d2fc0f42f4673ccb05d2057e0a52a40c1219"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Jul 28 21:34:12 2023 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Aug 01 23:11:09 2023 +0200"
      },
      "message": "Test spanner-refdb using spanner emulator testcontainer\n\nImplement a SpannerEmulatorContainer for running the upstream Spanner\nemulator container for tests:\n- start the emulator container\n- create a Spanner instance\n- create a Spanner database\n- use a separate plugin config file spanner-refdb.config to configure\n  the plugin\n- mock the PluginConfigFactory so that we can start the plugin from test\n  code without loading the plugin in a running Gerrit server\n- create the SpannerRefDatabase schema\n- implement first tests\n\nChange-Id: I9290c4458299aa27bcf6e1d036b2c2245d948ba3\n"
    },
    {
      "commit": "f102d2fc0f42f4673ccb05d2057e0a52a40c1219",
      "tree": "b89251e626891f1f35d6b2082f3b9d2cf096da8c",
      "parents": [
        "bf159e9a1fe512801d1769489df8ceeface3b22c"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jul 18 17:27:03 2023 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Mon Jul 31 14:06:25 2023 +0000"
      },
      "message": "Initial implementation of global-refdb for Spanner\n\nIt builds in-tree and uses the Spanner Java client to connect with a\nCloud Spanner emulator instance. If a refs table does not exist in\nthe given Spanner instance, the plugin creates one.\n\nChange-Id: I6c9cd6dd0d6afad4e77bde99dd20b22b638263b9\n"
    },
    {
      "commit": "bf159e9a1fe512801d1769489df8ceeface3b22c",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@gmail.com",
        "time": "Fri Mar 10 09:50:33 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 10 09:50:33 2023 +0000"
      },
      "message": "Initial empty repository\n"
    }
  ]
}
