本地节点上的 Apache Ignite ScanQuery 返回空结果

问题描述 投票:0回答:1

我有一个服务器节点和一个客户端节点。我在客户端节点上创建缓存并在那里放置一些对象

CacheConfiguration<String, T> cfg = new CacheConfiguration<>();
cfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
cfg.setName("myCacheName");
cfg.setCacheMode(CacheMode.REPLICATED);
cfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
cfg.setRebalanceMode(CacheRebalanceMode.SYNC);

NearCacheConfiguration<String, T> nearCacheCfg = new NearCacheConfiguration<>();
nearCacheCfg.setNearEvictionPolicyFactory(new LruEvictionPolicyFactory<>(100_000));
cfg.setNearConfiguration(nearCacheCfg);
cache = ignite.getOrCreateCache(cfg);

然后我尝试从客户端节点获取使用 ScanQuery 和

setLocal(true)
选项的所有条目,但我得到一个空结果

try (var cursor = cache.query(new ScanQuery<>(null).setLocal(true))) {
    return cursor.getAll().stream()
        .map(Cache.Entry::getValue)
        .toList();
}

如果我在没有

setLocal(true)
选项的情况下执行此操作,效果很好,并且我会获得所有条目。

如果我使用

cache.localEntries(ALL).iterator()
,我也会得到所有条目。

ScanQuery 有什么问题?

java caching ignite
1个回答
0
投票
  • 客户端节点不保存任何数据
  • 数据存储在服务器节点上(无论是否从客户端节点放入)

因此,本地扫描查询在客户端节点上总是返回空结果。

本地扫描查询仅在服务器节点上有意义(例如在计算任务中)。

© www.soinside.com 2019 - 2024. All rights reserved.