)]}'
{
  "log": [
    {
      "commit": "90e1b7b59085293b34f711cf2e85c46b35eea1c9",
      "tree": "3647a08bda87797fdf2b3157c382249796d636e5",
      "parents": [
        "53aacfceb2a7b4d05ef51d3ca74b00fabd212186"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 17 07:19:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 07:19:30 2026 +0800"
      },
      "message": "Bump org.assertj:assertj-core from 3.23.1 to 3.27.7 (#1285)\n\nBumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.23.1 to 3.27.7.\n- [Release notes](https://github.com/assertj/assertj/releases)\n- [Commits](https://github.com/assertj/assertj/compare/assertj-core-3.23.1...assertj-build-3.27.7)\n\n---\nupdated-dependencies:\n- dependency-name: org.assertj:assertj-core\n  dependency-version: 3.27.7\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "53aacfceb2a7b4d05ef51d3ca74b00fabd212186",
      "tree": "5967c431ddbbcdb6ba9b30cc130c953e36201f9c",
      "parents": [
        "f18f0acf432231ece5dcd179020c4951dbe49803"
      ],
      "author": {
        "name": "abhisranjan",
        "email": "abhisranjan@gmail.com",
        "time": "Tue Mar 17 04:40:06 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 07:10:06 2026 +0800"
      },
      "message": "build: Update ZooKeeper to 3.9.4 to resolve vulnerability (#1281)"
    },
    {
      "commit": "f18f0acf432231ece5dcd179020c4951dbe49803",
      "tree": "dec04204833f12f065792ab65d6f4d6e0de78e81",
      "parents": [
        "3bc3ea1904c62b7e3e0b94a079a13fd88790df1b"
      ],
      "author": {
        "name": "Istvan Fajth",
        "email": "fapifta@gmail.com",
        "time": "Thu Dec 18 05:13:10 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 18 12:13:10 2025 +0800"
      },
      "message": "GH-1277: SafeNotifyService threads leak in CuratorFrameWorkImpl (#1278)\n\nCURATOR-495 introduced a new runSafeService field in CuratorFrameworkImpl class, and this field is\neither initialized by an external ExecutorService via the builder, or it is created internally\nwithin the class.\n\nIn the CuratorFrameworkImpl#close method though, this Executor is never closed, so the threads\nthat are opened by the instances are lingering there until the VM is closed by default.\nWorse, if someone specifies a thread factory to the framework implementation via the builder that\nproduces non-daemon threads, the VM never exits due to the unstopped single thread executor.\n\nFixes #1277."
    },
    {
      "commit": "3bc3ea1904c62b7e3e0b94a079a13fd88790df1b",
      "tree": "7dba2ff3de9e38c1b4f9a462422b8c1abe068235",
      "parents": [
        "0b549b7ef4c56cf4a2f30393ab31a4d67c493327"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Aug 28 01:57:49 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 28 01:57:49 2025 +0800"
      },
      "message": "Add builder to construct InstanceSpec (#1275)\n\nIt is hard for us to know what does\n`new InstanceSpec(null, -1, -1, -1, true, -1, -1, -1)` means now.\n\nCloses #1222."
    },
    {
      "commit": "0b549b7ef4c56cf4a2f30393ab31a4d67c493327",
      "tree": "559bfdd260f91a15ea067739cc596fe6d2853a61",
      "parents": [
        "28291442ebd843c474533be4894462ae317d9a5c"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Tue Aug 19 21:00:32 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 19 21:00:32 2025 +0800"
      },
      "message": "Enforce string values in InstanceSpec\u0027s custom properties (#1274)\n\n`InstanceSpec`\u0027s `customProperties` will be fed to `Properties` in\n`QuorumConfigBuilder::buildConfigProperties`, so we have to make sure it\ncontains only string values.\n\nInstead of `ClassCastException` in read phase, this pr complains in\n`InstanceSpec` construction phase.\n\nWe could deprecate these constructors in next step by introducing builder\nfor `InstanceSpec`(#1222).\n\nFixes #1178, CURATOR-663."
    },
    {
      "commit": "28291442ebd843c474533be4894462ae317d9a5c",
      "tree": "cd2df1f49d9a87ed243f53d80f90a691ecdfef86",
      "parents": [
        "37c7a713984ef83413c695aee352af2af6daa974"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Jul 04 13:49:48 2025 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Jul 04 13:49:48 2025 +0800"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "37c7a713984ef83413c695aee352af2af6daa974",
      "tree": "66dbe5e54fdd9551de91c4e3de0a026344a39b0e",
      "parents": [
        "712306034789b5be90de62fac9bc8e8e85920286"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Jul 04 13:49:35 2025 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Jul 04 13:49:35 2025 +0800"
      },
      "message": "[maven-release-plugin] prepare release apache-curator-5.9.0\n"
    },
    {
      "commit": "712306034789b5be90de62fac9bc8e8e85920286",
      "tree": "76045ede0e2ec067d93a48c65d49019a1c689f6c",
      "parents": [
        "fcd708fb3aa99d8c30e8ad14684afc1fe34173d1"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Jul 04 10:59:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 10:59:59 2025 +0800"
      },
      "message": "Fix flaky TestReadOnly.testConnectionStateNewClient in ZooKeeper 3.9.3 (#1272)\n\nZOOKEEPER-4508 reports `SessionExpired` after exhausting session timeout\nin session establishment instead of endless retries. It is easy to get\nin this now with small session timeout.\n\nBesides above, `sessionTimeoutMs` should bigger than `connectionTimeoutMs`,\nwhile default `Timing::session()` and `Timing::connection()` are `2s` and\n`10s` respectively now.\n\n```\n// from CuratorZookeeperClient\n\nif (sessionTimeoutMs \u003c connectionTimeoutMs) {\n    log.warn(\n            \"session timeout [{}] is less than connection timeout [{}]\", sessionTimeoutMs, connectionTimeoutMs);\n}\n```"
    },
    {
      "commit": "fcd708fb3aa99d8c30e8ad14684afc1fe34173d1",
      "tree": "33638df08b332aae23c021b146667b9c43167dd3",
      "parents": [
        "8f43c7561f8f96389265fcd55f923a7cb53f8ce6"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Jul 04 10:59:33 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 10:59:33 2025 +0800"
      },
      "message": "Fix flaky tests in TestReconfiguration (#1271)\n\n`testAdd`, `testAddAsync` and `testAddAndRemove` asserts that\n`EnsembleProvider::setConnectionString` is updated with new connect\nstring after ensemble changed. Since the update is asynchronous, so they\nshould wait before assertion."
    },
    {
      "commit": "8f43c7561f8f96389265fcd55f923a7cb53f8ce6",
      "tree": "6931d7eced45d7441673d27d578c46b4e5dc0da2",
      "parents": [
        "bc30bb25d7e7bbb2e0f85667477f200dd050d69f"
      ],
      "author": {
        "name": "aminadinari19",
        "email": "71690455+aminadinari19@users.noreply.github.com",
        "time": "Mon Jun 23 05:29:47 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 23 11:29:47 2025 +0800"
      },
      "message": "GH-1251: Upgrade Zookeeper to 3.9.3 (#1252)\n\nCloses #1251.\n\nCo-authored-by: Amina Dinari \u003cadinari@cloudera.com\u003e\nCo-authored-by: Kezhu Wang \u003ckezhuw@apache.org\u003e"
    },
    {
      "commit": "bc30bb25d7e7bbb2e0f85667477f200dd050d69f",
      "tree": "e318dd5f388a5b604abc0fccaf3571779bc04217",
      "parents": [
        "940217306cbacad6215ca02e741bee5942afd606"
      ],
      "author": {
        "name": "Norbert Meszaros",
        "email": "meszinorbi2002@gmail.com",
        "time": "Tue Jun 17 01:39:19 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 17 07:39:19 2025 +0800"
      },
      "message": "GH-1266. Bump jackson-core from 2.13.5 to 2.18.1 (#1265)\n\n"
    },
    {
      "commit": "940217306cbacad6215ca02e741bee5942afd606",
      "tree": "6e04673515ac499209cbd509f1f7687bb1808397",
      "parents": [
        "57cf5135aa7cf2e5e37f3147b3d702f06b15ccfc"
      ],
      "author": {
        "name": "Norbert Meszaros",
        "email": "meszinorbi2002@gmail.com",
        "time": "Tue Jun 17 01:37:51 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 17 07:37:51 2025 +0800"
      },
      "message": "GH-1269: Bump Jetty to 9.4.57.v20241219 (#1270)\n\n"
    },
    {
      "commit": "57cf5135aa7cf2e5e37f3147b3d702f06b15ccfc",
      "tree": "369fee95f5e719050e0ae0480d08fbed54f3bad1",
      "parents": [
        "bac8ba9bab5e69f4531ccb90164eec39d2570eb5"
      ],
      "author": {
        "name": "chevaris",
        "email": "chevaris72@gmail.com",
        "time": "Mon Apr 21 12:24:30 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 21 18:24:30 2025 +0800"
      },
      "message": "FIx PersistentTTLNode thread leak (#1264)\n\nFixes #1263."
    },
    {
      "commit": "bac8ba9bab5e69f4531ccb90164eec39d2570eb5",
      "tree": "32648bdee25f27318c9faa2347a267ab84ca8d85",
      "parents": [
        "3f631ac866d0dd119be3724a7c73b4487abc8dfa"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sat Apr 12 19:26:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 12 19:26:29 2025 +0800"
      },
      "message": "Fix PersistentWatcher not working with NamespaceFacade (#1262)\n\n`NamespaceFacade` does not support `getCuratorListenable` while #520 use\nit to listen for `CuratorEventType.CLOSING` to fix CURATOR-729.\n\nThis commit exports `CuratorFrameworkBase::client` to retrieve\nunderlying framework client to listen for for `CuratorEventType.CLOSING`.\n\nFixes #1259."
    },
    {
      "commit": "3f631ac866d0dd119be3724a7c73b4487abc8dfa",
      "tree": "94502bf65b41ccd14a5a4734d7169306047bae8f",
      "parents": [
        "1bd8450c6cfadb2267e22c8018aaa32ca22cc472"
      ],
      "author": {
        "name": "chevaris",
        "email": "chevaris72@gmail.com",
        "time": "Tue Apr 08 14:15:45 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 08 20:15:45 2025 +0800"
      },
      "message": "Fix PersistentTtlNode not deleted if touch node is never created (#1260)\n\nCloses #1258.\n\nSee also CURATOR-545, ZOOKEEPER-3546(apache/zookeeper#1138)."
    },
    {
      "commit": "1bd8450c6cfadb2267e22c8018aaa32ca22cc472",
      "tree": "402c416a60b18a495c1d405735e8c66f292629e7",
      "parents": [
        "e4a47562799de085c69a9dafa8d84a2ef54edc61"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Tue Apr 08 14:44:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 08 14:44:59 2025 +0800"
      },
      "message": "Document read effects after SharedValue.setValue (#1261)\n\nCloses #1254."
    },
    {
      "commit": "e4a47562799de085c69a9dafa8d84a2ef54edc61",
      "tree": "b71eac5763b5c6d60043188c01cc84f1e501b86c",
      "parents": [
        "190cd654a623d968d52ddc4a05ca5396bc6fa562"
      ],
      "author": {
        "name": "Luke Kot-Zaniewski",
        "email": "lkotzaniewsk@bloomberg.net",
        "time": "Wed Mar 26 07:10:32 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 26 19:10:32 2025 +0800"
      },
      "message": "GH 1256. Return all descendants of basePath for CachedModeledFramework::list (#1257)\n\n#1250 introduced a bug where CachedModeledFramework::list is no longer returning all descendants of the basePath of the underlying cache and is instead returning the direct children of the current path of the client."
    },
    {
      "commit": "190cd654a623d968d52ddc4a05ca5396bc6fa562",
      "tree": "9ada3ef8d5d6f1ff6bc0ec545a66c3822b71eabd",
      "parents": [
        "b9561fb8d5cde70cb508e1136d9dfb6852aecc86"
      ],
      "author": {
        "name": "Luke Kot-Zaniewski",
        "email": "lucaskzmilford12@gmail.com",
        "time": "Fri Mar 21 04:21:23 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 21 16:21:23 2025 +0800"
      },
      "message": "GH-1246. Asynchronously initialize cache before reading II (#1250)\n\nThis closes #1246 and closes #1247."
    },
    {
      "commit": "b9561fb8d5cde70cb508e1136d9dfb6852aecc86",
      "tree": "ec36cfedabf7a2354277174ce0606cdda58ef1f9",
      "parents": [
        "093cbcfc377dcc10ac7267ae706ca9615b013a5c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Mar 19 18:45:49 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 19 18:45:49 2025 +0800"
      },
      "message": "chore: fixup logging and other style issues (#1255)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "093cbcfc377dcc10ac7267ae706ca9615b013a5c",
      "tree": "da53be7d906be3d852518bfd6f06e2132584d7b1",
      "parents": [
        "e26289665312e3962b5844109bbbd6db75318d7e"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Mar 02 11:49:47 2025 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Mar 19 07:38:27 2025 +0800"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "e26289665312e3962b5844109bbbd6db75318d7e",
      "tree": "aa9a26bb2a9f3f743a8d89d75e08a94b33721d28",
      "parents": [
        "e7dc536eeedf81edefedab688efd75cab97d000e"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Mar 02 11:49:46 2025 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Mar 19 07:38:27 2025 +0800"
      },
      "message": "[maven-release-plugin] prepare release apache-curator-5.8.0\n"
    },
    {
      "commit": "e7dc536eeedf81edefedab688efd75cab97d000e",
      "tree": "c81a69f013562b69cbb451fc6a47c817cdbab2bc",
      "parents": [
        "3828d99261efbd760f3ec50d215c80c2bc42bbd8"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Mar 19 07:14:42 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 19 07:14:42 2025 +0800"
      },
      "message": "chore: trun on GitHub Discussions"
    },
    {
      "commit": "3828d99261efbd760f3ec50d215c80c2bc42bbd8",
      "tree": "7d62d5925c0de7a3200d1a4a6bea577b1d343eed",
      "parents": [
        "f3e129cc0f8901c69409c79f0f03fecb7d1dddba"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Mar 07 22:48:26 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 07 22:48:26 2025 +0800"
      },
      "message": "chore: Reflect the Issue Tracker change"
    },
    {
      "commit": "f3e129cc0f8901c69409c79f0f03fecb7d1dddba",
      "tree": "8f0190479b8a60f617609d07052ad159cea4a918",
      "parents": [
        "0bb3adf37877edd32c672c79fface4d748d3ed1a"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Feb 28 13:05:35 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 28 13:05:35 2025 +0800"
      },
      "message": "chore: Send Issues update to commits@ list"
    },
    {
      "commit": "0bb3adf37877edd32c672c79fface4d748d3ed1a",
      "tree": "2ce80762bc3b48717cdfae33d8ad428aefc98b03",
      "parents": [
        "f0646f93c54a14546afcd2ff7ebca78546154fe9"
      ],
      "author": {
        "name": "zbz",
        "email": "zhao_abc_123@163.com",
        "time": "Fri Feb 28 13:01:45 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 28 13:01:45 2025 +0800"
      },
      "message": "GH-1248. Fix bug of useSessionTimeoutMs overflow (#1249)\n\nCo-authored-by: 赵宝珠 \u003czhaobaozhu@xiaohongshu.com\u003e"
    },
    {
      "commit": "f0646f93c54a14546afcd2ff7ebca78546154fe9",
      "tree": "3a783f33b78ce2e3421399059302d7ec6097df72",
      "parents": [
        "fb78e23d5228c7c5c850a2aa638c7e11caa931e9"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Mon Feb 17 09:03:32 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 17 09:03:32 2025 +0800"
      },
      "message": "CURATOR-718: Refactor CuratorFramework inheritance hierarchy by composing functionalities (#517)\n\n* CURATOR-718: Refactor CuratorFramework inheritance hierarchy by composing functionalities\r\n\r\nCurrently, the `CuratorFrameworkImpl` hierarchy is neither simple nor\r\ncomposable.\r\n\r\nIdeally, there should be only one instance of `CuratorFrameworkImpl`. Additional functionalities should be added by intercepting methods on purpose, but not by cloning through `CuratorFrameworkImpl(CuratorFrameworkImpl parent)`.\r\n\r\nWe could take CURATOR-626 and CURATOR-710 as lessons to know how brittle the current hierarchy.\r\n\r\n* fixup! CURATOR-718: Refactor CuratorFramework inheritance hierarchy by composing functionalities\r\n\r\nNotable changes to the last review:\r\n\r\n1. Rename `InternalCuratorFramework` to `CuratorFrameworkBase`.\r\n2. Make `DelegatingCuratorFramework` `abstract` and package `private`.\r\n3. Move `start`/`close` from `DelegatingCuratorFramework` to subclasses."
    },
    {
      "commit": "fb78e23d5228c7c5c850a2aa638c7e11caa931e9",
      "tree": "767d59a0471a4346ae3db1a3bc1bc4d8ac0653ca",
      "parents": [
        "8eb6f9ae382059b216876112d6c3f76e824e379d"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sun Jan 19 18:18:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 19 18:18:54 2025 +0800"
      },
      "message": "CURATOR-710: Fix leaking watch in EnsembleTracker (#508)\n\nCURATOR-667(#474) fixes asynchronous event path for `getConfig` to\r\n\"/zookeeper/config\" by using `CuratorFramework::usingNamespace(null)` to\r\nfetch data.\r\n\r\nIt causes watcher not registering to possible `WatcherRemovalManager`,\r\nso leaking in `WatcherRemoveCuratorFramework::removeWatchers`.\r\n\r\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\r\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "8eb6f9ae382059b216876112d6c3f76e824e379d",
      "tree": "f491d5ea9e6d0068c694dc9f0f1a23a16bf455af",
      "parents": [
        "914f2f7d1e395e623a9351ff8bbe5e951e7bdfd0"
      ],
      "author": {
        "name": "Houston Putman",
        "email": "houston@apache.org",
        "time": "Thu Jan 16 22:50:16 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 17 12:50:16 2025 +0800"
      },
      "message": "CURATOR-725: Allow for global compression (#512)\n\n"
    },
    {
      "commit": "914f2f7d1e395e623a9351ff8bbe5e951e7bdfd0",
      "tree": "1e10825d899676a59dc1e8603f354c6b9f47534a",
      "parents": [
        "3ccbad7c3684f7b680af45b72a3c9b34d0ad0b71"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Jan 16 22:04:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 16 22:04:31 2025 +0800"
      },
      "message": "CURATOR-729: Fix PersistentWatcher dead loop after curator closed (#520)\n\nThe dead loop is multifold:\r\n1. `CuratorFramework::watchers` does not check `CuratorFrameworkState`\r\n   as `getData` or others do.\r\n2. `PersistentWatcher` loops itself through `reset` in `BackgroundCallback`.\r\n3. Callback in `inBackground(callback).forPath(path)` is invoked\r\n   synchronously.\r\n\r\nThis commit enforces `CuratorFrameworkState` checking also to `watchers`,\r\n`watches`, `sync`, `reconfig` and `getConfig`.\r\n\r\nAdditionally, this commit will issue `KeeperState.Closed` to listeners\r\nof `PersistentWatcher` when curator get closed. This is not required to\r\nfix CURATOR-729, but will make the closing behavior consistent with\r\nZooKeeper. Also, I think it is good for asynchronous `Watcher`.\r\n\r\nRefs: CURATOR-529, CURATOR-673"
    },
    {
      "commit": "3ccbad7c3684f7b680af45b72a3c9b34d0ad0b71",
      "tree": "3446d7fe47d32990bc6f8d05617a2f657ff2a1b7",
      "parents": [
        "8bbcdbf9bc6989d0aad1a4be8b2254fbff37766a"
      ],
      "author": {
        "name": "Clay Johnson",
        "email": "cjohnson@gradle.com",
        "time": "Wed Jan 15 06:59:10 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 15 20:59:10 2025 +0800"
      },
      "message": "[CURATOR-730] Publish build scans to develocity.apache.org (#521)\n\n"
    },
    {
      "commit": "8bbcdbf9bc6989d0aad1a4be8b2254fbff37766a",
      "tree": "da21866518356d7b4a6c12351877fdf2622fec03",
      "parents": [
        "476268a68d307b6fa989a5314eacd9345bedfc58"
      ],
      "author": {
        "name": "Filipe Roque",
        "email": "froque@premium-minds.com",
        "time": "Fri Jan 10 02:32:18 2025 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 10 10:32:18 2025 +0800"
      },
      "message": "[CURATOR-721] Upgrade Guava Listenablefuture (#509)\n\nThis removes duplicate class ListenableFuture.\r\n\r\nSee more at https://github.com/google/guava/issues/7385"
    },
    {
      "commit": "476268a68d307b6fa989a5314eacd9345bedfc58",
      "tree": "6def0a5be30a502d1bf4ff56f0a2d3c16acbe2ab",
      "parents": [
        "bdf240202a02436aca698be91e38768515e6b6c8"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Jan 09 10:18:44 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 09 10:18:44 2025 +0800"
      },
      "message": "CURATOR-728: Not issue ZooKeeper::create if possible in ZkPaths::mkdirs (#518)\n\n`ZkPaths::mkdir(\"/bar/foo\")` will not run into `NoAuthException` if\r\n\"/bar/foo\" exists, and we have `READ` permission to \"/bar/foo\" but not\r\n`CREATE` permission to \"/bar\"."
    },
    {
      "commit": "bdf240202a02436aca698be91e38768515e6b6c8",
      "tree": "5348e86321367dcce1714f8c22c0ee9e0f228210",
      "parents": [
        "0d6e457d92fec26c0e40b43633881dd509fe5a0a"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Jan 08 20:36:22 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 08 20:36:22 2025 +0800"
      },
      "message": "chore: Enable GitHub Issues (#519)\n\n"
    },
    {
      "commit": "0d6e457d92fec26c0e40b43633881dd509fe5a0a",
      "tree": "068bb7d58e04629d1a912ad1d7f7c15cbc9a1a2c",
      "parents": [
        "6932a1879aebd0016be251675fb84572d6017220"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Wed Jan 01 14:45:23 2025 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Wed Jan 01 14:45:23 2025 +0800"
      },
      "message": "hotfix: fix comment typo introduced by previous hotfix commit\n"
    },
    {
      "commit": "6932a1879aebd0016be251675fb84572d6017220",
      "tree": "fa0a7464ca54afc9da848c615bec51ba0fcb26f1",
      "parents": [
        "dd679362cad57f5f6df3963496d5fc1e4f342049"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Mon Dec 30 23:07:25 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 30 23:07:25 2024 +0800"
      },
      "message": "hotfix: build scan rejected by ge.apache.org (#516)\n\n"
    },
    {
      "commit": "dd679362cad57f5f6df3963496d5fc1e4f342049",
      "tree": "49ad6c233da62442d1a0748d4dc9d8225ffc9b07",
      "parents": [
        "eb9912469901e0a05f921a1cb24c51a9cd2dc57c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Dec 22 04:29:41 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 22 04:29:41 2024 +0800"
      },
      "message": "CURATOR-724. Fix LeaderLatch recover on reconnected and missing leaderPath (#515)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "eb9912469901e0a05f921a1cb24c51a9cd2dc57c",
      "tree": "30a9d0e317923ecf515d68807a2c51deaefdb8f8",
      "parents": [
        "ad1979520a923cc6ad3e24fc99a509b36338c5eb"
      ],
      "author": {
        "name": "Houston Putman",
        "email": "houston@apache.org",
        "time": "Fri Dec 20 00:16:10 2024 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 20 08:16:10 2024 +0800"
      },
      "message": "CURATOR-726: Improve tracing for MultiTransaction and GetChildren (#513)\n\n"
    },
    {
      "commit": "ad1979520a923cc6ad3e24fc99a509b36338c5eb",
      "tree": "6a26a492a1d1317f48e62b109c6e927b8b6da294",
      "parents": [
        "72fd977eec61e66a718430a49e63eb71f9d146ef"
      ],
      "author": {
        "name": "Houston Putman",
        "email": "houstonputman@gmail.com",
        "time": "Thu Dec 12 06:02:36 2024 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 12 13:02:36 2024 +0100"
      },
      "message": "CURATOR-719: Fix orSetData for parallel create calls (#510)\n\n"
    },
    {
      "commit": "72fd977eec61e66a718430a49e63eb71f9d146ef",
      "tree": "5aeab454f93dc58ddef68e5e6ea6ebbc9dc4dc1a",
      "parents": [
        "6a27ff0a17df9ecee994ed06acfc2de6cbde58cf"
      ],
      "author": {
        "name": "Houston Putman",
        "email": "houstonputman@gmail.com",
        "time": "Thu Dec 12 01:39:26 2024 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 12 08:39:26 2024 +0100"
      },
      "message": "CURATOR-720: Stop retry if client is closed (#511)\n\n"
    },
    {
      "commit": "6a27ff0a17df9ecee994ed06acfc2de6cbde58cf",
      "tree": "174db59eea6fc06b1226040e391f8ff9fcfb8de4",
      "parents": [
        "07583f8d2cd562e19ddcbf89d5deec902e55214b"
      ],
      "author": {
        "name": "Philipp Dolif",
        "email": "52791955+pdolif@users.noreply.github.com",
        "time": "Fri Oct 18 17:37:14 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 18 23:37:14 2024 +0800"
      },
      "message": "CURATOR-717: Fix typo in CuratorCache Javadoc (#507)\n\n"
    },
    {
      "commit": "07583f8d2cd562e19ddcbf89d5deec902e55214b",
      "tree": "c0dc720f56f797418990a11a4a83dc0e13435410",
      "parents": [
        "a8b4dc3f083849786463de9e8c05d11daa5bc225"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sun Oct 13 18:52:46 2024 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sun Oct 13 18:52:46 2024 +0800"
      },
      "message": "Prepare next development iteration\n"
    },
    {
      "commit": "a8b4dc3f083849786463de9e8c05d11daa5bc225",
      "tree": "92e90f7634e3b4bbcc51cdcd2b4315797d036320",
      "parents": [
        "9fe79d81a8c5f2484bc29087024b5d65c8fba37f"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Sep 26 22:28:57 2024 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Sep 26 22:28:57 2024 +0800"
      },
      "message": "[maven-release-plugin] prepare release apache-curator-5.7.1\n"
    },
    {
      "commit": "9fe79d81a8c5f2484bc29087024b5d65c8fba37f",
      "tree": "3664be5f3af620ef71d41c98ff298b86ce933f65",
      "parents": [
        "782696aec17791e2097e2e8df472a7a167fdd743"
      ],
      "author": {
        "name": "Pablo Francisco Pérez Hidalgo",
        "email": "contact@pablofranciscoperez.info",
        "time": "Thu Sep 12 17:12:06 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 12 23:12:06 2024 +0800"
      },
      "message": "CURATOR-715: Check node existence bottom up in ZkPaths::mkdirs (#506)\n\nZOOKEEPER-2590 enforces read ACL permission for check(). \r\n\r\nWhen creating parents if needed, Apache Curator client checks the existence\r\nof all nodes in the path from the root node to the created one. However,\r\nthis is not necessary, it is enough to check the existence of the nodes\r\nbetween the new node and the first existing ancestor.\r\n\r\nThere are use cases where the first levels of a sub-tree are protected against\r\nread through ACLs. The current implementation makes it impossible to use\r\n`creatingParentsIfNeeded`.\r\n\r\nThis pr also bump ZooKeeper to 3.9.2 which ZOOKEEPER-2590 is shipped."
    },
    {
      "commit": "782696aec17791e2097e2e8df472a7a167fdd743",
      "tree": "a7e4d3fac69c38808f5ad90df7ce8a9606d95aca",
      "parents": [
        "eeee4c63be6e2377ab9fa8a70f9406dc410ee7d2"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Wed Sep 11 21:03:23 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 11 15:03:23 2024 +0200"
      },
      "message": "CURATOR-714: Assert that namespace paths are created using CuratorFramework\u0027s ACLProvider (#505)\n\nCURATOR-221 reported that namespace paths are created with no ACL.\r\nThough, I belive that it should be fixed by CURATOR-222. It should still\r\nbe a good to write tests to assert that."
    },
    {
      "commit": "eeee4c63be6e2377ab9fa8a70f9406dc410ee7d2",
      "tree": "000f7a73b7868496a55ec5e2f98f4c6e8aed35d5",
      "parents": [
        "e221fbaeee495c21f4d68da487e60a2afb51b9b1"
      ],
      "author": {
        "name": "shalk(xiao kun)",
        "email": "xshalk@163.com",
        "time": "Sat Jun 15 13:22:56 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 15 13:22:56 2024 +0800"
      },
      "message": "CURATOR-709. add .git-blame-ignore-revs (#503)\n\n"
    },
    {
      "commit": "e221fbaeee495c21f4d68da487e60a2afb51b9b1",
      "tree": "f4c0158af02abcb0fdf5a1e7073029735c8587f1",
      "parents": [
        "b195062ae61974d98941c22394eee624d6b1c395"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Jun 15 13:22:37 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 15 13:22:37 2024 +0800"
      },
      "message": "CURATOR-711. Upgrade Gradle Enterpirse Extensions for JDK 22 build (#504)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\r\nCo-authored-by: Clay Johnson \u003ccjohnson@gradle.com\u003e"
    },
    {
      "commit": "b195062ae61974d98941c22394eee624d6b1c395",
      "tree": "8f0d64dfd2caa5afa04c62ce7bf5c9757b9df237",
      "parents": [
        "a57b94e4de88ef881618045dfa23ba642dd4f7db"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Jun 11 17:48:39 2024 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Jun 11 17:48:39 2024 +0800"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "a57b94e4de88ef881618045dfa23ba642dd4f7db",
      "tree": "6db221fd70a40cc0314140ecadfb4f8de562ca58",
      "parents": [
        "a9a8020918c345fb6c3c0a099a27189cbd7cf819"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Jun 11 17:48:39 2024 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Jun 11 17:48:39 2024 +0800"
      },
      "message": "[maven-release-plugin] prepare release apache-curator-5.7.0\n"
    },
    {
      "commit": "a9a8020918c345fb6c3c0a099a27189cbd7cf819",
      "tree": "05f2cd86b2ceee2fb9cbb338ff0c0e153f5f660c",
      "parents": [
        "5af54047d3a1d85a8c08fae097b7bc1329f2a55c"
      ],
      "author": {
        "name": "Hexiaoqiao",
        "email": "hexiaoqiao@apache.org",
        "time": "Tue Jun 04 10:23:19 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 04 10:23:19 2024 +0800"
      },
      "message": "CURATOR-688. Fix SharedCount/SharedValue not update after Stat.version overflowed (#478)\n\nCo-authored-by: Kezhu Wang \u003ckezhuw@apache.org\u003e\r\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e\r\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "5af54047d3a1d85a8c08fae097b7bc1329f2a55c",
      "tree": "666c95a27f30f57e95b7b9f24a3595f9eaf1368b",
      "parents": [
        "1027c2cdbbbac61436b8235b2be1729af4146d17"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Mon May 27 14:19:02 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 27 14:19:02 2024 +0800"
      },
      "message": "CURATOR-706. Parallelize zk compatibility tests and unit tests (#502)\n\nThis reduces our ci time from 140 mins to 40 mins."
    },
    {
      "commit": "1027c2cdbbbac61436b8235b2be1729af4146d17",
      "tree": "5d9d6929d64301c93c59e3d1f445e94d79e42e59",
      "parents": [
        "82f2e53459d4905efaedc47493cedb649d934e46"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue May 21 22:59:34 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 21 22:59:34 2024 +0800"
      },
      "message": "CURATOR-696. Fix double leader for LeaderLatch (#500)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\r\nCo-authored-by: Kezhu Wang \u003ckezhuw@apache.org\u003e"
    },
    {
      "commit": "82f2e53459d4905efaedc47493cedb649d934e46",
      "tree": "07359c94221fce25d5b20d423a75c92508346475",
      "parents": [
        "972fffac7cf76fd5e6aadf586e6d2959b3750c76"
      ],
      "author": {
        "name": "Laurent Goujon",
        "email": "laurentgo@users.noreply.github.com",
        "time": "Thu May 02 03:50:24 2024 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 02 18:50:24 2024 +0800"
      },
      "message": "CURATOR-704. Add server compatibility check support (#497)\n\nAdd new interface ZookeeperCompatibility to represent server compatibility and the existing Compatibility class (which represents client compatibility).\r\n\r\nEnhance CuratorFramework to accept ZookeeperCompatibility instance, allowing users to specify which server version to target (default is LATEST)."
    },
    {
      "commit": "972fffac7cf76fd5e6aadf586e6d2959b3750c76",
      "tree": "e3e65982f7424f4db44206627bf269cd34c93720",
      "parents": [
        "2f1fc4ebe5dd1ae451bc801b65dbe29129839f5e"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Feb 15 10:30:30 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 15 10:30:30 2024 +0800"
      },
      "message": "CURATOR-699. Upgrade ZooKeeper version to 3.9 (#496)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "2f1fc4ebe5dd1ae451bc801b65dbe29129839f5e",
      "tree": "71e169547b0e496ab7454d6e30874ae6188b8b0b",
      "parents": [
        "4210bd712faaff85849d93baea913e6e3c6ba35d"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Jan 03 00:31:09 2024 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Jan 03 00:31:09 2024 +0800"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "4210bd712faaff85849d93baea913e6e3c6ba35d",
      "tree": "aa0b25170572f1ef63dc4b410babfc3c59e1e165",
      "parents": [
        "74ff333500b8e9ea6b299f4759303aad53877636"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Jan 03 00:31:09 2024 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Jan 03 00:31:09 2024 +0800"
      },
      "message": "[maven-release-plugin] prepare release apache-curator-5.6.0\n"
    },
    {
      "commit": "74ff333500b8e9ea6b299f4759303aad53877636",
      "tree": "738fbb4abb580620a7ac24675873ecda0e026d91",
      "parents": [
        "111f3a6bdcd562db0493e52243e5cec933cc36ef"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Jan 02 22:36:29 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 02 22:36:29 2024 +0800"
      },
      "message": "CURATOR-697. Upgrade Apache Parent POM to 31 (#495)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "111f3a6bdcd562db0493e52243e5cec933cc36ef",
      "tree": "2f60509134c92dbd0e09adcee89ced875b9fad2b",
      "parents": [
        "e949731759f18f7d747651f6228ed24110367369"
      ],
      "author": {
        "name": "shenjianeng",
        "email": "30279020+shenjianeng@users.noreply.github.com",
        "time": "Wed Dec 20 12:44:37 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 20 12:44:37 2023 +0800"
      },
      "message": "CURATOR-262. Fix sleepMs overflow (#490)\n\nCo-authored-by: shenjianeng \u003csjn@dxy.cn\u003e"
    },
    {
      "commit": "e949731759f18f7d747651f6228ed24110367369",
      "tree": "64793ec164e3b40fef89cb75ff00d6dd07bd3b50",
      "parents": [
        "f5fb6d109257e35de250af7d6c0090b42f2a18a2"
      ],
      "author": {
        "name": "Hannah Chi",
        "email": "huiyang_chi@outlook.com",
        "time": "Sat Dec 02 01:32:55 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 02 15:32:55 2023 +0800"
      },
      "message": "CURATOR-694. Improve test reliability by resolving nondeterministic order by sorting (#491)\n\n"
    },
    {
      "commit": "f5fb6d109257e35de250af7d6c0090b42f2a18a2",
      "tree": "84502528d1434abbb1152d96ec07d65a1ab5ffa4",
      "parents": [
        "a83a0b2e5590f1961439e48be86e34ace39e5979"
      ],
      "author": {
        "name": "Sergey Nuyanzin",
        "email": "snuyanzin@gmail.com",
        "time": "Tue Oct 24 05:13:50 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 24 11:13:50 2023 +0800"
      },
      "message": "CURATOR-693. Bump ZooKeeper version to 3.7.2 (#489)\n\n"
    },
    {
      "commit": "a83a0b2e5590f1961439e48be86e34ace39e5979",
      "tree": "df8ffd5ad3997f4ad2d559f256107e4beacb02a1",
      "parents": [
        "2a94b2d7971bf47c2c12554bcd4c2e95581f607a"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Oct 24 11:09:54 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 24 11:09:54 2023 +0800"
      },
      "message": "CURATOR-691. Compatible with JDK 21 (#484)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "2a94b2d7971bf47c2c12554bcd4c2e95581f607a",
      "tree": "a2039ada5486f8c6f2fc708e8c1eddcfa5fa8bb2",
      "parents": [
        "573c9a986b2295eab0c008b60898b901127cb9d7"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Oct 11 20:01:55 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 11 20:01:55 2023 +0800"
      },
      "message": "CURATOR-692. Get rid of mockito (#485)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "573c9a986b2295eab0c008b60898b901127cb9d7",
      "tree": "40471e1ae1a36814b212c8d239c93c8a863fda5b",
      "parents": [
        "3468ee91561534d5a748bfb06902725542d07347"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 11 18:20:06 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 11 18:20:06 2023 +0800"
      },
      "message": "CURATOR-679: Bump snappy-java from 1.1.10.1 to 1.1.10.4 (#483)\n\nBumps [org.xerial.snappy:snappy-java](https://github.com/xerial/snappy-java) from 1.1.10.1 to 1.1.10.4.\r\n- [Release notes](https://github.com/xerial/snappy-java/releases)\r\n- [Commits](https://github.com/xerial/snappy-java/compare/v1.1.10.1...v1.1.10.4)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: org.xerial.snappy:snappy-java\r\n  dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3468ee91561534d5a748bfb06902725542d07347",
      "tree": "59cfd3ad28ce89b2496aabd6f6b7af7abf9e4963",
      "parents": [
        "51483adb1d1dd3e43812b5d0ec7c03b6d1d05c7c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Sep 20 01:01:43 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 20 01:01:43 2023 +0800"
      },
      "message": "CURATOR-521. Check LeaderLatch#close(CloseMode) does not accept null (#481)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "51483adb1d1dd3e43812b5d0ec7c03b6d1d05c7c",
      "tree": "a05e6dc23a03abc8e77046c07f61be014a1634c9",
      "parents": [
        "dc1cd9f5f6985dd1aa04f51c8af4de7ba68a955c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Sep 15 09:03:44 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 15 09:03:44 2023 +0800"
      },
      "message": "CURATOR-690. CuratorCache fails to load the cache if there are more than 64k child znodes (#480)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\r\nCo-authored-by: Ryan Ruel \u003crruel@akamai.com\u003e"
    },
    {
      "commit": "dc1cd9f5f6985dd1aa04f51c8af4de7ba68a955c",
      "tree": "15d8424415628f3442954e91d24a44db3a53361c",
      "parents": [
        "72beebc504d90338ded9a68ae0f6b79f5c8986fd"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Sep 13 22:50:12 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 13 22:50:12 2023 +0800"
      },
      "message": "Enable four letter word commands in testing server"
    },
    {
      "commit": "72beebc504d90338ded9a68ae0f6b79f5c8986fd",
      "tree": "e761bd43a101d35a166ddb0b2ead47b8484b4689",
      "parents": [
        "ec7759317d3e0bcdc7d6220f01297dc522184b17"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Aug 24 18:18:41 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 24 18:18:41 2023 +0800"
      },
      "message": "GH autolink to CURATOR Jira issues"
    },
    {
      "commit": "ec7759317d3e0bcdc7d6220f01297dc522184b17",
      "tree": "47b6faf9681fbc245b180b451584abe5b8fba4e8",
      "parents": [
        "bf587436c085d0361e881f919de64acb8424b1e5"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Aug 16 08:00:16 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 16 08:00:16 2023 +0800"
      },
      "message": "CURATOR-685. Cleanup docs and setups for the old site deployment (#476)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "bf587436c085d0361e881f919de64acb8424b1e5",
      "tree": "5f1d9439833e956c758a6fd5ff178769a404347d",
      "parents": [
        "c812af7e16f508fb31d515d97258036ffcd7bff9"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Tue Aug 15 23:23:53 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 15 23:23:53 2023 +0800"
      },
      "message": "CURATOR-677: Complete BackgroundCallback if sub operation failed or cancelled (#467)\n\nCurrently, some background operations use auxiliary sub operations to\r\ncomplete task in case of primary conditions are not satisfied. But most\r\nof these sub operations count only success path, so they will hang\r\n`BackgroundCallback` if they are failed or cancelled due to framework\r\nclosed.\r\n\r\nThis is the leftover of [CURATOR-673][](#464).\r\n\r\n[CURATOR-673]: https://issues.apache.org/jira/browse/CURATOR-673"
    },
    {
      "commit": "c812af7e16f508fb31d515d97258036ffcd7bff9",
      "tree": "b4d85e6191764471998bf4d15ee49487b8d24c14",
      "parents": [
        "f0d12ddee3ccc139eadc4cbe589a4287b5bfeae3"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Tue Aug 15 17:11:08 2023 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Tue Aug 15 17:11:08 2023 +0800"
      },
      "message": "Add Kezhu Wang as Committer and PMC Member\n"
    },
    {
      "commit": "f0d12ddee3ccc139eadc4cbe589a4287b5bfeae3",
      "tree": "46ce49ca24b644fe0f5bfeb803c590d498ed8ce6",
      "parents": [
        "260afcdadbadde87ce7a8c2a904afdc3c1013884"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Aug 14 12:12:18 2023 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Aug 14 12:13:00 2023 +0800"
      },
      "message": "hotfix. tidy duplicate license header\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "260afcdadbadde87ce7a8c2a904afdc3c1013884",
      "tree": "5868dc79ae03047d556a26bf3cefc6a3bda8e2b5",
      "parents": [
        "d14cb464cbd4e8e0e1bb51daba76e84eb2e346db"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sun Aug 13 23:49:49 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 13 23:49:49 2023 +0800"
      },
      "message": "CURATOR-681: Fix flaky TestInterProcessMutex.testReentrantSingleLock (#470)\n\n"
    },
    {
      "commit": "d14cb464cbd4e8e0e1bb51daba76e84eb2e346db",
      "tree": "066ad29f0ad20d22b52b115757068815b5ad1aa1",
      "parents": [
        "97fe626c25d57d47816f95486be77ef39646ed59"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sun Aug 13 23:39:17 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 13 23:39:17 2023 +0800"
      },
      "message": "CURATOR-457: Custom service discovery path (#473)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\r\nCo-authored-by: alexm \u003calexm25890@gmail.com\u003e\r\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "97fe626c25d57d47816f95486be77ef39646ed59",
      "tree": "701000e3271e308e5832bc23b7a44272d7a701a7",
      "parents": [
        "abfa96f0622549f610eda08b62a1fead87452083"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sun Aug 13 10:34:06 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 13 10:34:06 2023 +0800"
      },
      "message": "CURATOR-626: Postpone null namespace facade creation to avoid partial initialization (#475)\n\nIn construction of `CuratorFrameworkImpl`, it constructs a sub class\r\n`NamespaceFacade` for commonly used `nullNamespace`. Due to this\r\nrecursive construction, `nullNamespace` has uninitialized fields which\r\ncause NPT in certain cases.\r\n\r\nThis commit solves this by postponing `nullNamespace` creation."
    },
    {
      "commit": "abfa96f0622549f610eda08b62a1fead87452083",
      "tree": "7cf8fe0fbc3c163a2da77b5143cde6e57971c931",
      "parents": [
        "26a7e4ded1d45df875ea7e9d8c311b0c1f68ad30"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sun Aug 13 10:33:36 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 13 10:33:36 2023 +0800"
      },
      "message": "CURATOR-667: Fix abnormal event config path from getConfig (#474)\n\n`getConfig` will read data from path \"/zookeeper/config\" which belongs\r\nto no namespace nor chroot in ZooKeeper side. Path in background event\r\nor watch event should stick to \"/zookeeper/config\".\r\n\r\nSee also:\r\n* https://issues.apache.org/jira/browse/ZOOKEEPER-4601\r\n* https://lists.apache.org/thread/2tsg1hcopl80zot12tqrynrbg2h792jf"
    },
    {
      "commit": "26a7e4ded1d45df875ea7e9d8c311b0c1f68ad30",
      "tree": "89dffddab3ca763cf967cbba7f6648175a0eafb2",
      "parents": [
        "e44115e2fb5ea77af1bfe825ce122caf59e53fc1"
      ],
      "author": {
        "name": "Slavik",
        "email": "Slavikca@gmail.com",
        "time": "Thu Aug 03 13:35:46 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 04 01:35:46 2023 +0800"
      },
      "message": "CURATOR-683: Upgrade jackson from 2.10.0 to 2.13.5\n\n"
    },
    {
      "commit": "e44115e2fb5ea77af1bfe825ce122caf59e53fc1",
      "tree": "a610c35e8ffb2a40de883aca6df6872165fb3eaa",
      "parents": [
        "dcca72d89d5da09204145b54ebf426f0c8654698"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Mon Jul 03 21:32:09 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 03 21:32:09 2023 +0800"
      },
      "message": "CURATOR-675: Fix AsyncCuratorFramework\u0027s UnhandledErrorListener hang AsyncStage (#465)\n\n`AsyncCuratorFramework` binds its `UnhandledErrorListener` to operation\r\nlevel which could prevent `AsyncStage` from completion if exception is\r\nswallowed by that listener.\r\n\r\nIn any cases, a framework level error listener should not prevent an\r\noperation future from completion."
    },
    {
      "commit": "dcca72d89d5da09204145b54ebf426f0c8654698",
      "tree": "a5958fa33a461a98ef0b3002301e28daeff88461",
      "parents": [
        "35203ada3084de125d2ff05cc9e23c459ed835aa"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 20 13:43:27 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 20 13:43:27 2023 +0800"
      },
      "message": "CURATOR-680: Bump guava from 31.1-jre to 32.0.0-jre (#468)\n\nBumps [guava](https://github.com/google/guava) from 31.1-jre to 32.0.0-jre.\r\n- [Release notes](https://github.com/google/guava/releases)\r\n- [Commits](https://github.com/google/guava/commits)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: com.google.guava:guava\r\n  dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "35203ada3084de125d2ff05cc9e23c459ed835aa",
      "tree": "906c55ec23391655ee6b7efb0d1208a81103ca73",
      "parents": [
        "a4f1ef22fa4395d3188341f04025e723a84c961b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 20 13:33:34 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 20 13:33:34 2023 +0800"
      },
      "message": "CURATOR-679: Bump snappy-java from 1.1.7 to 1.1.10.1 (#469)\n\nBumps [snappy-java](https://github.com/xerial/snappy-java) from 1.1.7 to 1.1.10.1.\r\n- [Release notes](https://github.com/xerial/snappy-java/releases)\r\n- [Commits](https://github.com/xerial/snappy-java/compare/1.1.7...v1.1.10.1)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: org.xerial.snappy:snappy-java\r\n  dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a4f1ef22fa4395d3188341f04025e723a84c961b",
      "tree": "ee0879e5112a40292e63747e864cc644b9de2033",
      "parents": [
        "f3c889cc3988974f47746e42c5dabd6dc6683531"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Sat Jun 17 21:49:42 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 17 21:49:42 2023 +0800"
      },
      "message": "CURATOR-41: Suppress secondary exception in LockInternals.attemptLock (#466)\n\nSuppress exception from `deleteOurPath` if we are throwing."
    },
    {
      "commit": "f3c889cc3988974f47746e42c5dabd6dc6683531",
      "tree": "bb47c4a098076184683dd1c616e097178dc8f421",
      "parents": [
        "484ede9a33abb1427ba58c77e5792814aac889f0"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Jun 09 00:25:51 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 09 00:25:51 2023 +0800"
      },
      "message": "CURATOR-673: Complete BackgroundCallback if CuratorFramework got closed (#464)\n\nPreviously, if curator framework is closed while there are background\r\noperations, these operations are dropped with no dedicated events.\r\n\r\nIt is hard for blocking clients to stop waiting after framework closed.\r\n`CuratorListener` seems like a circumvent. But apparently, it is hard\r\nand I don\u0027t think this is by design.\r\n\r\nThis pr introduces a `clockLock` to synchronize framework closing and\r\noperation queuing. So we are sure that no operations could be queued\r\nafter framework marked as closing.\r\n\r\nIt also terminates operation which get retries exhausted due to background\r\nexception.\r\n\r\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "484ede9a33abb1427ba58c77e5792814aac889f0",
      "tree": "96278da3442efca7a8a10f38c5d7a3e9504ecba6",
      "parents": [
        "328f985304b07cec046e4b9e4244a9c962fc91f5"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Jun 02 16:11:05 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 02 16:11:05 2023 +0800"
      },
      "message": "CURATOR-674. Apply code style with spotless (#463)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "328f985304b07cec046e4b9e4244a9c962fc91f5",
      "tree": "183786b73fdf712686eda896709a5b9c01603b97",
      "parents": [
        "4221604facf2447f4ef7789842ac0b8c4a9d4763"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Wed May 31 18:16:59 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 31 18:16:59 2023 +0800"
      },
      "message": "CURATOR-671: Make sure success LeaderSelector::requeue after observing hasLeadership and then !hasLeadership (#462)\n\n`TestLeaderSelectorCluster.testLostRestart` depends on success\r\n`LeaderSelector::requeue` after observing `hasLeadership` and then\r\n`!hasLeadership`. #446(CURATOR-518) breaks this.\r\n\r\nInstead of simply looping till success `LeaderSelector::requeue`, I\r\ntend to revert to old behavior as it was that since its introduce in\r\neb4d2aaf7702e7e5ffbf1c1dd8544e88b1171045.\r\n\r\nThough, we can\u0027t depend this in case of no leadership was ever granted.\r\nIn this case, when session expired, I guess looping on `requeue` may be\r\nthe only option. Anyway, `requeue` is somewhat hard to use correctly."
    },
    {
      "commit": "4221604facf2447f4ef7789842ac0b8c4a9d4763",
      "tree": "da8e097508d5c19f211511d5ebf00d5912b6e341",
      "parents": [
        "1e82d0c1d0708d84d06e5757e435d1d9dbebfb48"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Tue May 23 15:47:44 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 23 15:47:44 2023 +0800"
      },
      "message": "CURATOR-593: Append chroot for EnsembleProvider::setConnectionString in EnsembleTracker (#460)\n\nCurator uses `EnsembleProvider::getConnectionString` as connection\r\nstring to `ZooKeeper`. `EnsembleTracker` subscribes to config node\r\nto construct up to date connection string for `EnsembleProvider`.\r\nThis is great.\r\n\r\nBut, currently, `EnsembleTracker` omits chroot part of connection string\r\nwhich could cause curator locating at ZooKeeper root after reconnection.\r\nThis could damage clients\u0027 data hierarchy in unexpected manner."
    },
    {
      "commit": "1e82d0c1d0708d84d06e5757e435d1d9dbebfb48",
      "tree": "32d6e9ef8c4706a3a201b800503776a05a014b33",
      "parents": [
        "447878f43b86a272b73a0732e88180c93d59ca1c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon May 08 08:52:25 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 08 08:52:25 2023 +0800"
      },
      "message": "CURATOR-672. Ensure JDK 17 support (#461)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "447878f43b86a272b73a0732e88180c93d59ca1c",
      "tree": "80c42b02c2bfab55cc20ef96073a1dae013837ea",
      "parents": [
        "780c2422658b751bfc54ff0ad193e0317e40a2b4"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat May 06 11:09:52 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 06 11:09:52 2023 +0800"
      },
      "message": "CURATOR-669. Integrate with ge.apache.org Gradle Enterprise server (#459)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "780c2422658b751bfc54ff0ad193e0317e40a2b4",
      "tree": "22eedb191db52a7b5389a5533ea8245cf6128e68",
      "parents": [
        "34055bbaeda55f06b8cd47b99c08d69c4edde72e"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Apr 28 16:41:06 2023 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Fri Apr 28 16:41:06 2023 +0800"
      },
      "message": "Update currentStableVersion to 5.5.0\n"
    },
    {
      "commit": "34055bbaeda55f06b8cd47b99c08d69c4edde72e",
      "tree": "6895581271294d5fdb835c2e0b4b0a25b542be9a",
      "parents": [
        "40885adbbc0f2e51a41cd9119cad305d9ac32760"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Apr 20 04:01:44 2023 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Apr 20 04:01:44 2023 +0800"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "40885adbbc0f2e51a41cd9119cad305d9ac32760",
      "tree": "5ff606f9ab8f572b1856552bf322c28437089f13",
      "parents": [
        "9aea8ff99df5e807a8004a294dd1dde8f93d48dd"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Apr 20 04:01:34 2023 +0800"
      },
      "committer": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Thu Apr 20 04:01:34 2023 +0800"
      },
      "message": "[maven-release-plugin] prepare release apache-curator-5.5.0\n"
    },
    {
      "commit": "9aea8ff99df5e807a8004a294dd1dde8f93d48dd",
      "tree": "5a16aa23dbb55199ed2be72803c9bfa36d49bee3",
      "parents": [
        "a72fe5173881fa399546a459b2946a749568112b"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@apache.org",
        "time": "Wed Apr 19 22:39:32 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 19 22:39:32 2023 +0800"
      },
      "message": "CURATOR-666: Fix twice unfixForNamespace in background create (#454)\n\nPreviously, `unfixForNamespace` was called twice in background create.\r\nThis will accidentally unfix node path if it happens to contain\r\nnamespace in its prefix. Say, creating \"/zoo/a\" in namespace \"/zoo\" will\r\nget path \"/a\"."
    },
    {
      "commit": "a72fe5173881fa399546a459b2946a749568112b",
      "tree": "64d01920c506402732de28acb2c2d6e9db81012e",
      "parents": [
        "684e873166b2f6ae677c14e25c55590adab09a28"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Apr 12 21:18:23 2023 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Apr 12 22:33:07 2023 +0800"
      },
      "message": "Disable force required to allow push release commits\n\nSince we do not use release branch pattern, we need this commit\notherwise the process is not working.\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "684e873166b2f6ae677c14e25c55590adab09a28",
      "tree": "5ef5723173a41736965a0ac7ebff2dd84f7a1a6e",
      "parents": [
        "0095a273c157a74b133c5d9cc6ee9b61ecb43fd4"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Apr 12 21:16:03 2023 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Apr 12 22:33:07 2023 +0800"
      },
      "message": "Disable fail-fast to avoid heavy rerun\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "0095a273c157a74b133c5d9cc6ee9b61ecb43fd4",
      "tree": "898638cf3b47320b3709564bedfd9792ea2757fc",
      "parents": [
        "e4ad57e3600ccb5473544b7577584e25c780944f"
      ],
      "author": {
        "name": "Adam\u0027s",
        "email": "43720485+cscsyiku123@users.noreply.github.com",
        "time": "Wed Apr 12 19:22:36 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 12 19:22:36 2023 +0800"
      },
      "message": "CURATOR-668. Modify blockUntilConnected method annotation (#457)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "e4ad57e3600ccb5473544b7577584e25c780944f",
      "tree": "f0f9b3e166c278ff01199dd4d1ad9ed4c0b58488",
      "parents": [
        "caccd293b60c14768509c55d3975f0936cb0a4fe"
      ],
      "author": {
        "name": "Ryan Ruel",
        "email": "ryan@ryanruel.com",
        "time": "Tue Apr 11 22:24:31 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 12 10:24:31 2023 +0800"
      },
      "message": "CURATOR-609. ModeledCache should not deserialize empty ZNodes on deletion (#396)\n\nCo-authored-by: Ryan Ruel \u003crruel@akamai.com\u003e"
    },
    {
      "commit": "caccd293b60c14768509c55d3975f0936cb0a4fe",
      "tree": "7e2cb93039b1255aef4d6b7124831bd37e3bffa9",
      "parents": [
        "d1b64d63d9772495e22154260b1c2634432cd436"
      ],
      "author": {
        "name": "David Copley",
        "email": "david@canva.com",
        "time": "Wed Apr 12 12:21:07 2023 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 12 10:21:07 2023 +0800"
      },
      "message": "Fix type \"JMV\" to \"JVM\" in LeaderLatch (#456)\n\n"
    },
    {
      "commit": "d1b64d63d9772495e22154260b1c2634432cd436",
      "tree": "1a4877f0ba2bf86a464c7aa6c14d125c460a69f3",
      "parents": [
        "2c283bd97fbc50ce592231dcf846ece4190b7948"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Apr 03 16:22:39 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 03 16:22:39 2023 +0800"
      },
      "message": "CURATOR-665: Convey mkdirs exception to create backgorund (#453)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "2c283bd97fbc50ce592231dcf846ece4190b7948",
      "tree": "398d287e93153f71c67e791c977d45139048ea7b",
      "parents": [
        "37728a431e64dad8b989d4cc4ae5a4171e15f667"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@gmail.com",
        "time": "Sat Apr 01 22:54:54 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 01 22:54:54 2023 +0800"
      },
      "message": "CURATOR-621: Fix write acquire after downgrade InterProcessReadWriteLock (#445)\n\nCurrently, in downgrading the write lock of InterProcessReadWriteLock, the read lock could have a larger sorting sequence than the contending write-acquire; this cause the contending write-acquire to succeed after downgrading.\r\n\r\nThis commit solves this by using the write lock\u0027s sorting sequence for read lock in downgrading."
    },
    {
      "commit": "37728a431e64dad8b989d4cc4ae5a4171e15f667",
      "tree": "f483621fbf35e453337cdd2479466b446eb7fcb6",
      "parents": [
        "79edb0e20891951b7e4456d2b68c6ce64938f4e8"
      ],
      "author": {
        "name": "Denes Daniel",
        "email": "pantherdd@gmail.com",
        "time": "Fri Mar 31 13:50:53 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 31 13:50:53 2023 +0200"
      },
      "message": "CURATOR-664: Use getHostString() to build connection string in EnsembleTracker even for wildcard addresses (#452)\n\n"
    },
    {
      "commit": "79edb0e20891951b7e4456d2b68c6ce64938f4e8",
      "tree": "4caff3ae378077bf92373f8e1ecce51c3cf84e97",
      "parents": [
        "89df142a0509c5371f49ba80fd55157483daf75b"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Mar 13 13:56:39 2023 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Mar 13 15:26:11 2023 +0800"
      },
      "message": "CURATOR-661: Apply license header reformat\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "89df142a0509c5371f49ba80fd55157483daf75b",
      "tree": "5c7628b26cca3fe37b26053da4e0a253e2192b05",
      "parents": [
        "34432073079012fe1d45ab5ff6c15607d95b43d8"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Mar 13 13:52:01 2023 +0800"
      },
      "committer": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Mar 13 15:26:11 2023 +0800"
      },
      "message": "CURATOR-661: Use license header checker and add required status\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n"
    },
    {
      "commit": "34432073079012fe1d45ab5ff6c15607d95b43d8",
      "tree": "0b4c25d5f3e6d9e0e17887f9d91e62dfbd8f021d",
      "parents": [
        "5e22c96e94a1a47695af474ee6d11e6d5274fd49"
      ],
      "author": {
        "name": "Kezhu Wang",
        "email": "kezhuw@gmail.com",
        "time": "Mon Mar 13 13:41:17 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 13 13:41:17 2023 +0800"
      },
      "message": "CURATOR-518: Fix LeaderSelector requeue broken by interruptLeadership (#446)\n\n"
    }
  ],
  "next": "5e22c96e94a1a47695af474ee6d11e6d5274fd49"
}
