Java Hazelcast IMap.entrySet()不会返回所有条目

Java Hazelcast IMap.entrySet()不会返回所有条目,java,hazelcast,hazelcast-imap,Java,Hazelcast,Hazelcast Imap,我正在研究一个通过MapStore实现在MySQL数据库中持久化的分布式IMap的简单示例。 我在DB表中手动输入了6个条目,我想使用Hazelcast的IMap读取它们 如果我读到这样的条目: IMap<Long, Person> personMap = hazelcastInstance.getMap("personMap"); personMap.get(1L)); personMap.get(2L)); personMap.get(3L)); personMap.get(4L

我正在研究一个通过MapStore实现在MySQL数据库中持久化的分布式IMap的简单示例。 我在DB表中手动输入了6个条目,我想使用Hazelcast的IMap读取它们

如果我读到这样的条目:

IMap<Long, Person> personMap = hazelcastInstance.getMap("personMap");
personMap.get(1L));
personMap.get(2L));
personMap.get(3L));
personMap.get(4L));
personMap.get(5L));
personMap.get(6L));
IMap personMap=hazelcastInstance.getMap(“personMap”);
personMap.get(1L));
personMap.get(2L));
personMap.get(3L));
personMap.get(4L));
personMap.get(5L));
人地图获取(6L));
一切正常。调试DB访问时,我看到在first get()Hazelcast上,首先预加载键4、3、5、6,然后加载键1。在第二个get()上,它加载键2。在随后的4行get()中,键已经存在于personMap中,因此没有DB访问权限。到目前为止还不错

现在,当我将代码段替换为:

IMap<Long, Person> personMap = hazelcastInstance.getMap("personMap");
for(Map.Entry<Long, Person>entry : personMap.entrySet()) {
    System.out.println(personMap.get(entry.getKey())); 
}
IMap personMap=hazelcastInstance.getMap(“personMap”);
对于(Map.Entryentry:personMap.entrySet()){
System.out.println(personMap.get(entry.getKey());
}
在循环初始化时,在entrySet()调用时,Hazelcast只加载键3、4、5和6。因此,该循环不打印键1和2,只打印键3、4、5和6

你知道为什么吗?这是Hazelcast 3.6

注意:当然,当我在键1到6已经显式加载后调用entrySet()时,例如通过在一次“运行”中组合两个片段,entrySet()会看到所有键。只有当entrySet()是对personMap的第一个实际访问时,问题才会发生

更新:在调用entrySet()之前,我还尝试了显式加载:

IMap personMap=hazelcastInstance.getMap(“personMap”);
personMap.loadAll(真);

结果相同-仅加载键3到键6。我的群集仅由一个节点组成。

您使用哪个版本的Hazelcast?尝试复制,但没有成功。有可能共享一个复制机测试代码吗?stuhpa从我在你的问题中看到的,它应该按照你期望的方式工作,因此它一定是一个bug。你能打开一个github问题并提供一些代码来重现你的问题吗?正如@amrck指出的,我们无法复制它,因此我们非常感谢任何帮助/提示/代码:)
IMap<Long, Person> personMap = hazelcastInstance.getMap("personMap");
personMap.loadAll(true);