You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite本地节点执行ScanQuery返回空结果问题排查

ScanQuery.setLocal(true)在客户端节点返回空结果的原因分析

核心原因

Ignite客户端节点没有缓存的主数据副本,而ScanQuery.setLocal(true)只会查询当前节点上的缓存主副本数据,不会访问Near Cache(近缓存),所以返回空结果。

细节拆解

  • 客户端节点的存储特性:你配置的是REPLICATED缓存模式,但客户端节点本身不存储缓存的主副本,本地仅维护你配置的Near Cache(用于加速读取的本地缓存)。
  • ScanQuery.setLocal(true)的行为:该参数指定查询仅在当前节点的主副本分区上执行,客户端没有主分区数据,自然查不到内容。
  • 其他方式正常的原因:
    • 不设置setLocal(true):ScanQuery会默认路由到服务端节点查询主副本数据,因此能返回完整结果。
    • cache.localEntries(ALL):这个方法明确包含了对当前节点Near Cache的查询,所以能获取到客户端本地近缓存里的条目。

可行解决方案

  • 如果要查询客户端本地的近缓存数据,直接使用cache.localEntries(ALL)即可。
  • 如果必须使用ScanQuery,去掉setLocal(true)参数,让查询路由到服务端执行;或者在服务端节点执行setLocal(true)的查询(服务端有主副本数据)。

内容的提问来源于stack exchange,提问作者user27366003

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:17:12