环境:
- Vagrant 运行 MySQL 5.6
- Java SE 1.8
- Hibernate 4.2.16.Final
- Apache Ignite 1.6
设置:
- ToggleSwitch 实体拥有 String 类型的 id 属性和表示开/关状态的枚举类型 State
- 已实现 equals() 和 hashcode() 方法针对 id 属性
- @Cache 使用 READ_WRITE 和默认区域
- Reader 节点每秒执行 EM.find() 并显示当前 State
- Writer 节点每 3 秒执行 EM.find() 并切换 State
- 两个节点都配置了 TRANSACTIONAL 原子性、PARTITIONED 缓存模式和 FULL_SYNC 写同步模式
- 使用 TcpDiscoverySharedFsIpFinder 进行发现
所以我遇到的问题是读取端从写入端那里获取不到更改。我使用 IgniteInternalCache.entrySet() 将缓存的内容(与 state 的频率相同)输出,它显示缓存中有两个具有相同键的 ToggleSwitch 实例。
我尝试将它们添加到一个集合中,看是否会产生相同的结果,但集合按预期工作,只存储了一个实例。
此时我无法确定发生了什么问题,有什么想法吗?是一个 bug 还是配置错误?