Hazelcast未使用partition-operations线程问题咨询
分区感知操作线程相关问题排查
问题现象
- 在Eclipse调试器中无法观测到
partition-operation线程的运行,仅能看到ForkJoinPool workers线程在工作。
涉及的异常操作
map.submitToKey(strategyId, new TriggerUpdateEntryProcessor(update));- 该EntryProcessor实现了
Offloadable接口,但并非只读类型,按设计应采用阻塞模式处理,实际未按预期执行。
- 该EntryProcessor实现了
executorService.executeOnKeyOwner(triggerUpdateTask, strategyId);- 按分区感知机制,该任务应提交到对应分区的所有者成员执行,但同样未正常工作。
- 补充:上述两种操作的表现完全一致。
核心疑问
- 是否应该能观测到
partition-operations线程的运行?该问题是否由配置错误导致? - 推测
executorService仅在成员位置层面实现了分区感知,并未使用partition-operation线程,但至少预期会运行在generic-operation线程上。
文档歧义分析
文档对分区操作的定义和线程模型表述模糊,可用示例有限,且“分区”一词同时指代字面意义的分区线程和成员位置:
- 现有示例中,
IMap.get属于分区操作,executor.submitToMember不属于;但executor.submitToKeyOwner会提交到对应分区所在的成员执行,疑问:它是由该成员的generic-operation线程而非partition-operation线程处理吗? - 数据亲和性相关描述:
数据亲和性确保相关条目存在于同一成员上。如果相关数据在同一成员上,操作可无需额外网络调用和数据传输成本即可执行。此功能通过为相关数据使用相同的分区键来实现。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

