)]}'
{
  "log": [
    {
      "commit": "592d59d12db356f8c98332d9e355a89d92590db3",
      "tree": "40ae83de4e05155aa950ca5768a49dd552ec1b37",
      "parents": [
        "44e49a99d05867869b81c8d9a55baa7b9f17637e"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Tue Oct 27 17:01:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 17:01:03 2026 +0800"
      },
      "message": "[ISSUE #11493] Avoid retaining channels for orphan unregister (#11494)\n\n* fix(proxy): avoid retaining channels for orphan unregister\n\nOnly cache remote channels for REGISTER heartbeats so an unmatched\nUNREGISTER cannot leave an unreachable entry in remoteChannelMap.\n\n* fix(proxy): preserve unregister delivery for uncached channels\n\nUse the decoded channel without caching it when an UNREGISTER arrives\nfor a channel absent from remoteChannelMap, so ConsumerManager can\nstill perform its normal cleanup."
    },
    {
      "commit": "44e49a99d05867869b81c8d9a55baa7b9f17637e",
      "tree": "ff00aaf066494cf8c0b233e4af9046290fed120f",
      "parents": [
        "bf5d874770f709e2f42c008756cbcd1cb2ed0912"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Tue Oct 27 11:17:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 11:17:30 2026 +0800"
      },
      "message": "[ISSUE #11466] Extract group max length into a field in TopicValidator (#11467)"
    },
    {
      "commit": "bf5d874770f709e2f42c008756cbcd1cb2ed0912",
      "tree": "9899d9ecd2235af5519a2b88eb0786d5ae58303b",
      "parents": [
        "4f0cd94d981b0f501c317aa215c76072c1ab6180"
      ],
      "author": {
        "name": "烤化の初雪",
        "email": "yangzihao_41@outlook.com",
        "time": "Tue Oct 27 11:08:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 11:08:42 2026 +0800"
      },
      "message": "[ISSUE #11041] Fix off-by-one in paginated metadata sync dropping the last entry (#11042)\n\nThe split-metadata pagination loops in MQClientAPIImpl and\nBrokerOuterAPI terminated on seq \u003e\u003d totalNum - 1 while the broker pages\n[seq, seq + maxNum) without overlap. For any entry count equal to one\nover a page boundary (N % pageSize \u003d\u003d 1) the last topic/subscription\ngroup was silently never requested. SlaveSynchronize#syncTopicConfig\nuses the same loop, so slaves permanently missed the newest topic.\nTerminate on seq \u003e\u003d totalNum instead.\n\nCo-authored-by: root \u003croot@xiaoyang.localdomain\u003e"
    },
    {
      "commit": "4f0cd94d981b0f501c317aa215c76072c1ab6180",
      "tree": "538bc6bb538f511833639f51f3e9b2fe6b3c5a12",
      "parents": [
        "23aaa3e7cbe086b89a82aa20e95b87b27fc36ccf"
      ],
      "author": {
        "name": "Xiao Yang",
        "email": "yangx_soft@163.com",
        "time": "Tue Oct 27 10:35:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 10:35:56 2026 +0800"
      },
      "message": "[ISSUE #11486] Prevent evicted LiteTopic clients from rejoining dispatch on full sync (#11487)"
    },
    {
      "commit": "23aaa3e7cbe086b89a82aa20e95b87b27fc36ccf",
      "tree": "ec9a7dad45502dd68689c3ca5d234a554d135c92",
      "parents": [
        "8ab8191478115d5e2f5344127fba704267fdb659"
      ],
      "author": {
        "name": "bai mengxuan",
        "email": "2013373049@qq.com",
        "time": "Mon Oct 26 14:52:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 14:52:26 2026 +0800"
      },
      "message": "fix(tools): stop trimming the ACL password in mqadmin create/updateUser (#11447)\n\nThe secret is a payload, not a name: the broker stores the secret verbatim and derives the\nclient\u0027s credentials from it, so a passphrase with leading or trailing whitespace is legal -\nand pasted secrets routinely carry one. CreateUserSubCommand and UpdateUserSubCommand ran it\nthrough StringUtils.trim before the call, which stores a secret the operator never typed:\nevery client that presents the real secret is then rejected with no hint about the\ndifference. The sendMessage body carried the same shape until #11414.\n\nDrop the trim on the password only - the username, user type and address keep theirs - and\ngive both commands the createAdminExt seam CopyUsersSubCommand already exposes, so the\nbehaviour is pinned by a test."
    },
    {
      "commit": "8ab8191478115d5e2f5344127fba704267fdb659",
      "tree": "1f2e3cf462858b0592ccc94b4fe509bf0f186428",
      "parents": [
        "38a7ca0d23a3e2d4339f9a2bf6e78cf541eed9e3"
      ],
      "author": {
        "name": "Felix-Gong",
        "email": "gongxiaofei24@iscas.ac.cn",
        "time": "Fri Oct 23 10:14:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 10:14:32 2026 +0800"
      },
      "message": "[ISSUE #11481] fix(broker): do not abort the queue-mapping clean pass on a missing remote queue (#11482)\n\ncleanItemListMoreThanSecondGen() validates, for every queue whose leader\nmoved, that the new leader agrees. It reads the new leader\u0027s hosted\nqueues with get(qId) and calls isEmpty() on the result unconditionally:\nwhen the remote broker\u0027s mapping does not contain that queue id at all —\nthe transient state this service exists to reconcile — the read returns\nnull and the pass dies with a NullPointerException.\n\nThe exception is swallowed by the per-topic catch, so the visible damage\nis silent: every remaining queue of that topic is skipped for this cycle,\nthe mapping is left half-cleaned, and the failure repeats every five\nminutes.\n\nTreat a missing remote queue as \"not confirmed yet\" and continue, which\nis how the surrounding reads already handle absent data.\n\nRed/green: remoteLeaderMissingTheQueueIdDoesNotAbortTheRestOfTheTopic\nfails on the old code (the second queue is never removed because the NPE\naborts the pass) and passes with the null guard. Broker module: 815\ntests, the 7 failures are pre-existing (RocksDB/filter/schedule/pop-lite/\nBrokerOuterAPI) and reproduce identically with this change stashed."
    },
    {
      "commit": "38a7ca0d23a3e2d4339f9a2bf6e78cf541eed9e3",
      "tree": "946a823431c7de1793a74d2294fd9f83d8b72e26",
      "parents": [
        "391f8ab00980908af7604f2534c3826e44b0c3c4"
      ],
      "author": {
        "name": "bai mengxuan",
        "email": "2013373049@qq.com",
        "time": "Thu Oct 22 17:22:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 17:22:47 2026 +0800"
      },
      "message": "[ISSUE #11477] fix(container): stop the container scheduler when the broker container shuts down\n\nBrokerContainer.initialize() schedules the name-server refresh and the five-second\nbrokerOuterAPI.refreshMetadata() task on scheduledExecutorService, and shutdown()\nstops the brokers, both remoting servers, the request executor and the outer API -\nbut not that scheduler. A shut-down container therefore keeps refreshing metadata\nthrough an API it has already closed, logging \"ScheduledTask refresh metadata\nexception\" every five seconds, and leaks the scheduler thread on every start/shutdown\ncycle. Stop it before the API is closed, the way the request executor next to it is\nstopped."
    },
    {
      "commit": "391f8ab00980908af7604f2534c3826e44b0c3c4",
      "tree": "c5da304b7f01fb817afdd153422e67a12c0ecf5c",
      "parents": [
        "57c2dc04f78cc7e73e6b8c9436ee0fff0d0f46c3"
      ],
      "author": {
        "name": "zhang hongyuan",
        "email": "100520587+Metastarx@users.noreply.github.com",
        "time": "Thu Oct 22 17:22:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 17:22:17 2026 +0800"
      },
      "message": "feat: add mqadmin getTopicConfig command (#11473)\n\nSigned-off-by: zhang hongyuan \u003c100520587+Metastarx@users.noreply.github.com\u003e"
    },
    {
      "commit": "57c2dc04f78cc7e73e6b8c9436ee0fff0d0f46c3",
      "tree": "04e700524fa22187aa431758c6c64c62cfe56cab",
      "parents": [
        "f3386107cba84dc56eca6cc6a0c2e5975fd2aff7"
      ],
      "author": {
        "name": "bai mengxuan",
        "email": "2013373049@qq.com",
        "time": "Tue Oct 20 09:19:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 09:19:19 2026 +0800"
      },
      "message": "[ISSUE #11427] fix(client): stop the pop consume service when the push consumer shuts down (#11428)"
    },
    {
      "commit": "f3386107cba84dc56eca6cc6a0c2e5975fd2aff7",
      "tree": "87d4f26f2983e8250f1922b8df0f1fbc7da49895",
      "parents": [
        "5d68880cbdfa5c6d87b5681c5eb3684df0e18ef8"
      ],
      "author": {
        "name": "bai mengxuan",
        "email": "2013373049@qq.com",
        "time": "Mon Oct 19 17:43:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 17:43:43 2026 +0800"
      },
      "message": "[ISSUE #11452] fix(common): name the file in the checkpoint crc mismatch message\n\nCheckpointFile.read builds the IOException for a crc32 mismatch with a \"file\u003d%s\"\nlabel but passes expectedCrc32 into it, so an operator who opens a corrupted\ncheckpoint reads e.g. \"file\u003d823222925\" - a checksum where the path that failed to\nload is expected - and the expected value itself is never named.\n\nPass the path that was read and label the expected checksum, and pin it with the\ncase that corrupts both the checkpoint and the .bak fallback read() falls back to."
    },
    {
      "commit": "5d68880cbdfa5c6d87b5681c5eb3684df0e18ef8",
      "tree": "f9056204f872c77154fcd1149933e342d36feb98",
      "parents": [
        "140e3d5763e11abf68c023b6753e885c89e61f74"
      ],
      "author": {
        "name": "bai mengxuan",
        "email": "2013373049@qq.com",
        "time": "Fri Oct 16 14:12:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:12:40 2026 +0800"
      },
      "message": "[ISSUE #11412] fix(store): report an empty batch consume queue as empty instead of throwing (#11417)"
    },
    {
      "commit": "140e3d5763e11abf68c023b6753e885c89e61f74",
      "tree": "241129e9a5f90fe2d0735bc2af1c2c9b5f5cca88",
      "parents": [
        "0e480153cc4213279321e09cf3bc6a6c7cff4c8c"
      ],
      "author": {
        "name": "Adrian Wang",
        "email": "129586579+Eppiehu@users.noreply.github.com",
        "time": "Thu Oct 15 16:06:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 16:06:09 2026 +0800"
      },
      "message": "[ISSUE #11398] Correct consumeMessage end timestamp option in documentation"
    },
    {
      "commit": "0e480153cc4213279321e09cf3bc6a6c7cff4c8c",
      "tree": "f660be1a3d2cb7b0aff58e15cc37a48d13aeeb81",
      "parents": [
        "39a0c767988cb476192c55142c06e033f3edabf1"
      ],
      "author": {
        "name": "Adrian Wang",
        "email": "129586579+Eppiehu@users.noreply.github.com",
        "time": "Thu Oct 15 10:47:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 10:47:16 2026 +0800"
      },
      "message": "[ISSUE #11415] Fix message count accounting in mqadmin consumeMessage"
    },
    {
      "commit": "39a0c767988cb476192c55142c06e033f3edabf1",
      "tree": "5b96045185ab80f3156b4325710cfc52798ea2b8",
      "parents": [
        "0dd48c39dbdfe0601200e31f441979f88d93ff99"
      ],
      "author": {
        "name": "Adrian Wang",
        "email": "129586579+Eppiehu@users.noreply.github.com",
        "time": "Thu Oct 15 10:26:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 10:26:16 2026 +0800"
      },
      "message": "fix: preserve message body whitespace in mqadmin sendMessage (#11414)"
    },
    {
      "commit": "0dd48c39dbdfe0601200e31f441979f88d93ff99",
      "tree": "42a5ecdb7878cfa68f80501f583347831160c8e5",
      "parents": [
        "dc70260b7b6bed6e05c65fc8e9321bccb65bee79"
      ],
      "author": {
        "name": "Untergang1",
        "email": "108453154+Untergang1@users.noreply.github.com",
        "time": "Wed Oct 14 17:29:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 17:29:47 2026 +0800"
      },
      "message": "[ISSUE #11402] Add unit tests for TopicSysFlag and SubscriptionSysFlag (#11404)"
    },
    {
      "commit": "dc70260b7b6bed6e05c65fc8e9321bccb65bee79",
      "tree": "d3303dc9bdfacd6a2015c56b2fb4dee368ceed7e",
      "parents": [
        "a7edeecfb662f54427dea79b1a37fb034f957195"
      ],
      "author": {
        "name": "leaveWhite9088",
        "email": "128596134+leaveWhite9088@users.noreply.github.com",
        "time": "Wed Oct 14 14:42:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 14:42:31 2026 +0800"
      },
      "message": "[ISSUE #11392] Ignore AI agent default files in .gitignore (#11395)\n\n* [ISSUE #11392] Ignore AI agent default files\n\nAdd common AI coding assistant configuration files (.claude/, CLAUDE.md,\n.cursor/, .cursorrules, .windsurf/, .windsurfrules, .aider*, .continue/,\n.codeium/, .gemini/, GEMINI.md, AGENTS.md) to .gitignore so contributors\ndo not accidentally commit local AI agent artifacts.\n\n* Also ignore .qoder/ default config files\n\nCovers the same rule proposed in #11391, making this PR a superset and\navoiding a merge conflict on .gitignore between the two PRs.\n\n* Also ignore Qoder, Cline, Roo Code, Augment, Amazon Q, Trae, Junie, Cody and Copilot default files"
    },
    {
      "commit": "a7edeecfb662f54427dea79b1a37fb034f957195",
      "tree": "4c55b0266eba04e31b8b5dbf0dc2bf4f552f1547",
      "parents": [
        "b76420599098c6f53bdf80544f8a1b7ffe678fa9"
      ],
      "author": {
        "name": "majialong",
        "email": "majialoong@gmail.com",
        "time": "Tue Oct 13 09:22:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 09:22:28 2026 +0800"
      },
      "message": "[ISSUE #11223] Fix stale lag time info remaining in getLiteGroupInfo after lite topic expired (#11224)"
    },
    {
      "commit": "b76420599098c6f53bdf80544f8a1b7ffe678fa9",
      "tree": "7199f072e4c0d9e524af9803854c962070b1b980",
      "parents": [
        "e1eb99c85296faba93ac43dd8edc8929f34fa126"
      ],
      "author": {
        "name": "imzs",
        "email": "imzs@foxmail.com",
        "time": "Mon Oct 12 13:36:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 13:36:26 2026 +0800"
      },
      "message": "[ISSUE #11272] Defer LMQ arrival notification to post-commit (#11273)"
    },
    {
      "commit": "e1eb99c85296faba93ac43dd8edc8929f34fa126",
      "tree": "5267bbd6880abe3c04d118dd8c735cd8052aee7f",
      "parents": [
        "9ea2ccdc2b41445aee5e177e14e501d606f5a1ed"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Mon Oct 12 11:07:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 11:07:25 2026 +0800"
      },
      "message": "[ISSUE #11203] Fix incorrect consumption mode reported for wildcard Lite groups (#11204)\n\nWildcard Lite consumer groups consume with clustering semantics, but the\nregistration path reported them as LITE_SELECTIVE, so the admin/console view\nshowed an incorrect consumption mode.\n\nInstead of adding a new MessageModel value, derive the Lite identity from the\nclient type carried on ProxyContext and normalize the reported model:\n\n- ClientActivity#registerConsumer writes the real client type into the context\n  via ctx.setClientType, so downstream no longer infers Lite identity from the\n  display-only LITE_SELECTIVE value.\n- ClientProcessor replaces validateLiteMode with validateLiteConsumer, which\n  reads ctx.isLiteConsumer() plus the real (remapped) SubscriptionGroupConfig to\n  enforce that Lite clients only register to Lite groups and vice versa, and\n  normalizes a wildcard Lite group\u0027s model to CLUSTERING before registration.\n\nThe overridden method signatures kept by the commercial subclass\n(registerConsumer, validateLiteSubTopic) are unchanged."
    },
    {
      "commit": "9ea2ccdc2b41445aee5e177e14e501d606f5a1ed",
      "tree": "1b7bcc5b9bfef3ff14ffe13cb2e8c8e4238841a2",
      "parents": [
        "5a6e349739bf2430d3d33250f8b1fcf92928405f"
      ],
      "author": {
        "name": "Xiao Yang",
        "email": "yangx_soft@163.com",
        "time": "Thu Oct 08 17:24:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 17:24:04 2026 +0800"
      },
      "message": "[ISSUE #11230] Fix self-eviction on repeated exclusive LiteTopic subscription (#11231)"
    },
    {
      "commit": "5a6e349739bf2430d3d33250f8b1fcf92928405f",
      "tree": "37a666bcba2966b3cecfd8e9106291df3b9efbba",
      "parents": [
        "bb996b4a5053a644375ceee2a8d897df4312aec2"
      ],
      "author": {
        "name": "zhang hongyuan",
        "email": "100520587+Metastarx@users.noreply.github.com",
        "time": "Thu Oct 08 14:46:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 14:46:23 2026 +0800"
      },
      "message": "[ISSUE #11306] fix(tools): compare long counters without truncating to int (#11274)\n\nGroupConsumeInfo.compareTo, TagCountBean.compareTo and\nQueryMsgByUniqueKeySubCommand.queryById subtracted two long values and cast\nthe difference to int, so a difference beyond Integer.MAX_VALUE reversed the\norder and broke the comparator contract that TimSort checks. Use\nLong.compare / Comparator.comparingLong instead.\n\nSigned-off-by: zhang hongyuan \u003c100520587+Metastarx@users.noreply.github.com\u003e"
    },
    {
      "commit": "bb996b4a5053a644375ceee2a8d897df4312aec2",
      "tree": "0dc819a3bea35b3ca9d532cd9c03f88a1d8161cc",
      "parents": [
        "a4b659b817ccc5e34d15599d38b90324e9d66255"
      ],
      "author": {
        "name": "健康宝",
        "email": "chennaji9@gmail.com",
        "time": "Thu Oct 08 10:46:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 10:46:11 2026 +0800"
      },
      "message": "[ISSUE #11283] fix(remoting): RpcClientUtils.encodeBody must not clobber the caller\u0027s ByteBuffer mark (#11296)\n\nencodeBody used mark()/get()/reset() on the caller\u0027s buffer, which\nrestored the position but silently overwrote any mark the caller had set,\nso a later reset() jumped to the wrong position. Read the remaining bytes\nfrom a duplicate() instead, leaving the original buffer\u0027s position, limit\nand mark untouched, and add a regression test.\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "a4b659b817ccc5e34d15599d38b90324e9d66255",
      "tree": "735099ec2a9b58a5d7b53fa8bf4a08ee3fd8b035",
      "parents": [
        "bef2f4810cb5f3b6b2cae90fb708e52b5529f2a0"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Thu Oct 08 09:54:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 09:54:09 2026 +0800"
      },
      "message": "[ISSUE #11250] Fix Lite topic ack re-dispatching the event while holding the pop lock (#11251)\n\n* [ISSUE #11250] Fix Lite topic ack re-dispatching the event while holding the pop lock\n\n- Decide the re-dispatch under the pop lock and dispatch after releasing it\n- Add a unit test asserting the pop lock is free when the ack dispatches\n\n* [ISSUE #11250] Re-trigger CI"
    },
    {
      "commit": "bef2f4810cb5f3b6b2cae90fb708e52b5529f2a0",
      "tree": "60a970e40fbe373226d88fba5079cab0dc16acf3",
      "parents": [
        "37af1437e60e48009105c4a32851fb67f4c7acb8"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Thu Oct 08 09:53:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 09:53:49 2026 +0800"
      },
      "message": "[ISSUE #11248] Fix Lite topic consumer losing messages when notified before they are readable (#11249)\n\n* [ISSUE #11248] Fix Lite topic consumer losing messages when notified before they are readable\n\n- Mark a lite topic in the per-request dedup set only after messages are read\n- Retry a re-dispatch within the same pop after an empty read instead of dropping it\n- Add unit tests for the empty-read path of popLiteTopic and popByClientId\n\n* [ISSUE #11248] Re-trigger CI"
    },
    {
      "commit": "37af1437e60e48009105c4a32851fb67f4c7acb8",
      "tree": "c32792085993ac165fd108a3be39c1766c56bbef",
      "parents": [
        "78b96bc5e21216cd7896efae08f90c5cde4cae53"
      ],
      "author": {
        "name": "Rui Yin",
        "email": "2260891073@qq.com",
        "time": "Sat Oct 03 15:27:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 03 15:27:10 2026 +0800"
      },
      "message": "[ISSUE #10478] Support Lite messages in proxy local mode (#11053)\n\n* [ISSUE #10478] Support Lite messages in proxy local mode\n\n* [ISSUE #10478] Cover Lite pop edge cases and log invalid metadata"
    },
    {
      "commit": "78b96bc5e21216cd7896efae08f90c5cde4cae53",
      "tree": "ed9f2360dfd144600dcf370a2249fad2575c08fc",
      "parents": [
        "fb1b30cbd2edeed713804d10f8cf0c12f80552a5"
      ],
      "author": {
        "name": "beautyarbutin",
        "email": "169455703+beautyarbutin@users.noreply.github.com",
        "time": "Wed Sep 23 14:42:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 14:42:31 2026 +0800"
      },
      "message": "[ISSUE #10853] fix(store): validate HA state ordinals (#11200)\n\n* [ISSUE #10853] fix(store): validate HA state ordinals\n\n* test(store): cover valid HA state ordinals"
    },
    {
      "commit": "fb1b30cbd2edeed713804d10f8cf0c12f80552a5",
      "tree": "c07005051dae18e508871760d5e1db04ac42ac3e",
      "parents": [
        "6291ce1ed398f5eb2571006d8964ac7afa2adcd4"
      ],
      "author": {
        "name": "hqbfz",
        "email": "125714719+3424672656@users.noreply.github.com",
        "time": "Tue Sep 22 11:43:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 11:43:11 2026 +0800"
      },
      "message": "[ISSUE #11156]fix(timer): persist TimelineRollService checkpoint to avoid repeated and loss (#11157)\n\n* fix(timer): persist TimelineRollService checkpoint to avoid repeated rolls\n\nScan hour-sized windows from a RocksDB checkpoint instead of sleeping a fixed interval, so delayed scans do not skip or re-roll the same timer messages.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* Persist the roll checkpoint only after the messages are reput\n\nTimelineRollService used to write the checkpoint right after a scan, so a crash\nbetween the scan and the reput dropped the whole window. The reput service now\nowns the write and takes the key to write, which lets the roll queue persist its\nown checkpoint the same way the expired queue already does. Roll keeps its scan\nfrontier in memory and advances it per window, as TimelineForwardService does.\n\nWithout a persisted roll checkpoint the frontier is derived from the delivery\ncheckpoint plus one maximum delay, so a broker that ran without this key\nre-scans its windows instead of skipping them.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* Drop timerRocksDBRollIntervalHours and back off on roll errors\n\nA checkpoint driven loop advances one window per window width, so the width and\nthe cadence are the same quantity and only one config can define it. Keep\ntimerRocksDBRollRangeHours as the scan window width and remove\ntimerRocksDBRollIntervalHours, which no longer has a role of its own.\n\nThe outer catch used to log and retry immediately, spinning the thread while\nrocksdb keeps throwing.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* fix\n\n* Retrigger CI\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* Honor timerEnableRetryUntilSuccess in the RocksDB timer reput path\n\nReuse the file-wheel flag so a recoverable put keeps retrying instead of\nadvancing the roll checkpoint after a fixed number of failures.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n* Retrigger CI\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n\n---------\n\nCo-authored-by: hqbfzwang \u003chqbfzwang@tencent.com\u003e\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "6291ce1ed398f5eb2571006d8964ac7afa2adcd4",
      "tree": "89409f29c9d0d486e4f68a51e6e4079678e84c9b",
      "parents": [
        "8227ecd1acab927d3400b115644a60f489ff6169"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Tue Sep 22 11:07:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 11:07:00 2026 +0800"
      },
      "message": "[ISSUE #11191] Fix Lite topic consumer losing messages on event re-dispatch during a pop (#11192)\n\n- Mark the dedup entry only after a lite topic is handled under the pop lock, not when it is FIFO-blocked, so a re-dispatched event is retried instead of dropped\n- Move the processed-set marking into popLiteTopic and narrow its visibility\n- Add a regression test reproducing the concurrent ack-unblock event loss"
    },
    {
      "commit": "8227ecd1acab927d3400b115644a60f489ff6169",
      "tree": "853b6aafdcbd419f8e6ca010af87294fbc1c1236",
      "parents": [
        "89d51387bf03feb56115dc48260c29d41cafb8b6"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Mon Sep 21 16:01:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 16:01:43 2026 +0800"
      },
      "message": "[ISSUE #11170] Preserve transaction subscriptions before first heartbeat (#11171)"
    },
    {
      "commit": "89d51387bf03feb56115dc48260c29d41cafb8b6",
      "tree": "e5728e48a29b2bbc04959ccc89b1541fc83dea6a",
      "parents": [
        "050d2b42b08bdfdf3ed273084d4aee2a9be7135c"
      ],
      "author": {
        "name": "majialong",
        "email": "majialoong@gmail.com",
        "time": "Mon Sep 21 10:15:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 10:15:18 2026 +0800"
      },
      "message": "[ISSUE #11176] Fix incorrect filter appender name in broker logging configuration (#11177)"
    },
    {
      "commit": "050d2b42b08bdfdf3ed273084d4aee2a9be7135c",
      "tree": "e275247d18bc67f5f745af89f2c6fc227ee4ee11",
      "parents": [
        "42a6d576abda5761f56c74623a2ae49d0d8b91b5"
      ],
      "author": {
        "name": "lizhimins",
        "email": "707364882@qq.com",
        "time": "Sun Sep 20 11:35:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 20 11:35:07 2026 +0800"
      },
      "message": "[ISSUE #11168] Fix tiered storage commit failure reporting and related hazards (#11169)"
    },
    {
      "commit": "42a6d576abda5761f56c74623a2ae49d0d8b91b5",
      "tree": "91e80e3968dff8c752cc0ac14202081ef87e13a4",
      "parents": [
        "bc33e8e4d7b25089af5f51bc669bdfedabfebe7d"
      ],
      "author": {
        "name": "rongtong",
        "email": "jinrongtong16@mails.ucas.ac.cn",
        "time": "Thu Sep 17 18:34:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 18:34:49 2026 +0800"
      },
      "message": "Remove synchronized from deleteTopic. (#9997)\n\nCo-authored-by: RongtongJin \u003cuser@example.com\u003e"
    },
    {
      "commit": "bc33e8e4d7b25089af5f51bc669bdfedabfebe7d",
      "tree": "fd9919043e1aafc8beaa27b3c089baedc9d20c59",
      "parents": [
        "80e1ae55773c2330d2005b86f020ed028f649e94"
      ],
      "author": {
        "name": "imzs",
        "email": "imzs@foxmail.com",
        "time": "Wed Sep 16 14:17:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 14:17:26 2026 +0800"
      },
      "message": "[ISSUE #11078] Support suppressing minimal-value metrics to reduce export payload (#11079)"
    },
    {
      "commit": "80e1ae55773c2330d2005b86f020ed028f649e94",
      "tree": "f5d039c38aaeefd58a6bcce9bcc1546ee0a35be9",
      "parents": [
        "4dad755fdc07a81650c04c43c211952d1a27b2a0"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Tue Sep 15 10:03:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 10:03:56 2026 +0800"
      },
      "message": "[ISSUE #11163] Fix lite topic prefix index not maintained on first message (#11164)\n\n- Correct the off-by-one offset check in LiteEventDispatcher.dispatch (offset \u003d\u003d 0 -\u003e \u003d\u003d 1) so onLmqCreate fires on the first arriving message\n- Restore store-dependent lifecycle tests to the concrete impl test classes, driven by real putMessage through the notify path\n- Add MessageArrivingListener overloads to LiteTestUtil to wire the real dispatch path in tests"
    },
    {
      "commit": "4dad755fdc07a81650c04c43c211952d1a27b2a0",
      "tree": "f3b8fd7f6a65dda538957ab12ff9042ab77e8af6",
      "parents": [
        "923a80e9f49cf79b3424efb3228c602afb46c35b"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Tue Sep 15 08:42:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 08:42:36 2026 +0800"
      },
      "message": "[ISSUE #10980] Encode and decode POP checkpoint and ack messages without the intermediate JSON string (#10981)\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "923a80e9f49cf79b3424efb3228c602afb46c35b",
      "tree": "82b6b5557a9fff80942c1caed56efbbee9e39401",
      "parents": [
        "290d440e7d7beefb18740968f7129694fa016537"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Mon Sep 14 17:19:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 17:19:37 2026 +0800"
      },
      "message": "[ISSUE #11161] Fix closeChannel table eviction and ChannelWrapper.close lock ordering (#11162)"
    },
    {
      "commit": "290d440e7d7beefb18740968f7129694fa016537",
      "tree": "0ab1b368ffb647ba75bcb6fe3ff216a3923782d1",
      "parents": [
        "e38f72c788d2cda9993fb0d4a913eb28f726b04d"
      ],
      "author": {
        "name": "Xiao Yang",
        "email": "yangx_soft@163.com",
        "time": "Mon Sep 14 10:23:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 10:23:13 2026 +0800"
      },
      "message": "[ISSUE #11087] Validate lite.bind.topic for LiteTopic groups (#11088)\n\n* [ISSUE #11087] Validate lite.bind.topic for LiteTopic groups\n\n* Update"
    },
    {
      "commit": "e38f72c788d2cda9993fb0d4a913eb28f726b04d",
      "tree": "17091ba2b99694ebd58825df407041bf581e33bf",
      "parents": [
        "1a50c6e4e35524ac22055b76fc0ff2a6d3cff99f"
      ],
      "author": {
        "name": "shown",
        "email": "yuluo08290126@gmail.com",
        "time": "Sun Sep 13 08:58:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 08:58:16 2026 +0800"
      },
      "message": "[ISSUE #10877] fix(filter): convert boolean string operands safely"
    },
    {
      "commit": "1a50c6e4e35524ac22055b76fc0ff2a6d3cff99f",
      "tree": "b8a4e8a3768fcc7c7d2e230759356f3acd242f36",
      "parents": [
        "d38f81e787c2bb3d05a601192a8014e771b829a4"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Fri Sep 11 15:57:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 15:57:57 2026 +0800"
      },
      "message": "[ISSUE #11129] Fix HashedWheelTimer leak of Lite pop on broker shutdown (#11130)\n\n- Shutdown the Lite pop processor\u0027s ConsumerOrderInfoManager in BrokerController shutdown flow"
    },
    {
      "commit": "d38f81e787c2bb3d05a601192a8014e771b829a4",
      "tree": "c3f43f5fec5e8ffdd87e27294134524e2f873093",
      "parents": [
        "8045955432df0482587ed5cfa58e5c2b219d2729"
      ],
      "author": {
        "name": "zhaohai",
        "email": "33314633+zhaohai666@users.noreply.github.com",
        "time": "Fri Sep 11 11:43:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 11:43:49 2026 +0800"
      },
      "message": "[ISSUE #10825] feat(proxy): Implement the Proxy Admin gRPC management interface (#10826)\n\nImplement the control-plane admin capability as a gRPC service\nserved from the proxy process (NOT connecting to broker remoting/grpc\ndirectly), per the rocketmq-apis admin.proto contract.\n---------\nCo-authored-by: lizhimins \u003c707364882@qq.com\u003e"
    },
    {
      "commit": "8045955432df0482587ed5cfa58e5c2b219d2729",
      "tree": "52e22a200d47649e536e8fd4fc5b88c07b653084",
      "parents": [
        "df5b53d0e5cac20db964ca9a94300f2d63758eff"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Fri Sep 11 10:18:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 10:18:26 2026 +0800"
      },
      "message": "[ISSUE #11089] Share consumption executors for Proxy internal clients (#11090)"
    },
    {
      "commit": "df5b53d0e5cac20db964ca9a94300f2d63758eff",
      "tree": "5e52382f310d8ea433d3d58f88df3997224ace11",
      "parents": [
        "eedd7607de97368c0dcb45a4c28867ce3226df24"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Thu Sep 10 13:57:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 13:57:15 2026 +0800"
      },
      "message": "[ISSUE #11080] Skip unused remoting client event executor (#11081)"
    },
    {
      "commit": "eedd7607de97368c0dcb45a4c28867ce3226df24",
      "tree": "051ebc51d8b1e9d9b95ce267ec4aba50cbec459d",
      "parents": [
        "aea87c4e42dbce2ce9653cb55a088031ade239f1"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Thu Sep 10 13:45:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 13:45:34 2026 +0800"
      },
      "message": "[ISSUE #11083] Release owned gRPC event loops and stabilize POP priority tests (#11084)"
    },
    {
      "commit": "aea87c4e42dbce2ce9653cb55a088031ade239f1",
      "tree": "927e73a02b75b67dc42d32fd2217d2f2a998a110",
      "parents": [
        "4fd0e3beeafbb57b8c3050edf5cebcbfde0d2e25"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Thu Sep 10 13:44:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 13:44:33 2026 +0800"
      },
      "message": "[ISSUE #11091] Fix remoting sub-server timeout scanning and scheduler shutdown (#11092)"
    },
    {
      "commit": "4fd0e3beeafbb57b8c3050edf5cebcbfde0d2e25",
      "tree": "d517e13f2d502d2fc1476774b8a3d08845d9d0e5",
      "parents": [
        "37808b38c1405c9bb433df04f0b88ea063dfd6e1"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Wed Sep 09 15:15:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 15:15:39 2026 +0800"
      },
      "message": "[ISSUE #11085] Stabilize offset reset tests and guard POP revive cache logging (#11086)"
    },
    {
      "commit": "37808b38c1405c9bb433df04f0b88ea063dfd6e1",
      "tree": "e53f3b14d817c96716898ab90a1b9eafc01f280d",
      "parents": [
        "93c6d96f9099f7075203701d50c2ac1bfee7fb3b"
      ],
      "author": {
        "name": "dingshuangxi888",
        "email": "dingshuangxi888@gmail.com",
        "time": "Wed Sep 09 10:26:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 10:26:04 2026 +0800"
      },
      "message": "fix(auth): tolerate blank subscription topics in heartbeats (#11082)\n\n* fix(auth): tolerate empty topics in consumer heartbeats\n\n* fix(auth): skip blank heartbeat subscription topics\n\n---------\n\nCo-authored-by: shuangxi.dsx \u003cshuangxi.dsx@alibaba-inc.com\u003e"
    },
    {
      "commit": "93c6d96f9099f7075203701d50c2ac1bfee7fb3b",
      "tree": "ebd4646ca24e41672b86f828c9d8a935ee1debf4",
      "parents": [
        "fd2dc2ffc2acb0515f5f810096de842aa0a80812"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Wed Sep 09 09:57:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 09:57:33 2026 +0800"
      },
      "message": "[ISSUE #11072] Reject route queries when NameServer shuts down (#11073)"
    },
    {
      "commit": "fd2dc2ffc2acb0515f5f810096de842aa0a80812",
      "tree": "4fca9a4765113e4285dcfe0123b503b4664741c6",
      "parents": [
        "1e291128537c8fc5a19749775ccdd87dbe12597a"
      ],
      "author": {
        "name": "ymwneu",
        "email": "ymwneu@126.com",
        "time": "Tue Sep 08 15:39:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 15:39:58 2026 +0800"
      },
      "message": "[ISSUE #11000] Extract user-property validation in SendMessageActivity#buildMessageProperty into an overridable checkUserProperties method (#11001)\n\nExtract the user property validation logic (property count limit,\nreserved-key check, control character check) from buildMessageProperty()\ninto a standalone protected checkUserProperties() method. The property\nsize accumulation stays in buildMessageProperty()."
    },
    {
      "commit": "1e291128537c8fc5a19749775ccdd87dbe12597a",
      "tree": "d80441ecd2b32b44992b017483e0d7ecd1bffd99",
      "parents": [
        "66362b9c9f013f3ee7e510f5dbfb792c2053d3bd"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Tue Sep 08 15:38:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 15:38:33 2026 +0800"
      },
      "message": "[ISSUE #10929] Add LmqPrefixIndex to accelerate wildcard dispatch and refine lite subscription model (#10930)\n\n* [ISSUE #10929] Add LmqPrefixIndex to accelerate wildcard dispatch and refine lite subscription model\n\n- Add LmqPrefixIndex, a prefix-ordered in-memory index over lmq names, bootstrapped at startup and maintained via onLmqCreate/onLmqDelete hooks\n- Rewrite wildcard full dispatch, getLiteTopicCount, collectByParentTopic and cleanByParentTopic on index-backed forEachLiteTopicByPrefix/ByParent, turning O(total lmqs) scans into O(matched lmqs)\n- Refine lite subscription model: replace SubscriberWrapper with Map-based getAllSubscribers, simplify getWildcardGroupClients, rename getLiteTopicSet to getLmqSet, make LiteCtlListener callbacks default methods\n\n* [ISSUE #10929] Retrigger CI"
    },
    {
      "commit": "66362b9c9f013f3ee7e510f5dbfb792c2053d3bd",
      "tree": "c94142d091286c4abf3fbd08d82f8350d0957b9e",
      "parents": [
        "706142718f2e49e8fe22239e1159633eeb231d81"
      ],
      "author": {
        "name": "dingshuangxi888",
        "email": "dingshuangxi888@gmail.com",
        "time": "Tue Sep 08 09:42:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 09:42:40 2026 +0800"
      },
      "message": "fix(auth): address ACL follow-up regressions (#11009)\n\nCo-authored-by: shuangxi.dsx \u003cshuangxi.dsx@alibaba-inc.com\u003e"
    },
    {
      "commit": "706142718f2e49e8fe22239e1159633eeb231d81",
      "tree": "1ae1a15c98ff37d3272b5997abe1b7b308959172",
      "parents": [
        "ff8f6f74c560e391261ccd716707c6d20422e253"
      ],
      "author": {
        "name": "rongtong",
        "email": "jinrongtong16@mails.ucas.ac.cn",
        "time": "Mon Sep 07 17:33:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 17:33:09 2026 +0800"
      },
      "message": "[ISSUE #9916] Remove getTimerCheckpoint() from BrokerController (#9905)\n\n* refactor: remove getTimerCheckpoint() from BrokerController\n\n* Update SlaveSynchronizeTest.java\n\nfix UnnecessaryStubbing\n\n---------\n\nCo-authored-by: RongtongJin \u003cuser@example.com\u003e\nCo-authored-by: sun \u003clwclover@126.com\u003e"
    },
    {
      "commit": "ff8f6f74c560e391261ccd716707c6d20422e253",
      "tree": "2906636abebfd7eccfd89b23a4d59a2cf338eaf6",
      "parents": [
        "d442063fe0fa071869582c590be3066d87a93beb"
      ],
      "author": {
        "name": "lizhimins",
        "email": "707364882@qq.com",
        "time": "Fri Sep 04 15:17:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 15:17:02 2026 +0800"
      },
      "message": "[ISSUE #11011] Fix misplaced license header in ConfigManagerTest (#11012)\n\nMove the ASF license comment to the top of the file, before the\npackage statement. It was squeezed onto the same line as the package\ndeclaration (introduced by b6ff649291), which breaks the conventional\nheader placement used across the codebase."
    },
    {
      "commit": "d442063fe0fa071869582c590be3066d87a93beb",
      "tree": "41b3d0e46d2906478e4c1aeea31c4d972b53673a",
      "parents": [
        "88846a0a5b550116d183f62c1a468e75ca3f61d4"
      ],
      "author": {
        "name": "lizhimins",
        "email": "707364882@qq.com",
        "time": "Fri Sep 04 10:27:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 10:27:05 2026 +0800"
      },
      "message": "[ISSUE #11007] Fix flaky CreateAndUpdateTopicIT by awaiting route propagation (#11008)\n\nWrap the topic route-size assertions in awaitility polling so the tests\nwait for broker-\u003eNameServer route propagation instead of asserting\nimmediately. This removes the race condition that intermittently caused\n\u0027Expected size: 3 but was: 2\u0027 failures in the CI pipeline.\n\nApplied to testCreateOrUpdateTopic_EnableSingleTopicRegistration,\ntestStaticTopicNotAffected and testCreateOrUpdateTopic_EnableSplitRegistration,\nconsistent with the existing awaitility pattern in the same class."
    },
    {
      "commit": "88846a0a5b550116d183f62c1a468e75ca3f61d4",
      "tree": "750394ddc7fd9c85bcc53e95c76301e403ca584b",
      "parents": [
        "e533b663fb7c9cc30eb15c182671a94b681b0ac6"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Thu Sep 03 15:55:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 15:55:22 2026 +0800"
      },
      "message": "[ISSUE #10288] Hold MappedFile reference in ConsumeQueue write path to prevent SIGSEGV (#10566)\n\nConsumeQueue.putMessagePositionInfo() accesses MappedFile without\nholding a reference count. A concurrent cleanExpiredConsumeQueue\ncan destroy() the MappedFile (unmapping its buffer) while the\nwriter is still using it, causing SIGSEGV in JIT-compiled\nUnsafe.copyMemory.\n\nFix: Call mappedFile.hold() before accessing the buffer and\nrelease() in a finally block, following the same pattern used\nin DefaultMappedFile.getData(). Also protect the fillPreBlank\ncall in initializeWithOffset.\n\nReported crash signatures:\n- Case 1 (v4.9.4): SEGV_MAPERR in ReputMessageService thread\n  at ConsumeQueue.putMessagePositionInfo\n- Case 2 (v5.3.3): SEGV in AdminBrokerThread at\n  ConsumeQueueStore.cleanExpired\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "e533b663fb7c9cc30eb15c182671a94b681b0ac6",
      "tree": "6996e1c358cd5fe8e3bf404c036c14cd6a5c5a88",
      "parents": [
        "bee586bcd08833e969aaa7b81171569c02102a7a"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Thu Sep 03 15:54:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 15:54:43 2026 +0800"
      },
      "message": "[ISSUE #10972] Encode timer message propertiesString after internal properties are cleared (#10974)\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "bee586bcd08833e969aaa7b81171569c02102a7a",
      "tree": "678c8d92591c6c60ce258e0198705c0b605c3656",
      "parents": [
        "c624d69520018df58a01c98a986df15166fde727"
      ],
      "author": {
        "name": "dingshuangxi888",
        "email": "dingshuangxi888@gmail.com",
        "time": "Thu Sep 03 15:36:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 15:36:26 2026 +0800"
      },
      "message": "Improve ACL 2.0 authentication and authorization handling (#10997)\n\n* fix(auth): require topic for view message authorization\n\n* fix(auth): restrict user password responses\n\n* fix(auth): trust only authenticated gRPC subject\n\n* fix(auth): complete ACL follow-up handling"
    },
    {
      "commit": "c624d69520018df58a01c98a986df15166fde727",
      "tree": "3164e9350c0d61c42b27752cff2fdae64613d4b7",
      "parents": [
        "50258ab2c98e0fd0e8b3783d977f83444ce53836"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Thu Sep 03 15:06:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 15:06:57 2026 +0800"
      },
      "message": "[ISSUE #10969] Hoist per-batch constant min/max offset strings out of message loop in PullAPIWrapper (#10971)\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "50258ab2c98e0fd0e8b3783d977f83444ce53836",
      "tree": "a3e4a9e48c3bc7b4a7f2c8326d888de26caa4363",
      "parents": [
        "e90303810a14ae292f45d41dae5cb832ec676be8"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Thu Sep 03 14:50:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 14:50:31 2026 +0800"
      },
      "message": "[ISSUE #10968] Copy transaction message properties directly instead of encode/decode roundtrip (#10970)\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "e90303810a14ae292f45d41dae5cb832ec676be8",
      "tree": "268a3d359623bdad35c44f0f2b7f8e8f3003021a",
      "parents": [
        "669a2e180e953af5484e77738a83ba7ed954f619"
      ],
      "author": {
        "name": "烤化の初雪",
        "email": "yangzihao_41@outlook.com",
        "time": "Thu Sep 03 10:21:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 10:21:24 2026 +0800"
      },
      "message": "fix(test): stabilize client offline receipt handle test (#10996)\n\nSigned-off-by: unbridled-41 \u003cyangzihao_41@outlook.com\u003e"
    },
    {
      "commit": "669a2e180e953af5484e77738a83ba7ed954f619",
      "tree": "a38c03d3db322304540af1e954a33f5146cb1dd0",
      "parents": [
        "ec0f662c548b067a21543942e7700eedf0b3a4b7"
      ],
      "author": {
        "name": "Gerard",
        "email": "gigabytewiki@163.com",
        "time": "Wed Sep 02 16:28:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 16:28:27 2026 +0800"
      },
      "message": "fix(broker): reject timer delays that overflow the absolute delivery time (#10965)\n\n* fix(broker): reject timer delays that overflow the absolute delivery time\n\ntransformTimerMessage converted relative timer delays with unchecked long multiplication and addition, so a very large delay overflowed into a past timestamp, bypassed the future-delay validation, and took the immediate-message path. Use Math.multiplyExact/Math.addExact so overflow returns WHEEL_TIMER_MSG_ILLEGAL.\n\nFixes #10872\n\n* test(broker): cover timer delay overflow and success paths\n\nCover the remaining transformTimerMessage branches so the exact-math\noverflow checks and the millisecond success path are exercised:\n\n- Long.MAX_VALUE / 1000 overflows addExact after multiplyExact succeeds.\n- A valid PROPERTY_TIMER_DELAY_MS rewrites the message to the wheel-timer\n  topic with PROPERTY_TIMER_OUT_MS set.\n\nSplit the nested exact-math expression in HookUtils so each overflow\nsource is independently testable and reported.\n\n---------\n\nCo-authored-by: Gerard \u003c213731635+GerardGao@users.noreply.github.com\u003e\nCo-authored-by: gerardgao \u003cgerardgao@tencent.com\u003e"
    },
    {
      "commit": "ec0f662c548b067a21543942e7700eedf0b3a4b7",
      "tree": "bdb4406b061b046c9dbb330b5b5c716505b15f13",
      "parents": [
        "e348efa66b08eb645ee123706ea6492fa9a3ad35"
      ],
      "author": {
        "name": "rongtong",
        "email": "jinrongtong16@mails.ucas.ac.cn",
        "time": "Wed Sep 02 09:28:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 09:28:29 2026 +0800"
      },
      "message": "[ISSUE #10383] Fix flaky store and proxy tests (#10407)\n\n* Fix flaky store HA and DLedger tests\n\n* Fix receipt handle renewal test race"
    },
    {
      "commit": "e348efa66b08eb645ee123706ea6492fa9a3ad35",
      "tree": "27f8809a40103b2b39bb60c57e0a45a7c1329f26",
      "parents": [
        "484b7b812c365c28ace88da72aa41bc30e010b10"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Wed Aug 26 15:12:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 15:12:46 2026 +0800"
      },
      "message": "[ISSUE #10575] Fix race condition between scanResponseTable and processResponseCommand (#10576)\n\nprocessResponseCommand used get+remove (non-atomic) to retrieve ResponseFuture\nfrom responseTable. scanResponseTable used iterator.remove(). If the response\narrived between scanResponseTable\u0027s remove and processResponseCommand\u0027s get,\nthe response would be logged as \u0027not matched any request\u0027 and silently dropped.\nThe callback would fire with timeout instead of success, even though the broker\nhad successfully processed the request.\n\nFix: Use ConcurrentHashMap.remove(key) in both methods. This is atomic:\neither processResponseCommand gets the future (and executes success callback),\nor scanResponseTable gets it (and executes timeout callback), but never both\nand never neither.\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "484b7b812c365c28ace88da72aa41bc30e010b10",
      "tree": "3ef5d94b8f159cccafa293eaf191f50b74e65991",
      "parents": [
        "efa1be59d6fc747ad220f036c86030f05f0419f9"
      ],
      "author": {
        "name": "rongtong",
        "email": "jinrongtong16@mails.ucas.ac.cn",
        "time": "Tue Aug 25 14:05:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 14:05:22 2026 +0800"
      },
      "message": "build: upgrade fastjson2 to 2.0.64 (#10928)\n\nCo-authored-by: 通融 \u003crongtong.jrt@alibaba-inc.com\u003e"
    },
    {
      "commit": "efa1be59d6fc747ad220f036c86030f05f0419f9",
      "tree": "0a9973e41ad0f753b57ab94e3fe59be495abfe40",
      "parents": [
        "df8194146e4cc398878476476b18140a1a07dc28"
      ],
      "author": {
        "name": "lizhimins",
        "email": "707364882@qq.com",
        "time": "Thu Aug 20 13:41:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 13:41:42 2026 +0800"
      },
      "message": "[ISSUE #10680] Release Apache RocketMQ 5.5.1 (#10961)"
    },
    {
      "commit": "df8194146e4cc398878476476b18140a1a07dc28",
      "tree": "5c78d2349b6e2a125bd0c4fefc3a7f8964ea17fd",
      "parents": [
        "6a9e84f1132df46f56168b1f40e009e38383e39a"
      ],
      "author": {
        "name": "rongtong",
        "email": "jinrongtong16@mails.ucas.ac.cn",
        "time": "Wed Aug 19 17:42:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 17:42:51 2026 +0800"
      },
      "message": "[ISSUE #10641] Deprecate legacy Broker DLedger mode (#10642)"
    },
    {
      "commit": "6a9e84f1132df46f56168b1f40e009e38383e39a",
      "tree": "818801a56a9f397fccd53cbf5f2c0f370b8d39e7",
      "parents": [
        "e58f9fd35ad45b4bd11d749d2a368a3f6b3b9d38"
      ],
      "author": {
        "name": "rongtong",
        "email": "jinrongtong16@mails.ucas.ac.cn",
        "time": "Wed Aug 19 14:58:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 14:58:30 2026 +0800"
      },
      "message": "[ISSUE #10651] bump DLedger to 0.3.3.4 (maintenance line) (#10958)\n\n* chore: bump DLedger to 0.3.3.4 (maintenance line)\n\nUpdate the DLedger dependency from 0.3.2 to 0.3.3.4, the latest\nrelease on the 0.3.x maintenance line published on Maven Central.\nThe 0.3.3.4 release is API-compatible with 0.3.2 and only carries\ndependency hygiene fixes (aligning fastjson2 and excluding fastjson1\nfrom its rocketmq-remoting transitive path).\n\nAlso update the Bazel WORKSPACE artifact coordinate to keep the two\nbuild systems in sync.\n\n* chore: fully remove fastjson1 from the build\n\nDLedger 0.3.3.4 already excludes com.alibaba:fastjson from its\nrocketmq-remoting dependency and its bytecode only references\nfastjson2, but rocketmq still declared fastjson1 itself, so it kept\nleaking onto every module compile classpath through rocketmq-common.\n\n- drop the com.alibaba:fastjson property and dependencyManagement\n  entry from the root pom\n- drop the unused com.alibaba:fastjson dependency from rocketmq-common\n  (no main source imports com.alibaba.fastjson.*)\n- drop the fastjson1 pin from WORKSPACE and the fastjson1 dep from the\n  remoting test target in remoting/BUILD.bazel\n- migrate RemotingSerializableCompatTest to fastjson2: use the\n  fastjson2 JSONField annotation (which is what the protocol classes\n  actually carry) and round trip through RemotingSerializable instead\n  of com.alibaba.fastjson.JSON\n\nfastjson1 wire-format coverage is retained by the frozen fastjson1\npayload already asserted in testCompatibilityCheckWithBitSet.\n\n* fix(bazel): exclude rocketmq-remoting from coursier resolution\n\ndledger 0.3.3.4 depends on rocketmq-remoting:5.5.0, which Coursier\nfetches from Maven Central. That artifact transitively brings\ngrpc-netty-shaded:1.53.0 with a strict [1.53.0] range on grpc-core,\nconflicting with the WORKSPACE-declared grpc 1.47.0 artifacts.\n\nSince rocketmq-remoting is built from source in this repo (//remoting),\nexclude it from external resolution — matching what PR #10947 already\ndoes for the DLedger 0.4.x line.\n\n---------\n\nCo-authored-by: 通融 \u003crongtong.jrt@alibaba-inc.com\u003e"
    },
    {
      "commit": "e58f9fd35ad45b4bd11d749d2a368a3f6b3b9d38",
      "tree": "ff31c7e4de370804c0b0285df3600f721ce59770",
      "parents": [
        "cf27650066ac5a79e19a38d58c23ca321f70f7f9"
      ],
      "author": {
        "name": "ymwneu",
        "email": "ymwneu@126.com",
        "time": "Wed Aug 19 10:56:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 10:56:51 2026 +0800"
      },
      "message": "[ISSUE #10959] Fix RocksDBConsumeQueue.iterateFrom should reject offset below min offset (#10960)\n\nstartIndex \u003c minOffset was previously accepted as long as it stayed\nwithin [0, maxOffset), returning a non-null LargeRocksDBConsumeQueueIterator\nwhose next() can yield a null CqUnit once the underlying data has been\npurged. Callers like ScheduleMessageService rely on iterateFrom returning\nnull to detect and correct an out-of-range offset (matching ConsumeQueue\u0027s\ngetMinLogicOffset() check); without it they NPE dereferencing the null\nCqUnit instead.\n\nAdd the same startIndex \u003e\u003d getMinOffsetInQueue() bound used by the\nfile-based ConsumeQueue to both iterateFrom overloads.\n\nCo-authored-by: maowei.ymw \u003cmaowei.ymw@alibaba-inc.com\u003e"
    },
    {
      "commit": "cf27650066ac5a79e19a38d58c23ca321f70f7f9",
      "tree": "14caac30f1047713b3aa151ea3aa8818a708327f",
      "parents": [
        "293f5885719fc4aa3619446a1900f58ccfcfdd29"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Tue Aug 18 12:02:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 12:02:27 2026 +0800"
      },
      "message": "[ISSUE #10953] Clamp shifted message count range to queue bounds (#10954)"
    },
    {
      "commit": "293f5885719fc4aa3619446a1900f58ccfcfdd29",
      "tree": "92b2371730e572361d58224be5e998ae1e9e965d",
      "parents": [
        "7eee0fc366e869cbfe92b5c763f1a7daafc91af9"
      ],
      "author": {
        "name": "dingshuangxi888",
        "email": "dingshuangxi888@gmail.com",
        "time": "Fri Aug 14 09:58:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 09:58:51 2026 +0800"
      },
      "message": "Improve ACL 2.0 authorization context handling (#10925)"
    },
    {
      "commit": "7eee0fc366e869cbfe92b5c763f1a7daafc91af9",
      "tree": "4a35189c8ef3660fa4dea30b48327ac8160aa4f7",
      "parents": [
        "e47268e6643dc0782beb3897d1eae677c2fa84bd"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Thu Aug 13 15:46:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 15:46:06 2026 +0800"
      },
      "message": "fix(controller): detect inactive raft masters (#10885)"
    },
    {
      "commit": "e47268e6643dc0782beb3897d1eae677c2fa84bd",
      "tree": "1446c88c3a7d9b8d059e572eda2546f907585b27",
      "parents": [
        "97a797543bad7697a79ea227671f3047266b6620"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Thu Aug 13 10:06:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 10:06:22 2026 +0800"
      },
      "message": "fix(controller): compare partial broker identities safely (#10886)"
    },
    {
      "commit": "97a797543bad7697a79ea227671f3047266b6620",
      "tree": "8fa803d4b1b907ea90c0414fe31794233e2e2902",
      "parents": [
        "e3458616d207ee636b1762f0f8dcf788a590d59d"
      ],
      "author": {
        "name": "qianye",
        "email": "wuxingcan.wxc@alibaba-inc.com",
        "time": "Wed Aug 12 14:02:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 14:02:31 2026 +0800"
      },
      "message": "[ISSUE #10906] Prevent duplicate MQClientInstance creation (#10907)"
    },
    {
      "commit": "e3458616d207ee636b1762f0f8dcf788a590d59d",
      "tree": "50173b6b4063f43bee67c95926de976c26ce45b2",
      "parents": [
        "fd0c95920e0deac96ce2ae27442747cc5e65e930"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Mon Aug 10 09:41:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 09:41:01 2026 +0800"
      },
      "message": "fix(common): compare message queue ids safely (#10884)"
    },
    {
      "commit": "fd0c95920e0deac96ce2ae27442747cc5e65e930",
      "tree": "924ed8cdda003ea530e4b291c0a370fa44308bd8",
      "parents": [
        "51f9fcc49308f6ab6f779f97fdea075463056aeb"
      ],
      "author": {
        "name": "lizhimins",
        "email": "707364882@qq.com",
        "time": "Fri Aug 07 18:29:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 18:29:26 2026 +0800"
      },
      "message": "[ISSUE #10827] fix(broker): spin for the lock on same-attemptId pop orderly retry to avoid empty response (#10828)"
    },
    {
      "commit": "51f9fcc49308f6ab6f779f97fdea075463056aeb",
      "tree": "74d72c3102f42d5c64a126c426c2fd08ad9ded8f",
      "parents": [
        "69f108316d1629ebe2bfe9a680f78137501aca6c"
      ],
      "author": {
        "name": "fuyou001",
        "email": "yubao.fyb@alibaba-inc.com",
        "time": "Thu Aug 06 19:22:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 19:22:52 2026 +0800"
      },
      "message": "[ISSUE #10817] Upgrade SpotBugs for JDK 21 compatibility (#10818)"
    },
    {
      "commit": "69f108316d1629ebe2bfe9a680f78137501aca6c",
      "tree": "ce446a6d5cb57cf8335b5cb2fa98e1d34339d247",
      "parents": [
        "cf2b87458121c87e9d9675d94c0be072c026ed6f"
      ],
      "author": {
        "name": "fuyou001",
        "email": "yubao.fyb@alibaba-inc.com",
        "time": "Thu Aug 06 17:29:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 17:29:34 2026 +0800"
      },
      "message": "Classify BrokerShutdownTest as a medium Bazel test (#10821)"
    },
    {
      "commit": "cf2b87458121c87e9d9675d94c0be072c026ed6f",
      "tree": "67ea191cc3999487fb022cd27d1d9c3bd2cceac7",
      "parents": [
        "cbebac2e66bf44b0e81c2ef09beba2f2a9e11bf4"
      ],
      "author": {
        "name": "Rui",
        "email": "57304024+ai-yang@users.noreply.github.com",
        "time": "Thu Aug 06 17:14:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 17:14:37 2026 +0800"
      },
      "message": "[ISSUE #10813] Reduce temporary allocations in the LMQ append path (#10814)\n\nSigned-off-by: Rui \u003c1685901819@qq.com\u003e"
    },
    {
      "commit": "cbebac2e66bf44b0e81c2ef09beba2f2a9e11bf4",
      "tree": "0b6cd1c2e40b51894e3d907da47322cfe7b1da6e",
      "parents": [
        "2daf0e2ca91a1592d18235d43e5d709d1c35d15f"
      ],
      "author": {
        "name": "fuyou001",
        "email": "yubao.fyb@alibaba-inc.com",
        "time": "Thu Aug 06 16:33:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 16:33:59 2026 +0800"
      },
      "message": "[ISSUE #10819] Correct misleading CommitLog buffer comment (#10820)\n\n* [ISSUE #10819] Correct misleading CommitLog buffer comment\n\n* [ISSUE #10819] Refine CommitLog comment wording"
    },
    {
      "commit": "2daf0e2ca91a1592d18235d43e5d709d1c35d15f",
      "tree": "be54260054b6c8a450c11e5966947a097ce49192",
      "parents": [
        "eddb235c1bd8adc5c3a1125a294405526e7bb0e3"
      ],
      "author": {
        "name": "ymwneu",
        "email": "ymwneu@126.com",
        "time": "Tue Aug 04 12:04:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 12:04:19 2026 +0800"
      },
      "message": "[ISSUE #10713] Optimize ConsumerFilterManager register CPU consumption (#10714)\n\n- Refactor filter data index from topic-based to consumerGroup-based (SubscriptionFilterHandler)\n- Add topic existence check before registering filter\n- Generate BloomFilterData only when enableCalcFilterBitMap is enabled\n- Fix thread safety: use ConcurrentHashMap for topicSqlFilterData\n- Fix TOCTOU race conditions: replace containsKey+get with single get\n- Rebuild subscriptionFilterData from filterDataByTopic in decode\n- Add test for subscription shrink marking removed topics as dead"
    },
    {
      "commit": "eddb235c1bd8adc5c3a1125a294405526e7bb0e3",
      "tree": "066c73e95c6c90575c7ac8e72bb9eb1daae3fa9a",
      "parents": [
        "89166af9977c20a11f962271e1b2ad1a67e838ce"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Mon Aug 03 14:04:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 14:04:44 2026 +0800"
      },
      "message": "[ISSUE #10722] Lite Topic may not be cleaned up when message store timestamp is unavailable (#10723)"
    },
    {
      "commit": "89166af9977c20a11f962271e1b2ad1a67e838ce",
      "tree": "8674aacc6e073927d72dd8578fc2e80807ef4a56",
      "parents": [
        "a06836dd564e5e43115493f775626cf98d51d10e"
      ],
      "author": {
        "name": "ymwneu",
        "email": "ymwneu@126.com",
        "time": "Mon Aug 03 11:24:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 11:24:22 2026 +0800"
      },
      "message": "[ISSUE #9654] Optimize the bufferLocal size of the TimerMessageStore (#9655)"
    },
    {
      "commit": "a06836dd564e5e43115493f775626cf98d51d10e",
      "tree": "266732e6517b61c5a1e8544a886d104e83893b12",
      "parents": [
        "00e45b8a6db23efbe756d0306f10716156cfd4dd"
      ],
      "author": {
        "name": "lizhimins",
        "email": "707364882@qq.com",
        "time": "Sat Aug 01 14:56:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 14:56:21 2026 +0800"
      },
      "message": "[ISSUE #7703] Upgrade fastjson2 to 2.0.63 for security fixes (#10715)"
    },
    {
      "commit": "00e45b8a6db23efbe756d0306f10716156cfd4dd",
      "tree": "05af840e51da886d2b2948558683a889614263af",
      "parents": [
        "31734b150b81460cfbb5b85df585e298046f52ca"
      ],
      "author": {
        "name": "aias00",
        "email": "liuhongyu@apache.org",
        "time": "Mon Jul 27 02:33:45 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 17:33:45 2026 +0800"
      },
      "message": "[ISSUE #10025] Treat blank local serve address as unset (#10663)"
    },
    {
      "commit": "31734b150b81460cfbb5b85df585e298046f52ca",
      "tree": "df8483248faf4f48cf66f14faa5ddfe08c6264f5",
      "parents": [
        "d8c3f9e735c482f5e2be77dc40681a2e2ad9471e"
      ],
      "author": {
        "name": "yx9o",
        "email": "yangx_soft@163.com",
        "time": "Mon Jul 27 17:33:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 17:33:06 2026 +0800"
      },
      "message": "[ISSUE #10661] Unregister all producer topics on gRPC client termination (#10662)"
    },
    {
      "commit": "d8c3f9e735c482f5e2be77dc40681a2e2ad9471e",
      "tree": "c71a779fb333899fff8293b4c0d3303281f2e239",
      "parents": [
        "b37e2bbacd2c899112f22028b139dfdfb10da712"
      ],
      "author": {
        "name": "Houlong66",
        "email": "32865414+Houlong66@users.noreply.github.com",
        "time": "Sat Jul 25 16:07:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 16:07:45 2026 +0800"
      },
      "message": "[ISSUE #10572] Add dual TTL policy for tiered storage read-ahead cache (#10573)"
    },
    {
      "commit": "b37e2bbacd2c899112f22028b139dfdfb10da712",
      "tree": "c9dac57690b87c8e2c30b95c32c909f1420f5d8a",
      "parents": [
        "577b89f2cdddf0d42cfd3c1b6effdac0cd0e467c"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Thu Jul 23 23:55:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 23:55:33 2026 +0800"
      },
      "message": "[ISSUE #10639] Reuse a per-thread scratch buffer in CommitLog.checkMessageAndReturnSize (#10640)\n\n* [ISSUE #10639] Reuse a per-thread scratch buffer in CommitLog.checkMessageAndReturnSize\n\n* [ISSUE #10639] Reject corrupt negative totalSize before allocation in checkMessageAndReturnSize\n\n* [ISSUE #10639] Add configurable reuse-buffer cap and unit tests for checkMessageAndReturnSize\n\n* [ISSUE #10639] Default the check-message reuse-buffer cap to 1 MiB\n\n---------\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "577b89f2cdddf0d42cfd3c1b6effdac0cd0e467c",
      "tree": "25808721631842a77b1411fa3f373b43acba509b",
      "parents": [
        "4f9b187fd75b6a39b7823ab3a05843161521e47b"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Wed Jul 22 11:43:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 11:43:58 2026 +0800"
      },
      "message": "[ISSUE #10644] Add LMQ number gauge metric to Broker observability (#10645)\n\n- Add GAUGE_LMQ_NUM constant in BrokerMetricsConstant\n- Register ObservableLongGauge in BrokerMetricsManager reading from messageStore.getQueueStore().getLmqNum()\n- Expose rocketmq_lmq_number metric for monitoring LMQ resource usage"
    },
    {
      "commit": "4f9b187fd75b6a39b7823ab3a05843161521e47b",
      "tree": "8da7bd516bb359e8e51cc3888b2ee6ee7c660324",
      "parents": [
        "26cfb5f60e47a943bd9d5d25b196c248222cc949"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Mon Jul 20 10:46:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 10:46:46 2026 +0800"
      },
      "message": "[ISSUE #10569] Support Lite Simple Consumer on server side (#10570)\n\n- Broker: add PopLiteLongPollingService to NotificationProcessor for lite consumer notification polling\n- Broker: LiteEventDispatcher notifies both PopLiteMessageProcessor and NotificationProcessor polling services\n- Broker: add hasEvents(clientId) API to LiteEventDispatcher for message availability check\n- Proxy: unify lite/normal pop paths into single popMessage call, route by ProxyContext.isLiteConsumer()\n- Proxy: register LITE_SIMPLE_CONSUMER in ClientActivity and GrpcClientSettingsManager lifecycle\n- Proxy: pass liteTopic property only for lite consumers in filter and response writer\n- Proxy: remove standalone popLiteMessage from MessagingProcessor/ConsumerProcessor\n- Remoting: add isLiteConsumer and clientId fields to NotificationRequestHeader"
    },
    {
      "commit": "26cfb5f60e47a943bd9d5d25b196c248222cc949",
      "tree": "939ccc2ebb4f2fb3ad97ef08c667a6c764c911f5",
      "parents": [
        "3373f284e6d8e5101f63a38be28f1fe3ec9f6773"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Fri Jul 17 22:10:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 22:10:39 2026 +0800"
      },
      "message": "[ISSUE #10622] Resolve ConsumerOffsetManager dynamically in LiteEventDispatcher (#10623)\n\n- Remove cached consumerOffsetManager field from LiteEventDispatcher\n- Replace all usages with brokerController.getConsumerOffsetManager() for lazy resolution\n- Allows downstream projects to swap ConsumerOffsetManager after broker init"
    },
    {
      "commit": "3373f284e6d8e5101f63a38be28f1fe3ec9f6773",
      "tree": "abf22c594ddff8112bcc857c5e7bb15a55d1ce75",
      "parents": [
        "45254d5e13e965b8bdece6101ef42fb38472cd89"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Fri Jul 17 18:43:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 18:43:41 2026 +0800"
      },
      "message": "[ISSUE #10613] Fix async request-reply RequestCallback firing multiple times (#10614)\n\n- DefaultMQProducerImpl#request(Message, RequestCallback, long): drop the\n  executeRequestCallback() call in the async send onSuccess so a send success\n  no longer delivers a premature onSuccess(null); align with the other async\n  request overloads which only set sendRequestOk here.\n- RequestResponseFuture: add an AtomicBoolean executeCallbackOnlyOnce guard so\n  the callback fires at most once even if the reply and timeout paths race.\n- RequestFutureHolder#scanExpiredRequest: use ConcurrentHashMap.remove(key) to\n  atomically claim ownership instead of iterator.remove(); also fix the log\n  placeholder concatenation.\n- ClientRemotingProcessor#processReplyMessage: use atomic remove(correlationId)\n  and route the reply through executeRequestCallback so the single-shot guard\n  covers the reply-success path too.\n- Add RequestResponseFutureTest cases for success-then-timeout and concurrent\n  single-callback semantics.\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e"
    },
    {
      "commit": "45254d5e13e965b8bdece6101ef42fb38472cd89",
      "tree": "ffa25f46ff8ddf5b3fab000eafd6d784a3d5c548",
      "parents": [
        "74e90f7c283d4030e4c89a35f46dec77419bcb9e"
      ],
      "author": {
        "name": "imzs",
        "email": "imzs@foxmail.com",
        "time": "Tue Jul 14 13:39:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 13:39:34 2026 +0800"
      },
      "message": "[ISSUE #10615] Fix missing long-polling notification under CombineConsumeQueue selective double-write (#10616)"
    },
    {
      "commit": "74e90f7c283d4030e4c89a35f46dec77419bcb9e",
      "tree": "9ef9edea9a84b459fd2df75af1bd2228f52d12cc",
      "parents": [
        "c4ce550a574e938fffd5f3b50b1c564eef426439"
      ],
      "author": {
        "name": "Jiahua Wang",
        "email": "90542846+wang-jiahua@users.noreply.github.com",
        "time": "Mon Jul 13 10:07:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 10:07:43 2026 +0800"
      },
      "message": "[ISSUE #10446] Support batch deletion of topics and subscription groups in broker (#10448)\n\n* [ISSUE #10446] Support batch deletion of topics and subscription groups in broker\n\n- Add DELETE_TOPIC_IN_BROKER_LIST and DELETE_SUBSCRIPTION_GROUP_LIST\n  request codes with corresponding RequestBody types\n- Implement deleteTopicList / deleteSubscriptionGroupList in\n  AdminBrokerProcessor with deduplication and one-shot persist\n- Add deleteTopicConfigList / deleteSubscriptionGroupConfigList in\n  TopicConfigManager / SubscriptionGroupManager (single persist per batch)\n- Add MQClientAPIImpl#deleteTopicInBrokerList /\n  deleteSubscriptionGroupList client APIs\n- Cover changes with unit tests in AdminBrokerProcessorTest\n\n* fix: persist  config after batch delete\n\n* fix: preserve batch delete failure response\n\n---------\n\nCo-authored-by: wangjiahua.wjh \u003cwangjiahua.wjh@alibaba-inc.com\u003e\nCo-authored-by: fuchong \u003cyubao.fyb@alibaba-inc.com\u003e"
    },
    {
      "commit": "c4ce550a574e938fffd5f3b50b1c564eef426439",
      "tree": "9f3cc1a982211fbd9048717f9dbb66bc0602973a",
      "parents": [
        "0e4ccf1b669161453c9381af92652ae2cb9fa4e7"
      ],
      "author": {
        "name": "imzs",
        "email": "imzs@foxmail.com",
        "time": "Fri Jul 10 18:09:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 18:09:59 2026 +0800"
      },
      "message": "[ISSUE #10604] Fix TopicConfig DataVersion not persisted in split registration (#10605)"
    },
    {
      "commit": "0e4ccf1b669161453c9381af92652ae2cb9fa4e7",
      "tree": "3ba671741bdc18e137db9d3a4901b9bef0d02ffb",
      "parents": [
        "2af604f3afc3a14376fc3e980a045c306ffef9fe"
      ],
      "author": {
        "name": "aias00",
        "email": "liuhongyu@apache.org",
        "time": "Tue Jul 07 19:37:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 19:37:13 2026 +0800"
      },
      "message": "[ISSUE #10578] Fix master election maxOffset comparator overflow\n\nDefaultElectPolicy sorted broker candidates by subtracting maxOffset values and casting the long delta to int. Large offset gaps can overflow the comparator result and rank a lower-offset broker first. This replaces subtraction with safe comparator helpers and adds a focused overflow regression test.\n\nConstraint: Preserve existing election order: higher epoch, higher maxOffset, lower electionPriority\n\nRejected: Keep subtraction comparator | unsafe for long offset deltas greater than Integer.MAX_VALUE\n\nConfidence: high\n\nScope-risk: narrow\n\nTested: mvn -q -pl controller -DskipTests\u003dfalse -Dtest\u003dDefaultElectPolicyTest -Djacoco.skip\u003dtrue test\n\nTested: mvn -q -pl controller -DskipTests compile -Dspotbugs.skip\u003dtrue -Dcheckstyle.skip\u003dtrue\n\nTested: mvn -q -DskipTests compile -Dspotbugs.skip\u003dtrue -Dcheckstyle.skip\u003dtrue\n\nNot-tested: Full controller suite on local JDK due existing JaCoCo/Hessian module-access failures\n\nRelated: #10578"
    },
    {
      "commit": "2af604f3afc3a14376fc3e980a045c306ffef9fe",
      "tree": "05e31f55d00bb4bc5bd9c64947088f599ccf6267",
      "parents": [
        "8242c1e9d223c33b68fe1c66d129e83e86f5eba0"
      ],
      "author": {
        "name": "yx9o",
        "email": "yangx_soft@163.com",
        "time": "Mon Jul 06 10:27:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 10:27:33 2026 +0800"
      },
      "message": "[ISSUE #10593] Rename CLusterSendMsgRTCommand to ClusterSendMsgRTCommand (#10594)\n\n* [ISSUE #10593] Rename CLusterSendMsgRTCommand to ClusterSendMsgRTCommand\n\n* Update"
    },
    {
      "commit": "8242c1e9d223c33b68fe1c66d129e83e86f5eba0",
      "tree": "e75e890dc67ebf89d0904c21f6b5a5513e3aea89",
      "parents": [
        "1730dbc040b04a26dca5128490e37796aac9b007"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Wed Jul 01 14:03:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 14:03:54 2026 +0800"
      },
      "message": "[ISSUE #10562] Optimize PopConsumerServiceTest#transferToFsStoreTest to avoid unnecessary background threads (#10563)\n\n- Replace consumerService.start() with consumerService.getPopConsumerStore().start()\n- Replace consumerService.shutdown() with consumerService.getPopConsumerStore().shutdown()\n- Avoid starting revive/cache background threads that are not needed for transferToFsStore verification\n- Reduces test execution time from ~60s to ~1.3s"
    },
    {
      "commit": "1730dbc040b04a26dca5128490e37796aac9b007",
      "tree": "e638121d88e496bd5307b6b5af543998760ecf9f",
      "parents": [
        "88709c56aacae16634e7dc8a6a5f06e4a93b678d"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Wed Jul 01 13:50:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 13:50:53 2026 +0800"
      },
      "message": "[ISSUE #10560] Remove enableLiteEventMode config switch (#10561)\n\n* [ISSUE #10560] Remove enableLiteEventMode config switch\n\n- Remove enableLiteEventMode field, getter and setter from BrokerConfig\n- Remove 5 early-return guard checks in LiteEventDispatcher\n- Remove dead condition in PopLiteMessageProcessor.popLiteTopic\n- Simplify getEventIterator to always use event-set path\n- Delete unused LiteSubscriptionIterator inner class\n- Remove disabled-mode test cases and stale Javadoc references\n\n* chore: retrigger CI"
    },
    {
      "commit": "88709c56aacae16634e7dc8a6a5f06e4a93b678d",
      "tree": "f555df77fd9787465c17736e219961989897777b",
      "parents": [
        "f4c0c4d3a49f46fbd9af23688d037dfe67b32ee6"
      ],
      "author": {
        "name": "SSpirits",
        "email": "admin@lv5.moe",
        "time": "Tue Jun 30 10:26:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 10:26:23 2026 +0800"
      },
      "message": "[ISSUE #10543] resolve data race in ServiceThread wakeup mechanism (#10544)"
    },
    {
      "commit": "f4c0c4d3a49f46fbd9af23688d037dfe67b32ee6",
      "tree": "6fceaba33599e2ea75048af3f9d2793850bf6574",
      "parents": [
        "49102a99852147c2fa90d49250f4ffb0d288f3c8"
      ],
      "author": {
        "name": "Surya Kant",
        "email": "suryakantasahoo533@gmail.com",
        "time": "Mon Jun 29 16:46:54 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 19:16:54 2026 +0800"
      },
      "message": "docs: format README for consistent Markdown style (#10551)\n\nNormalize horizontal rules, blank lines around headings and code\nblocks, list markers, nested list indentation, and trailing whitespace\nwithout changing content."
    },
    {
      "commit": "49102a99852147c2fa90d49250f4ffb0d288f3c8",
      "tree": "946891af22b56a6594bf6d7a14b567d5c38cb36b",
      "parents": [
        "10d498c68aaea5c15ca844d3b3b2d257847d1875"
      ],
      "author": {
        "name": "Quan",
        "email": "zsjperiod@foxmail.com",
        "time": "Mon Jun 29 15:34:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 15:34:00 2026 +0800"
      },
      "message": "[ISSUE #10549] Fix lite topic reset offset: memory leak, FIFO block bypass, and offset-0 reset failure (#10550)\n\n* [ISSUE #10549] Fix lite topic reset offset: memory leak, FIFO block bypass, and offset-0 reset failure\n\n- Fix memory leak in removeResetOffset: clean up empty inner map entries from resetOffsetTable\n- Add eraseResetOffset for precise cleanup on lite topic removal\n- Skip FIFO block check in isFifoBlocked when server-side reset offset is pending\n- Fix ResetOffsetByTimeCommand: change resetOffset \u003e 0 to \u003e\u003d 0 to allow resetting to offset 0\n- Add unit tests for eraseResetOffset and isFifoBlocked reset bypass\n\n* chore: empty commit to trigger CI pipeline"
    }
  ],
  "next": "10d498c68aaea5c15ca844d3b3b2d257847d1875"
}
