#11055·rocketmq

[错误] 验证 Lite 组信息查询中的 topK

作者: Palaiologos1453创建于 2026年9月7日更新于 2026年9月17日

运行时平台环境

Windows,本地中介单位测试;回归测试不需要运行集群.

  • 火箭MQ版本

`开发 ' at ff8f6f74c560e391261ccd716707c6d20422e253' (5.5.1)。

QQ JDK 版本

Amazon Corretto 8u482; 马文 3.9.11.

描述臭虫

LiteManagerProcessor.getLiteGroupInfo'将请求的topK'直接转发到“LiteTopic”不存在或空时的后置计算器。 `GetLiteGroupInfo Request Header.check Fields ()' 无法验证。

Lite ConcumerLagCalculator.getLagCountTopK'使用topK'作为`优先事项 ' 的初始能力。 0和负值是无效的构造参数 。 大型正值也控制了初始后置-阵列分配,没有服务器侧绑定.

  • 重现步骤
  1. 使用与母议题相联的现有消费者群体。
  2. 与该组发送 " GET LITE GROUP INFO " ,不发送具体的 " LiteTop " ,以及 " TopK=0 " 或 " TopK=-1 " 。 等效的 CLI 输入为 “ mqadmin getLiteGroupInfo -n -p -g -k 0' 。
  3. 处理器达到`getLagCountTopK',而不是拒绝无效参数。

配套的处理器回归测试将请求头序列化并引用了"处理请求". 它在未修改的执行上失败了,因为无效的请求到达被嘲笑的后置计算器. 上面的构建者行为是从源路径建立起来的;没有尝试过活集运行和大分配.

你期待看到什么吗?

在调用任一滞后计算器之前,使用明确有效范围的INVALID PARAMETER ' 响应。 关于特定LiteTopic的请求应继续在没有topK'的情况下进行,因为这一路径没有使用。

你看见了什么?

聚合查询接受不受控制的堆积能力并到达计算器,而不是返回参数错误.

++ 附加上下文

一个小的固定装置可以再利用处理器现有的“MAX RETURN-COUNT”(10,000),接受[1,1000]'中的topK'作为汇总查询。 后退范围包括:虚/空的LiteTopic,零/负/超值,被接受的边界,以及带有默认"topK"的特定主题查询.

我搜索了现有的问题,并拉动了“topK”和Lite时滞计算器的要求;相关的合并的PR #10424优化了时间戳检查,没有添加这种验证.

内容来源: apache/rocketmq