)]}'
{
  "log": [
    {
      "commit": "9eacc14fa58e92d74ddbda087a2fc24874d9cf38",
      "tree": "1c24332f72173de62c2e727ee3e9154f39e4d951",
      "parents": [
        "6cee2f3c33ea6dd79a4f4a0146cb3a66397d9824"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Wed May 13 19:11:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 10:11:39 2026 +0800"
      },
      "message": "Fix property assign error for mqtt v5 maximumQoS conn ack. (#252)"
    },
    {
      "commit": "6cee2f3c33ea6dd79a4f4a0146cb3a66397d9824",
      "tree": "229f974c9c7e505d9a01094e9dcf3faaa54e85f3",
      "parents": [
        "98bae48c3672886aa40e0dacaba14fd4b817920e"
      ],
      "author": {
        "name": "liaodongnian",
        "email": "361485583@qq.com",
        "time": "Sat May 09 13:28:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 13:28:34 2026 +0800"
      },
      "message": "Start RPC server for standalone MQTT broker (#251)\n\nInclude MQTTBroker in the starter RPC server bootstrap condition so MQTT-only deployments expose their broker service. Add coverage for MQTT-only and API-only bootstrap behavior. #250"
    },
    {
      "commit": "98bae48c3672886aa40e0dacaba14fd4b817920e",
      "tree": "563e11dcd4c0ba137acd26b0ce25f756ae25c7a7",
      "parents": [
        "f5dfaa1aa0874283e4eb62501782d5a1929bb8b9"
      ],
      "author": {
        "name": "liaodongnian",
        "email": "361485583@qq.com",
        "time": "Thu May 07 17:56:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 17:56:37 2026 +0800"
      },
      "message": "feat(plugin): initialize PluginManager eagerly at startup (#249)\n\nPreviously, PluginManager was bound in the same Guice module as extension\nmanagers (e.g., AuthProviderManager, EventCollectorManager), causing it to be\ninitialized lazily only when those managers were accessed. This could lead to\nPluginManager never being initialized if extensions were unused.\n\nThis change decouples PluginManager initialization from extension managers,\nensuring it is created during application bootstrap regardless of extension\nusage.\n\nFixes #248"
    },
    {
      "commit": "f5dfaa1aa0874283e4eb62501782d5a1929bb8b9",
      "tree": "7d15b119542ee825c4136c6abe3a4769255aef85",
      "parents": [
        "6b17245b41923cc3f7f47afe5a5a4740c34d3f38"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Sun Apr 26 01:16:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 16:16:32 2026 +0800"
      },
      "message": "fix shared sub setting check. (#246)"
    },
    {
      "commit": "6b17245b41923cc3f7f47afe5a5a4740c34d3f38",
      "tree": "01bb826398d662a5c5b0b944155f4292108e7f7a",
      "parents": [
        "27c476004c5ef5f61d74531eb5227b9120b43900"
      ],
      "author": {
        "name": "liaodongnian",
        "email": "361485583@qq.com",
        "time": "Thu Apr 23 11:26:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 11:26:40 2026 +0800"
      },
      "message": "feat(starter): support configurable multi-dimensional metricsTags (Part of #243) (#245)\n\n* feat(starter): support configurable multi-dimensional metricsTags\n\n- Add metricsTags config option to define multiple global labels in standalone.yml\n- Keep clusterConfig.env as default metricsTags to ensure backward compatibility\n- Add clusterEnv tag to base-cluster Messenger and TCPTransport metrics\n- Include clusterEnv in AgentHost member list tags\n\nBREAKING CHANGE: Global metrics now use metricsTags config instead of\nsingle clusterConfig.env injection. To migrate, move the original env\nvalue to metricsTags config.\n\nExample config:\nmetricsTags:\n  region: gz\n  deployment: canary\n  env: Test\n\n* fix: resolve integration test failures in messenger"
    },
    {
      "commit": "27c476004c5ef5f61d74531eb5227b9120b43900",
      "tree": "89f0737885d34d1bc772db78405c104d73e4269f",
      "parents": [
        "841dd8e8b5d8fb4b08bf23947134de7474b05379"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 15:44:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 15:44:15 2026 +0800"
      },
      "message": "Bump org.bouncycastle:bcpkix-jdk18on from 1.79 to 1.84 (#244)\n\nBumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.79 to 1.84.\n- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)\n- [Commits](https://github.com/bcgit/bc-java/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.bouncycastle:bcpkix-jdk18on\n  dependency-version: \u00271.84\u0027\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": "841dd8e8b5d8fb4b08bf23947134de7474b05379",
      "tree": "71a4a83682e91118e5b1d2dcad39cbed484b0fdd",
      "parents": [
        "f29670378cb95bbea2ccb126bf68d9eebdbec410"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 11:49:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 11:49:42 2026 +0800"
      },
      "message": "Bump org.apache.logging.log4j:log4j-core from 2.25.3 to 2.25.4 (#242)\n\nBumps org.apache.logging.log4j:log4j-core from 2.25.3 to 2.25.4.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.logging.log4j:log4j-core\n  dependency-version: 2.25.4\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": "f29670378cb95bbea2ccb126bf68d9eebdbec410",
      "tree": "ec09f7ec47beb6e98933efb858e24683170fb26e",
      "parents": [
        "527ac7e585d14e0b7963e9d9aa1925d6b62b0c98"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Mon Apr 06 20:21:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 11:21:34 2026 +0800"
      },
      "message": "1. on back pressure rejected inbox commits, directly schedule a delayed retry. (#241)\n\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "527ac7e585d14e0b7963e9d9aa1925d6b62b0c98",
      "tree": "b3a3c0d1d2c5a7344b1f50e2b5b29fbe59778715",
      "parents": [
        "3ec11c57eab31f65d82622b96102aeda416ab779"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Sun Apr 05 21:17:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 12:17:46 2026 +0800"
      },
      "message": "Change DemoAuthProvider fallback behavior to fit plugin manager changes (#239)\n\n1. change DemoAuthProvider fallback behavior to fit new plugin manager changes.\n2. make fallback plugin completely align with dev only auth plugin;\n3. add a checkPermission to avoid deletion override missing.\n\n---------\n\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "3ec11c57eab31f65d82622b96102aeda416ab779",
      "tree": "f4436964ecd8dce99a26671d458e82d8938d5876",
      "parents": [
        "41313fdde2486b4ff7e883c070592de3f09d8f19"
      ],
      "author": {
        "name": "dk",
        "email": "739908173@qq.com",
        "time": "Fri Apr 03 22:04:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 22:04:17 2026 +0800"
      },
      "message": "fix syntax issue in standalone.bat  (#240)"
    },
    {
      "commit": "41313fdde2486b4ff7e883c070592de3f09d8f19",
      "tree": "bd6fccbeaf1bf5c694544a85ef62eead1dc77a47",
      "parents": [
        "2a9feb5b86a39c2dd0df471415e4410e7358a3ee"
      ],
      "author": {
        "name": "liaodongnian",
        "email": "361485583@qq.com",
        "time": "Mon Mar 30 17:19:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 17:19:03 2026 +0800"
      },
      "message": "feat: make plugin FQN configs optional with strict-or-graceful loading (#237)\n\n* feat(core): make plugin FQN configs optional with strict-or-graceful loading\nMake authProviderFQN, resourceThrottlerFQN, and settingProviderFQN in standalone.yml optional to improve local dev/test ergonomics.\n- If a *FQN field is explicitly set, treat it as a hard requirement:\n  BifroMQ will fail fast on startup if the plugin class is missing or fails to initialize.\n- If the field is omitted, apply auto-selection logic:\n  1. Discover all registered custom plugins for the extension point.\n  2. Sort by plugin key (byte-wise alphabetical) and pick the first.\n  3. Fall back to built-in default only if no custom plugins exist.\nThis provides a clear contract for production (explicit \u003d strict)\nwhile keeping local development simple and low-friction.\nFixes #236\nSigned-off-by: liaodongnian \u003c361485583@qq.com\u003e"
    },
    {
      "commit": "2a9feb5b86a39c2dd0df471415e4410e7358a3ee",
      "tree": "a605735fb7939897b29b43c9dfee9a450b74279f",
      "parents": [
        "12078a7c4997f9f688c092b7b5e000b72fc1f8ef"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Mar 24 22:08:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 22:08:16 2026 +0800"
      },
      "message": "[Chore] Remove Coveralls action from cov workflow and bump actions version\n\n1. Remove Coveralls action from cov workflow\n2. bump actions version"
    },
    {
      "commit": "12078a7c4997f9f688c092b7b5e000b72fc1f8ef",
      "tree": "51ad1f01093bc0957e3d6ac70f6289910c88c6f9",
      "parents": [
        "8de92fea8dff5bf41a0c2efe3a3915f973742e27"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Sun Mar 22 19:22:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 10:22:08 2026 +0800"
      },
      "message": "Fix back pressure and try-later replies missing hasMore bit reset error in inbox fetching. (#234)"
    },
    {
      "commit": "8de92fea8dff5bf41a0c2efe3a3915f973742e27",
      "tree": "2bf3244dd48dfa4122760bd6a706df783de931c5",
      "parents": [
        "a7f85e5201488a71ce70d703b169a5d46194e8ea"
      ],
      "author": {
        "name": "liaodongnian",
        "email": "361485583@qq.com",
        "time": "Sat Mar 07 09:13:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 07 09:13:44 2026 +0800"
      },
      "message": "Fixed potential CME thrown from signal fetch (#232)"
    },
    {
      "commit": "a7f85e5201488a71ce70d703b169a5d46194e8ea",
      "tree": "8b917db6f3045cd69da3b971ecc5b8febb702624",
      "parents": [
        "61112557ecfdefcec6604421971b2a073aed5c2c"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Mar 05 09:44:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 09:44:13 2026 +0800"
      },
      "message": "Refactor BatchMutationCall to optimize task batching and execution flow (#230)\n\n"
    },
    {
      "commit": "61112557ecfdefcec6604421971b2a073aed5c2c",
      "tree": "db83a174a1e84e10089619b8a71ae9467e2a06b2",
      "parents": [
        "7c34642c3d616cc8cbba7d34d97aaaf12065180e"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Wed Feb 11 20:05:05 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 12 12:05:05 2026 +0800"
      },
      "message": "1. update lombok version to be compatible with java25. (#228)\n\n"
    },
    {
      "commit": "7c34642c3d616cc8cbba7d34d97aaaf12065180e",
      "tree": "b14c6a9e49e9bf5bf372346b1caeb46dfc08a6a0",
      "parents": [
        "1883873bce42bf314b4a422a10c03e27281c66b6"
      ],
      "author": {
        "name": "liaodongnian",
        "email": "361485583@qq.com",
        "time": "Mon Feb 09 09:03:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 09:03:20 2026 +0800"
      },
      "message": "fix localdistservice missing result local route (#227)\n\n"
    },
    {
      "commit": "1883873bce42bf314b4a422a10c03e27281c66b6",
      "tree": "56605b0405f795b0bb32de61e9ccdd650edd74d3",
      "parents": [
        "89d6b2169ca9a2f83412c310144a7af86827783f"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Sun Feb 01 17:22:21 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 02 09:22:21 2026 +0800"
      },
      "message": "Support multi arch docker image (#224)\n\n"
    },
    {
      "commit": "89d6b2169ca9a2f83412c310144a7af86827783f",
      "tree": "30391f8d78149975c539ee5d89cde75edf96cb6a",
      "parents": [
        "57bba391014de38f27f528edb3f0ea030d468f2c"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Wed Jan 28 21:00:11 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 13:00:11 2026 +0800"
      },
      "message": "1. unify the release artifacts. (#222)\n\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "57bba391014de38f27f528edb3f0ea030d468f2c",
      "tree": "13f050121d0ee04dc596ebde138e6733ebbc5bb3",
      "parents": [
        "16296872f27972f09d42a41a1e8e2e09f6d328ed"
      ],
      "author": {
        "name": "liaodongnian",
        "email": "361485583@qq.com",
        "time": "Thu Jan 29 10:55:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 10:55:11 2026 +0800"
      },
      "message": "fix: resolve log file cleanup issue on BifroMQ restart (#197)\n\n- Add OnStartupTriggeringPolicy to trigger cleanup on startup\n- Implement explicit Delete strategy with 72h or 7h retention\n- Prevent log file accumulation and disk space exhaustion\n\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "16296872f27972f09d42a41a1e8e2e09f6d328ed",
      "tree": "065b142cd436a61f6ead4b21e045503a4a82486c",
      "parents": [
        "01de0b132b9fd28737a2a9404395a30fc5a5775e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jan 28 22:39:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 22:39:34 2026 +0800"
      },
      "message": "Bump org.apache.logging.log4j:log4j-core from 2.24.3 to 2.25.3 (#211)\n\nBumps org.apache.logging.log4j:log4j-core from 2.24.3 to 2.25.3.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.logging.log4j:log4j-core\n  dependency-version: 2.25.3\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\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "01de0b132b9fd28737a2a9404395a30fc5a5775e",
      "tree": "5342c492593f5a50fe531942b474593e5323660e",
      "parents": [
        "6cb2465b6eee5f041b0214ef923a398a160f9918"
      ],
      "author": {
        "name": "daidai",
        "email": "changyuwei@selectdb.com",
        "time": "Tue Jan 13 10:30:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 13 10:30:50 2026 +0800"
      },
      "message": "Update NOTICE file copyright year to 2025-2026. (#219)\n\n"
    },
    {
      "commit": "6cb2465b6eee5f041b0214ef923a398a160f9918",
      "tree": "5359a819b369388f7cd2c03ee1d7fad7ae8a8f4c",
      "parents": [
        "878c0fc70d8346fd22fa1b52ec960728ebcec5bc"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Dec 30 11:45:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 30 11:45:31 2025 +0800"
      },
      "message": "chore: fixed license-binary/notice-binary issues (#215)\n\n"
    },
    {
      "commit": "878c0fc70d8346fd22fa1b52ec960728ebcec5bc",
      "tree": "2ec770a7f24289ff1a884195e93e7e236172856e",
      "parents": [
        "15e1430ad8d4815c1c3803350db2b8e650595e21"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Dec 18 11:22:56 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 18 11:22:56 2025 +0800"
      },
      "message": "chores: optimize release.sh \u0026 update asf.yaml (#210)\n\n1. Update asf.yaml to re-enable lost branch rules\n2. Optimize release.sh to speed up svn upload process"
    },
    {
      "commit": "15e1430ad8d4815c1c3803350db2b8e650595e21",
      "tree": "6f415d05ebdde13b7b9b9a1a070e4f83027c4dae",
      "parents": [
        "d1bbba5cd8163fae0593733491860dccff77cff6"
      ],
      "author": {
        "name": "Zhangjian He",
        "email": "hezhangjian97@gmail.com",
        "time": "Wed Dec 17 23:21:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 17 23:21:31 2025 +0800"
      },
      "message": "chore: fix typo of EMA_ALPHA in MQTTSessionHandler (#209)\n\nSigned-off-by: Zhangjian He \u003chezhangjian97@gmail.com\u003e\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "d1bbba5cd8163fae0593733491860dccff77cff6",
      "tree": "39d04d6334ec88f33c5408e4adb85134cbe4d26d",
      "parents": [
        "67eb2ff06aeb9be39e3fa2d4ddeb17098040eef6"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Dec 17 18:19:35 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 17 18:19:35 2025 +0800"
      },
      "message": "Fix RC1 issues (#208)\n\n* Correct license \u0026 notice files content\n* Add missing license header \n* Exclude unnecessary files from src tarball\n* Fix path issue in .sha512 files\n* Support RAT check directly\n* Improve test execution stability and instructions in README"
    },
    {
      "commit": "67eb2ff06aeb9be39e3fa2d4ddeb17098040eef6",
      "tree": "c2cc52f918f0c91badb477fc11bebc52d89631af",
      "parents": [
        "683b57da79db118f07c597730c2dc0729f2b60fc"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Dec 08 20:22:05 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 08 20:22:05 2025 +0800"
      },
      "message": "Improved and fixed issues in release scripts\n\n1. release.sh: add support for -rc option\n2. plugin-release.sh: upload missing files"
    },
    {
      "commit": "683b57da79db118f07c597730c2dc0729f2b60fc",
      "tree": "0f2ef3b9ea7950a970cfeb4554832d9d55c54115",
      "parents": [
        "d2c45e5bfdad3682f0f1334ccec5d14e82bc6463"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Dec 08 10:43:57 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 08 10:43:57 2025 +0800"
      },
      "message": "Add disclaimer to maven artifacts\u0027 POM files (#200)\n\n"
    },
    {
      "commit": "d2c45e5bfdad3682f0f1334ccec5d14e82bc6463",
      "tree": "1f964cf80f91ceb8ed16d87e3e018267c006e3ca",
      "parents": [
        "23a05296b4ca8340ed0e90f1b78df88c9455beb1"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Fri Dec 05 15:07:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 05 15:07:03 2025 +0800"
      },
      "message": "Correct the branch version number (#199)\n\n"
    },
    {
      "commit": "23a05296b4ca8340ed0e90f1b78df88c9455beb1",
      "tree": "ad859c05fd7f42ace97b0fd8f22bc2e6e13fb63b",
      "parents": [
        "c759e48443779d34e3e348016956211621023a60"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Fri Dec 05 14:18:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 05 14:18:36 2025 +0800"
      },
      "message": "Add branch rule for upcoming release branch (#198)\n\n"
    },
    {
      "commit": "c759e48443779d34e3e348016956211621023a60",
      "tree": "68bff8e7f7c89d4f8e6bba4236b9eed37f7a07fb",
      "parents": [
        "bfc915aac6dfcea2e6c90e1b6a375f5c752649b6"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Dec 02 13:20:39 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 13:20:39 2025 +0800"
      },
      "message": "Update mvnw to unify build experience (#195)\n\n1. Update mvnw to unify build experience\n2. Add license header"
    },
    {
      "commit": "bfc915aac6dfcea2e6c90e1b6a375f5c752649b6",
      "tree": "1452fac2478249f24f499eac2b23892e5738b3b4",
      "parents": [
        "5d049ec5e1abc341cc375ee5c06c5f74e467ac74"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Fri Nov 28 18:30:01 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 28 18:30:01 2025 +0800"
      },
      "message": "First release chores (#194)\n\n1. Add missing dep module \u0026 fix bug in plugin-release script\n2. Add workflow for publishing docker image"
    },
    {
      "commit": "5d049ec5e1abc341cc375ee5c06c5f74e467ac74",
      "tree": "a6abfc0abf996065ebcead92c793484732378ba0",
      "parents": [
        "247ba20bfc58a491038cf955797794c4799def8a"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Nov 27 17:56:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 27 17:56:54 2025 +0800"
      },
      "message": "Update/add Apache BifroMQ plugin POM/BOM files and release script (#193)\n\n1. add an aggregator POM for apache maven deployment\n2. add/update release scripts using gpg-agent during signing process"
    },
    {
      "commit": "247ba20bfc58a491038cf955797794c4799def8a",
      "tree": "ab9401ea1ccc405d7b9350a7072bb042c1ee6e80",
      "parents": [
        "7d2f6d21a3e02c111e070bd02f98f762fc73a631"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Nov 26 18:04:41 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 18:04:41 2025 +0800"
      },
      "message": "Chores for the first incubator release: (#191)\n\nCo-authored-by: Gu Jiawei \u003cgujiaweijoe@foxmail.com\u003e"
    },
    {
      "commit": "7d2f6d21a3e02c111e070bd02f98f762fc73a631",
      "tree": "592ec0caf23621caddf07d100a198dd755d7189a",
      "parents": [
        "2b342e989ab8031e66f2530d297f45df6c81d6a3"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Nov 20 09:20:04 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 09:20:04 2025 +0800"
      },
      "message": "Fixes and improvements (#189)\n\n* Improved the deduplication mechanism on both accuracy and efficiency\n* Fixed the issue that affected DistWorkerCleaner\u0027s adaptive behavior\n* Improve InboxStoreCleaner to reduce running overhead on memory and timeliness\n* Resolved an issue that may cause fetch stop by flipping connection\n* Improved test stability and log output"
    },
    {
      "commit": "2b342e989ab8031e66f2530d297f45df6c81d6a3",
      "tree": "0c502fd96a982cd1a7eab615d1e348559f394daf",
      "parents": [
        "531c78b1263e36459c5a5361e986efb5e18a72c6"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Nov 12 09:17:58 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 12 09:17:58 2025 +0800"
      },
      "message": "Update merge protocol \u0026 various improvements for production stability (#188)\n\nBase-KV improvements:\nLoosens the merge prerequisite on config alignment, enhances the RedundantRangeRemovalBalancer to detect and purge zombie ranges, refactors the local engine for pluggability, and rolls out multiple optimizations—snapshot session reuse, obsolete snapshot filtering, leaner installation flow, lower split/merge memory pressure, faster distributed range lookup, RocksDB internal metrics toggles, redefined WAL compaction thresholds, improved WAL read path, and better default local-engine settings—alongside pluggable split hinters.\n\nInbox service optimizations:\nCuts read/write overhead in InboxStoreCoProc and accelerates BatchInsertRequest marshalling.\n\nMulti-tenancy enhancements:\nAdds tenant-level observability metrics and introduces a tenant-level switch to publish will messages during shutdown.\n\nBug fixes:\nResolves a NoSuchElementException when parsing AgentMetadata from CRDT and eliminates task duplication in BatchQueryCall."
    },
    {
      "commit": "531c78b1263e36459c5a5361e986efb5e18a72c6",
      "tree": "e0870cf4b72db863b76fba6f81440189be1fa17b",
      "parents": [
        "652621eefbd50828696114fdf441d63fd0855653"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Oct 18 11:12:46 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 18 11:12:46 2025 +0800"
      },
      "message": "Bump org.bouncycastle:bcpkix-jdk18on from 1.78.1 to 1.79 (#184)\n\nBumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.78.1 to 1.79.\n- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)\n- [Commits](https://github.com/bcgit/bc-java/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.bouncycastle:bcpkix-jdk18on\n  dependency-version: \u00271.79\u0027\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": "652621eefbd50828696114fdf441d63fd0855653",
      "tree": "c451e60da53c4a4b5ea91aaee761ab650e968162",
      "parents": [
        "fc40ee6b88b732f3e1dee55cc6966b3e8a38b983"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Fri Oct 17 10:14:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 10:14:16 2025 +0800"
      },
      "message": "Performance/memory optimizations, stability/bug fixes, and small enhancements (#183)\n\n* Reduce query stuttering effect during range topology change\n* Simplify client range router patching mechanism\n* Refactor BatchPubCall and related classes to improve fan-out handling and reduce memory overhead\n* Don\u0027t report redundant ServerBusy event\n* Reduce loading time by making DistWorkerCoProc/InboxStoreCoProc reset process async\n* Reduce memory overhead by doing contract to root after remove\n* Refactor base-kv to support report leader change to CoProc\n* Only report tenant metrics from leader co-proc\n* Optimize retry logic for pushing qos1/2 messages and adjust related events\n* New event for matching retained messages successfully and related tests\n* Add createdAt field to InboxMetadata and implement drop event reporting on delete\n* Add an api to retrieve inbox state\n* Reduce memory overhead during resetting\n* fixed the bug causing DistWorkerCleaner stop running\n* Adjust default values of gc params\n* Conditional clear batch call state during reset to avoid task leaking\n* Prevent concurrent update non-thread safe result proto builder\n* Improved child removal logic and add benchmarking for performance evaluation\n* Add set session type to ClientInfo before making attach request\n* Enhance DistWorkerCleaner with heuristic interval and step\n* Implemented dynamic sending window for confirmable messages\n* Improve gossiping:\n* Do not early confirm when single node\n* Reduce message complexity\n* Optimize child branch detachment and compression logic in TopicLevelTrie\n* Enhance TopicIndex to support custom value equality strategy\n* Fix potential consistency issue in TenantRouteCache and TopicIndex\n* Update tenant stats on inbox clearance and add integration test for session deletion\n* Refactor InboxMetaCache to reduce refresh/seek operation\n* Correct range lookup key for InboxCheckSubScheduler\n* Ensure strict fifo order for check permission call\n* Try drain staging buffer immediately after buffering message\n* Schedule an on-demand hint/confirm timeout to ensure fetch loop non-stop\n* Add @JsonMerge annotation to service configuration classes to reduce config file complexity further\n* Reduce IO overhead for InboxStoreCoProc"
    },
    {
      "commit": "fc40ee6b88b732f3e1dee55cc6966b3e8a38b983",
      "tree": "60807b643088782ea8e9165a36bac09d22a6a5bd",
      "parents": [
        "eaac04f56b34a245f03d7f7082cde7abcdf76bef"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Sun Sep 28 18:17:17 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 28 18:17:17 2025 +0800"
      },
      "message": "Memory  usage improvement (#180)\n\n1. Improve memory usage for route cache;\n2. Enhance restore session management to reuse existing sessions for the same snapshot and handle leader changes appropriately;\n3. Enhance snapshot handling to ignore obsolete snapshots based on committed progress;\n4. Streamlining snapshot installation process in order to reduce memory overhead;\n5. Reduce memory overhead during Split/Merge process;\n6. Improved dist worker range lookup efficiency."
    },
    {
      "commit": "eaac04f56b34a245f03d7f7082cde7abcdf76bef",
      "tree": "128f2f443a32d4b784e552edf9f951b468758d10",
      "parents": [
        "c4a2df1c433d9d0e5dffc0908ed07635b011fcac"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Thu Sep 25 09:11:52 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 25 09:11:52 2025 +0800"
      },
      "message": "Bump crdt store id in ut to avoid \"Inconsistent lattice\" assertion error. (#179)\n\n"
    },
    {
      "commit": "c4a2df1c433d9d0e5dffc0908ed07635b011fcac",
      "tree": "23818d0f54116d6c90c5be02217cb8a306d2c60a",
      "parents": [
        "f62f6d3927b0d00214f8f606ac81094046fb9521"
      ],
      "author": {
        "name": "yuanyang",
        "email": "361485583@qq.com",
        "time": "Wed Sep 24 11:58:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 24 11:58:38 2025 +0800"
      },
      "message": "Adjust the backpressure strategy for MQTT 3 and MQTT 5. (#178)\n\nhttps://cwiki.apache.org/confluence/display/BIFROMQ/BIP-003-Backpressure+Handling+Strategy+in+MQTT+Broker"
    },
    {
      "commit": "f62f6d3927b0d00214f8f606ac81094046fb9521",
      "tree": "4246aff184cd2f055cf1f66f1dcbb9af8e7e8e72",
      "parents": [
        "18e33d6d565de80cd76c9c1ca0c4d5770b345181"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Fri Sep 19 09:26:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 09:26:29 2025 +0800"
      },
      "message": "Improved tenant route cache refresh efficiency (#177)\n\n* Improved tenant route cache refresh efficiency and reduced memory overhead accordingly\n* Reduce heap usage during matching and routing"
    },
    {
      "commit": "18e33d6d565de80cd76c9c1ca0c4d5770b345181",
      "tree": "544c23fcc44ce0d92b2bc17337e395a008d2e6c7",
      "parents": [
        "d2ea0a007eef6304dbde0abbb3dcc1b22411de54"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Sep 15 22:59:37 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 15 22:59:37 2025 +0800"
      },
      "message": "Various improvements/fixes on long-running stability (#176)\n\nCore Stability \u0026 Bug Fixes\nFix stability issues and race conditions\n\n- Prevent NPE when landscape lacks local descriptor\n- Fix config change failure by forcing WAL compaction on FSM apply\n- Send EnsureRequest only from leader during config changes\n- Quit zombie replicas only when not in current config\n- Fix race causing pipeline retargeting to stall\n- Correctly handle duplicate matchinfo in inbox ingestion\n- Fix RedundantRangeRemovalBalancer mistakenly removing valid ranges\n- Fix ReplicaCntBalancer unbalanced state in edge cases\n\nBalancing \u0026 Resource Management\nImprove balancer stability and efficiency\n\n- Enhance RangeSplitBalancer and ReplicaCntBalancer for edge cases\n- Support partial load rules in BalancerController\n- Reduce HostMemberList and AGENT_HOST_MAP sync overhead\n- Exclude terminated ranges from effective routing\n- Optimize balancer logging output\n- Improve built-in balancer efficiency\n\nCRDT \u0026 Anti-Entropy\nCRDT and anti-entropy improvements\n\n- Correct log context and support MDCLogger with lambdas\n- Expose refute signal to speed up CRDT convergence\n- Improve housekeeping logic in CRDT-based metadata service\n- Correctly meter delta send rate and throughput\n- Improve stale member cleanup logic\n- Anti-entropy refinements:\n  * Reset resendCount on ACK to avoid spurious resets\n  * Continue syncing after ACK to drain deltas\n  * Leverage late/unmatched ACKs when possible\n\nPerformance \u0026 Reliability\nOptimize performance and backpressure handling\n\n- Reduce memory overhead in argument formatter\n- Improve backpressure when downstream stalls\n- Optimize bootstrap and config change workflow\n\nMiscellaneous\nChores and maintenance\n\n- Remove deprecated proto fields\n- Correct code format in Settings file\n- Enable manually triggered Coverity build"
    },
    {
      "commit": "d2ea0a007eef6304dbde0abbb3dcc1b22411de54",
      "tree": "edda0274f236e3c161b6c661cb556d082a115de9",
      "parents": [
        "1a6e3078eed82d8ae1c3e34d45500149419ca12a"
      ],
      "author": {
        "name": "yuanyang",
        "email": "361485583@qq.com",
        "time": "Thu Sep 11 16:14:28 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 11 16:14:28 2025 +0800"
      },
      "message": "Correct \u0027mqtt.tsub.latency\u0027 meter\n\n"
    },
    {
      "commit": "1a6e3078eed82d8ae1c3e34d45500149419ca12a",
      "tree": "bc9f8fc8ca19d963185644608736db06dc8a5da1",
      "parents": [
        "173eb37f8af41938f741619eb9475d813726b5c9"
      ],
      "author": {
        "name": "yuanyang",
        "email": "361485583@qq.com",
        "time": "Fri Aug 29 12:01:09 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 29 12:01:09 2025 +0800"
      },
      "message": "Expose heap dump dir via a dedicated env(defaults to log_dir) (#173)\n\n"
    },
    {
      "commit": "173eb37f8af41938f741619eb9475d813726b5c9",
      "tree": "cd2273a31de8118d1208243078f6ab24928860ea",
      "parents": [
        "c07c2c0099f39282ba5fd30d6af8c2e91b03348d"
      ],
      "author": {
        "name": "yuanyang",
        "email": "361485583@qq.com",
        "time": "Mon Aug 18 18:57:09 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 18 18:57:09 2025 +0800"
      },
      "message": "Resolve the issue of LOG_DIR environment variable not working (#171)\n\nCo-authored-by: liaodongnian \u003cliaodongnian@baidu.com\u003e"
    },
    {
      "commit": "c07c2c0099f39282ba5fd30d6af8c2e91b03348d",
      "tree": "35bf48c80d379e8cd4c20f805ccbb3316b1ebda9",
      "parents": [
        "7534ca25596379b19727cd11e6c13ee145a72aab"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Sat Aug 16 20:53:30 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 16 20:53:30 2025 +0800"
      },
      "message": "Switch to use WCH-balance mode with sticky enabled for dist pub rpc (#170)\n\n1. support hashing routing with sticky behavior for pipelined unary method which is more suitable for dist pub method;\n2.  Replace EnhancedMarshaller with a memory-efficient impl;\n3. Make WRR deterministic."
    },
    {
      "commit": "7534ca25596379b19727cd11e6c13ee145a72aab",
      "tree": "8404a9b8cc257f123fd1d43a4155984b0d65dc89",
      "parents": [
        "7c8765211b73717079d18bdb10ab3737f7d38f5b"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Aug 14 16:08:14 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 14 16:08:14 2025 +0800"
      },
      "message": "chores: (#169)\n\n1. mark \u0027uploading coverage data to coveralls.io\u0027 as a non-blocking step in cov build\n2. simplify project description\n3. update mailing list notification rules\n4. remove some unstable display badges\n5. remove the manual translation of readme"
    },
    {
      "commit": "7c8765211b73717079d18bdb10ab3737f7d38f5b",
      "tree": "615c26cb5e35d4ab6be34a1c99287b985b684afa",
      "parents": [
        "93eb4354ae2c53436c735d48421f4bbf019999ff"
      ],
      "author": {
        "name": "zhangShunLin",
        "email": "48191956+ZHANGSHUNLIN@users.noreply.github.com",
        "time": "Thu Aug 14 15:44:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 14 15:44:36 2025 +0800"
      },
      "message": "Add exception handling for ProxyProtocolHandler and reduce log level for MQTTPreludeHandler，closes #167 (#168)\n\n"
    },
    {
      "commit": "93eb4354ae2c53436c735d48421f4bbf019999ff",
      "tree": "acc98c0b6cc80cc5e789f8855f1a0aba1181ed45",
      "parents": [
        "6551e30abed936d35ca4bdbc9c0489a3f31be98e"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Aug 14 14:36:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 14 14:36:03 2025 +0800"
      },
      "message": "[Feat] new runtime settings for limiting fanout scale to persistent sessions (#166)\n\n* Tenant-level settings for limiting group fanout and persistent fanout\n* Report relevant events when throttling happens\n* Reduced memory consumption in data plane"
    },
    {
      "commit": "6551e30abed936d35ca4bdbc9c0489a3f31be98e",
      "tree": "2e2a0b2cb4324166017314f5b853098b023b5339",
      "parents": [
        "eb9ed9f8674e2725d5e65362564b8e805fea5cdb"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Aug 07 16:52:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 16:52:31 2025 +0800"
      },
      "message": "Remove non-compliant sentence (#165)\n\n"
    },
    {
      "commit": "eb9ed9f8674e2725d5e65362564b8e805fea5cdb",
      "tree": "bc8e3c486d652e8453da19a589e0a129c200eddd",
      "parents": [
        "0def69f1a9808305dfdac3c2a0102e3a35e591eb"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Aug 07 11:50:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 11:50:36 2025 +0800"
      },
      "message": "Fixed potential bytebuf leaks in edge cases (#164)\n\n1. release received bytebuf when failed to upgrade ws\n2. release received bytebuf when connection rejected due to rate limiting"
    },
    {
      "commit": "0def69f1a9808305dfdac3c2a0102e3a35e591eb",
      "tree": "3d93bbf725844c4a8e8b45feeb264f3c9bef1805",
      "parents": [
        "1b1045db7390981f3864ae3993e2832329917619"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Aug 06 16:18:13 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 06 16:18:13 2025 +0800"
      },
      "message": "Add logic to remove id-conflict KVRanges by considering the lexicographical order of store-id as a tie-breaker (#162)\n\n"
    },
    {
      "commit": "1b1045db7390981f3864ae3993e2832329917619",
      "tree": "51ea0111b0c02ca320607d686753bd619b825e9b",
      "parents": [
        "b378015bf3d5df047e1d392081564f7ba41c7f02"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Thu Jul 31 13:05:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 31 13:05:03 2025 +0800"
      },
      "message": "add link for mailing lists guide in README. (#160)\n\n"
    },
    {
      "commit": "b378015bf3d5df047e1d392081564f7ba41c7f02",
      "tree": "ec7192c980a419bca5e7b8803c60fbc0f5912574",
      "parents": [
        "1b3845e739a8ae74aa47676094c696998078e63f"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Jul 30 18:44:26 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 18:44:26 2025 +0800"
      },
      "message": "Various small improvements and code cleanup (#159)\n\n1. improve HLC impl and documentation\n2. fix the edge case so that \u00272,2,0\u0027 could be balanced to \u00272,1,1\u0027\n3. improve the session memory estimation\n4. code cleanup\n5. add contextual tags to compactor\u0027s metrics\n6. enable pin data which could reduce buffer copy in some cases"
    },
    {
      "commit": "1b3845e739a8ae74aa47676094c696998078e63f",
      "tree": "45ec5a4f225d5c447fbc662b35fb0a3e908edf1d",
      "parents": [
        "856cdb9474170bb462eee78c08befc1bde25e42d"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Jul 29 16:38:57 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 29 16:38:57 2025 +0800"
      },
      "message": "refactoring balancer state management and related API (#158)\n\n"
    },
    {
      "commit": "856cdb9474170bb462eee78c08befc1bde25e42d",
      "tree": "79de91e847bbbae39766dcec79ec860320d573c8",
      "parents": [
        "71355c37cead0863f7d88d399f1e5289ce8f4d62"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Jul 23 14:06:55 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 23 14:06:55 2025 +0800"
      },
      "message": "Add a new SPI for MQTT UserProperties customization (#157)\n\n* extract common type: TopicFilterOption \u0026 SubMessage(renamed to RouteMessage)\n\n* new SPI for customizing the user properties in both inbound and outbound messages"
    },
    {
      "commit": "71355c37cead0863f7d88d399f1e5289ce8f4d62",
      "tree": "238fd5efeb5be5177cd870579c92740b2f2784c8",
      "parents": [
        "ff8242f56ee26b82fa980d9e4dc4fe4ed7bf3b10"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Jul 21 17:54:34 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 21 17:54:34 2025 +0800"
      },
      "message": "make effective router immutable to prevent it from being changed accidentally (#156)\n\n"
    },
    {
      "commit": "ff8242f56ee26b82fa980d9e4dc4fe4ed7bf3b10",
      "tree": "a37fe1edcb2f7502d3ba104233b0c99f0fcedd18",
      "parents": [
        "0c77797877cc8f3d56dba212b2156d785d809165"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Jul 17 14:55:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 17 14:55:59 2025 +0800"
      },
      "message": "Check existence of inbox before detaching for CleanStart\u003dtrue (#155)\n\nCo-authored-by: haoyu \u003chaoy@jikre.com\u003e"
    },
    {
      "commit": "0c77797877cc8f3d56dba212b2156d785d809165",
      "tree": "98b1cd6af578ad51d3c573bf4fd7d896bf9ffb70",
      "parents": [
        "6f32e4d8f1b52ca2c9136576bbf0b2ee0a9d297b"
      ],
      "author": {
        "name": "daidai",
        "email": "changyuwei@selectdb.com",
        "time": "Wed Jul 16 11:47:31 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 16 11:47:31 2025 +0800"
      },
      "message": "add bifromq bom (#154)\n\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "6f32e4d8f1b52ca2c9136576bbf0b2ee0a9d297b",
      "tree": "950b9ac1c709eac8e93dc701893d59dd77b1aae9",
      "parents": [
        "7bc6ee1dab19d6736f142a187447d45d3c7f813a"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Tue Jul 15 15:48:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 15 15:48:16 2025 +0800"
      },
      "message": "1. fix link error in README; (#153)\n\n2. remove unused email address."
    },
    {
      "commit": "7bc6ee1dab19d6736f142a187447d45d3c7f813a",
      "tree": "f33b733e217feeb6a1b73079f969be51712a3432",
      "parents": [
        "7b3a5463edaeb4e22b4dbfd63817a39805514c9f"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Wed Jul 09 17:02:43 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 09 17:02:43 2025 +0800"
      },
      "message": "Change some notifications rules. (#152)\n\n* 1. change some notifications rules.\n\n* 1. enable discussions for project features"
    },
    {
      "commit": "7b3a5463edaeb4e22b4dbfd63817a39805514c9f",
      "tree": "dc902ab9d1deadba48a6e9be73e02a8a8970f4ae",
      "parents": [
        "9a27547c6bf6110ff3b61d3bca962ca56bcaa5dd"
      ],
      "author": {
        "name": "daidai",
        "email": "changyuwei@selectdb.com",
        "time": "Mon Jul 07 17:58:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 07 17:58:10 2025 +0800"
      },
      "message": "update jackson dependency in pom.xml. (#151)\n\n"
    },
    {
      "commit": "9a27547c6bf6110ff3b61d3bca962ca56bcaa5dd",
      "tree": "c51b646f25f6d70fc6d26aa629aeec09be017736",
      "parents": [
        "d71c19174e9a5337ac04177661df1a870b1c603f"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Jun 30 15:59:34 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 30 15:59:34 2025 +0800"
      },
      "message": "chores-update readme/code cleanup/etc (#150)\n\n"
    },
    {
      "commit": "d71c19174e9a5337ac04177661df1a870b1c603f",
      "tree": "673efdc3785c0b40b1b1dc008d40c482b337ba52",
      "parents": [
        "24d4a74f34975c7ae33c11d37d14cd92962e5759"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Thu Jun 26 15:13:36 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 26 15:13:36 2025 +0800"
      },
      "message": "chores - renaming/simplify versioning mgmt/update assembly/etc (#149)\n\n* using revision property to simplify version management\n\n* 1. add license/notice/disclaimer to assembly\n2. rename module build-bifromq-starters -\u003e build-bifromq-starter"
    },
    {
      "commit": "24d4a74f34975c7ae33c11d37d14cd92962e5759",
      "tree": "59a0e488ebbd7dc2d9fc6273ca95747c4a89fd0f",
      "parents": [
        "1fce264d2079b03a38bbb0f8492ed061cb3c9032"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Jun 25 15:22:01 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 25 15:22:01 2025 +0800"
      },
      "message": "update license/notice file with 3rd parties info (#147)\n\n* consolidate runtime dependencies\n\n* add/update License and Notice files"
    },
    {
      "commit": "1fce264d2079b03a38bbb0f8492ed061cb3c9032",
      "tree": "4f0d5c3501e90545c5ea66c65c846f550e3d13fc",
      "parents": [
        "b7f17af817eb09c0f6b32236245d28437221d1f8"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Jun 17 13:52:46 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 17 13:52:46 2025 +0800"
      },
      "message": "update archetype: reconfigure plugin\u0027s log context correctly (#146)\n\n"
    },
    {
      "commit": "b7f17af817eb09c0f6b32236245d28437221d1f8",
      "tree": "a5c78b6d2ddc49ea159bf99ad4343a5353245574",
      "parents": [
        "6d1e6f6361b5238dfdcc873431f4bc59db4f0471"
      ],
      "author": {
        "name": "zhangShunLin",
        "email": "48191956+ZHANGSHUNLIN@users.noreply.github.com",
        "time": "Mon Jun 16 13:30:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 13:30:03 2025 +0800"
      },
      "message": "Fixed the issue that cleanStart failed to cleanup previous persistent session when SEI \u003e 0. (#145)\n\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "6d1e6f6361b5238dfdcc873431f4bc59db4f0471",
      "tree": "d37163163dacc08df0c6ecbd93f6a39e994ab83d",
      "parents": [
        "1b9499eb178356df6436b8530add4b9f16d21bd8"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Mon Jun 16 09:40:25 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 16 09:40:25 2025 +0800"
      },
      "message": "Correct the matching key for the internal cache of ordered shared subscription. (#143)\n\n"
    },
    {
      "commit": "1b9499eb178356df6436b8530add4b9f16d21bd8",
      "tree": "874d0e84bb568bff42f455bb80e505cec6ad9856",
      "parents": [
        "aec3ad1f0a2dc9332cd61f4c4d1b3cf78a05b333"
      ],
      "author": {
        "name": "zhangShunLin",
        "email": "48191956+ZHANGSHUNLIN@users.noreply.github.com",
        "time": "Fri Jun 06 17:58:39 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 06 17:58:39 2025 +0800"
      },
      "message": "Fixed incorrect FQN in the demo plugin POM file. (#142)\n\n* Add test log file for debugging starter module"
    },
    {
      "commit": "aec3ad1f0a2dc9332cd61f4c4d1b3cf78a05b333",
      "tree": "856e6fe7b4f2adc8f15ceb35649a9b8f2f452bd7",
      "parents": [
        "878eabe586de4556cdbbbb516a687acf2149d8ac"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Fri Jun 06 15:55:01 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 06 15:55:01 2025 +0800"
      },
      "message": "Replace license headers \u0026 resolve dependencies\u0027 license compatibility issues (#141)\n\n* insert/replace license headers of all source files\n\n* remove the dependency of jakarta.annotation.api\n\n* switch to log4j to avoid license issue"
    },
    {
      "commit": "878eabe586de4556cdbbbb516a687acf2149d8ac",
      "tree": "019e9d4852f5971aad9bad7810db45ce086f2663",
      "parents": [
        "863fd240caff5350bc639059499a07f6264277fb"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Thu Jun 05 09:34:46 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 05 09:34:46 2025 +0800"
      },
      "message": "Remove unsupported step in GitHub Acton\n\nthe \"EndBug/add-and-commit\" which is used for auto fixing license header is not allowed to run under Apache org"
    },
    {
      "commit": "863fd240caff5350bc639059499a07f6264277fb",
      "tree": "0bd767a35630cbfc4a66b32c7c1cffb4923a7777",
      "parents": [
        "7308242684b1a917221705c5f20180d8139a1b03"
      ],
      "author": {
        "name": "zhangShunLin",
        "email": "48191956+ZHANGSHUNLIN@users.noreply.github.com",
        "time": "Wed Jun 04 14:49:41 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 14:49:41 2025 +0800"
      },
      "message": "Remove redundant Maven extensions (#138)\n\n* Remove redundant Maven extensions\n\n* Remove deprecated action workflow\n\n---------\n\nCo-authored-by: Yonny(Yu) Hao \u003cpopduke@gmail.com\u003e"
    },
    {
      "commit": "7308242684b1a917221705c5f20180d8139a1b03",
      "tree": "c8443b409232a0b87e45cb8ad55be03f4fd1c9a0",
      "parents": [
        "b94e6e15e4482d8de1dced294fcadf6eae15ede7"
      ],
      "author": {
        "name": "Gu Jiawei",
        "email": "gujiaweijoe@foxmail.com",
        "time": "Wed Jun 04 11:01:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 11:01:53 2025 +0800"
      },
      "message": "1. add SkyWalking Eyes license check. (#139)\n\n"
    },
    {
      "commit": "b94e6e15e4482d8de1dced294fcadf6eae15ede7",
      "tree": "e29638ab5841d9479e80c25309afa4b60f70a44b",
      "parents": [
        "f4060e6a76f55ce1ca712660875d0326abe96413"
      ],
      "author": {
        "name": "Yonny(Yu) Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Jun 03 10:02:41 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 03 10:02:41 2025 +0800"
      },
      "message": "Change groupId and java package prefix to \"org.apache.bifromq\" (#137)\n\n"
    },
    {
      "commit": "f4060e6a76f55ce1ca712660875d0326abe96413",
      "tree": "c5669b32436d3a5a7f0c06df8e37a34b1825bbf0",
      "parents": [
        "0f7f5afdfcbecf62ffae2b0463c4c58734203967"
      ],
      "author": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Fri May 30 14:43:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 30 14:43:03 2025 +0800"
      },
      "message": "Add a disclaimer to the README page \u0026 include a configuration file for GitHub settings. (#136)\n\n"
    },
    {
      "commit": "0f7f5afdfcbecf62ffae2b0463c4c58734203967",
      "tree": "10c41c93686ad8b68dbd2e268e59ee6ed8fb6861",
      "parents": [
        "2be6a5bb8b6c87537d5706703176a526ecf72aa3"
      ],
      "author": {
        "name": "daidai",
        "email": "changyuwei@selectdb.com",
        "time": "Fri May 30 13:00:19 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 30 13:00:19 2025 +0800"
      },
      "message": "Updated project metadata to align with ASF (#133)\n\n"
    },
    {
      "commit": "2be6a5bb8b6c87537d5706703176a526ecf72aa3",
      "tree": "e1a6bfdec2d1f7ef33eb82837e808364c4755899",
      "parents": [
        "8fd180931de53a1ef65e91563f8a744998919a15"
      ],
      "author": {
        "name": "daidai",
        "email": "changyuwei@selectdb.com",
        "time": "Sat May 24 20:51:15 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 24 20:51:15 2025 +0800"
      },
      "message": "add notice file (#132)\n\n"
    },
    {
      "commit": "8fd180931de53a1ef65e91563f8a744998919a15",
      "tree": "5bd0f4874eaaa8489dca4fc770cab01d214c6a75",
      "parents": [
        "b5f8b22924a5aa234717576db1042c6625d40ef2"
      ],
      "author": {
        "name": "daidai",
        "email": "changyuwei@selectdb.com",
        "time": "Fri May 23 11:04:43 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 23 11:04:43 2025 +0800"
      },
      "message": "add disclaimer and remove outdated CCLA reference (#131)\n\n"
    },
    {
      "commit": "b5f8b22924a5aa234717576db1042c6625d40ef2",
      "tree": "7bff101279f99586c5c74d9286310a0a86aab921",
      "parents": [
        "209131d18aa90d23826724ba8cb38a3d5fe6b654"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 16 13:15:26 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 16 13:15:26 2025 +0800"
      },
      "message": "fix coverage test break\n"
    },
    {
      "commit": "209131d18aa90d23826724ba8cb38a3d5fe6b654",
      "tree": "68478e5c4f7a3afb77b403bb58fb4e7184513a47",
      "parents": [
        "7d2633c6b62ac961669df7a2327cc0fedc0b1ad2"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 15 18:15:09 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 15 18:15:09 2025 +0800"
      },
      "message": "replace javax with jakarta\n"
    },
    {
      "commit": "7d2633c6b62ac961669df7a2327cc0fedc0b1ad2",
      "tree": "c69d0d4bee6c093ce80a5c09100b65da481e1922",
      "parents": [
        "78c4220859ee71f36e606ddaeb37d976419a36fd"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 15 17:17:44 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 15 17:24:28 2025 +0800"
      },
      "message": "bump grpc \u0026 protobuf to latest and simplify in-proc rpc impl accordingly\n"
    },
    {
      "commit": "78c4220859ee71f36e606ddaeb37d976419a36fd",
      "tree": "838a84dc5f088e113e60eb97b152bc7526ff424f",
      "parents": [
        "0d90e5f00d195086874ad4538a9e95cac245d125"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 09 14:50:53 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 09 14:50:53 2025 +0800"
      },
      "message": "Code de-dup: NettyUtils\n"
    },
    {
      "commit": "0d90e5f00d195086874ad4538a9e95cac245d125",
      "tree": "5472c3c7d7739b10464d2d595a8ddb2f3d75bc32",
      "parents": [
        "c767751bf91b143292fd9cd271562ecce61d0608"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 09 14:22:35 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 09 14:22:35 2025 +0800"
      },
      "message": "Using RollingFileAppender for sift logging\n"
    },
    {
      "commit": "c767751bf91b143292fd9cd271562ecce61d0608",
      "tree": "531a7341397c6439658c8aa2ab20727b78e39d01",
      "parents": [
        "9241def1b7bf107de1b17a572eef1112c58fe0f5"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Tue May 06 15:13:50 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 08 14:05:48 2025 +0800"
      },
      "message": "support auto-detect and parsing HAProxy protocol packet to discover real client address\n"
    },
    {
      "commit": "9241def1b7bf107de1b17a572eef1112c58fe0f5",
      "tree": "97e5daa05dc4826c390eef6357fd9cac96bb410c",
      "parents": [
        "33541fa0e5e9e42c6aee97efe721686ddedb53cc"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 08 10:08:18 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 08 11:43:29 2025 +0800"
      },
      "message": "Improve the stability of setup phase of base-kv integration tests\n"
    },
    {
      "commit": "33541fa0e5e9e42c6aee97efe721686ddedb53cc",
      "tree": "f4a8d7693415c7483fa63db43f37a0b28e6301ae",
      "parents": [
        "64b0905c41dda3dfef9a1f4ac18c83b830d85e6e"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed May 07 10:32:25 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed May 07 13:53:06 2025 +0800"
      },
      "message": "Fix warnings and errors during maven build and test\n"
    },
    {
      "commit": "64b0905c41dda3dfef9a1f4ac18c83b830d85e6e",
      "tree": "0a175b78a4fe222b0fd0f2d47144faa1a2e7b2fe",
      "parents": [
        "76c7baedb4077bb52601137bde6bc5db0dfa343e"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Tue May 06 18:11:03 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Tue May 06 18:33:41 2025 +0800"
      },
      "message": "Retry failed cases at least 5 times\n"
    },
    {
      "commit": "76c7baedb4077bb52601137bde6bc5db0dfa343e",
      "tree": "509d67c4e1b93e8876aef486936cc38ede743899",
      "parents": [
        "447b0d2697f6c564daeb3d0af4d3606dbade5178"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 02 13:31:54 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri May 02 13:31:54 2025 +0800"
      },
      "message": "handle the lost quorum recovering from special config changing during zombie cleanup\n"
    },
    {
      "commit": "447b0d2697f6c564daeb3d0af4d3606dbade5178",
      "tree": "2ae5e289acc5eaab177bdd0f1fa7dee21eceb91d",
      "parents": [
        "12dc6867ededb0a2193d51c8a5307cf2517a6ddb"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 01 21:23:28 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Thu May 01 21:38:04 2025 +0800"
      },
      "message": "1. solve the issue that commit index may go back in some extreme situation during config change\n2. code cleanup\n"
    },
    {
      "commit": "12dc6867ededb0a2193d51c8a5307cf2517a6ddb",
      "tree": "bee3c1b816fb7589f4b6ed7c3202e4cdb1a5990c",
      "parents": [
        "62df81d7a9cefde7238707df572a8bf43addf25f"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 18:54:35 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 23:22:11 2025 +0800"
      },
      "message": "Implement range router patch workflow\n"
    },
    {
      "commit": "62df81d7a9cefde7238707df572a8bf43addf25f",
      "tree": "5213147a618ca23bede1511cedad52e23cf98fde",
      "parents": [
        "1e18dba4af05910391ee9f3962c24692af2f965c"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 15:52:05 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 15:52:05 2025 +0800"
      },
      "message": "Simplify the implementation of leadership transfer\n"
    },
    {
      "commit": "1e18dba4af05910391ee9f3962c24692af2f965c",
      "tree": "5f453a5a7f7f7b27f8ef59caebc39671816e1109",
      "parents": [
        "19993033c3e54591a291be4727b52349126a69ac"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 15:00:03 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 15:00:03 2025 +0800"
      },
      "message": "Properly cancel ongoing operations when stopping raft node and improve exception types\n"
    },
    {
      "commit": "19993033c3e54591a291be4727b52349126a69ac",
      "tree": "99de59fdff543c60925f1380149daf3db5199dd8",
      "parents": [
        "4617c2423bfed18242da62f5c1e105da936b7133"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 14:58:26 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 14:58:26 2025 +0800"
      },
      "message": "Extract common utilities into base-util module and streamline async exception handling in various classes\n"
    },
    {
      "commit": "4617c2423bfed18242da62f5c1e105da936b7133",
      "tree": "9253f406d9561fdd78f33b7cb81fc9332c170abe",
      "parents": [
        "604a782ace37151ee83a78bf8be6129b4156e820"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 09:22:29 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Wed Apr 30 14:25:35 2025 +0800"
      },
      "message": "Optimize KVRange version handling and improve command submission logic in KVRange\n"
    },
    {
      "commit": "604a782ace37151ee83a78bf8be6129b4156e820",
      "tree": "e12555180a6ca86a01988e54c9f5f8ef18296b6e",
      "parents": [
        "50734204467b6bffe94547022957e670ee4fd9da"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Apr 29 16:26:05 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Apr 29 16:26:05 2025 +0800"
      },
      "message": "Add cluster config as part of Range state to make management operation completely deterministic.\n"
    },
    {
      "commit": "50734204467b6bffe94547022957e670ee4fd9da",
      "tree": "fb2589210246df44c02dd9865a48604df5a0ef9c",
      "parents": [
        "5187b00d2e88eb4adf584a4ae9230a31c273db7a"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Apr 29 16:24:50 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Tue Apr 29 16:24:50 2025 +0800"
      },
      "message": "Shorten rpc server await termination time to 5 seconds\n"
    },
    {
      "commit": "5187b00d2e88eb4adf584a4ae9230a31c273db7a",
      "tree": "dd618c34534bbc247c8fc0b0d3e88a5bdb74413f",
      "parents": [
        "856b9166df664efa46d6cbb16e53e74a8b1e70db"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Apr 28 17:27:23 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Apr 28 17:27:31 2025 +0800"
      },
      "message": "base-kv improvements:\n1. quit when FSM and WAL mismatch after restored from snapshot\n2. using dedicated executor for dumping snapshot data\n3. check range version before entering WAL \u0026 query queue\n"
    },
    {
      "commit": "856b9166df664efa46d6cbb16e53e74a8b1e70db",
      "tree": "6172468bb4ff9f7c544eaba767998b5ca1548e59",
      "parents": [
        "9fdbf5c616f0381bc0cb81789fdcb2f20bbdc582"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Apr 28 16:12:02 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Apr 28 16:12:02 2025 +0800"
      },
      "message": "Improve graceful shutdown \u0026 resolve warnings when setup executor\u0027s metrics\n"
    },
    {
      "commit": "9fdbf5c616f0381bc0cb81789fdcb2f20bbdc582",
      "tree": "6ecc3a64410adaee85116edcc9d4c96e75324ae2",
      "parents": [
        "6de317025ef4cf9015fd768efb3a6c0e1e3f9cd7"
      ],
      "author": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Fri Apr 25 11:09:42 2025 +0800"
      },
      "committer": {
        "name": "Yonny Hao",
        "email": "popduke@gmail.com",
        "time": "Mon Apr 28 15:40:59 2025 +0800"
      },
      "message": "Refactoring base-scheduler to 1) reduce the boilerplate codes, 2) simplify its startup parameter, 3) extract SPI for estimating pipeline capacity\n"
    }
  ],
  "next": "6de317025ef4cf9015fd768efb3a6c0e1e3f9cd7"
}
