Hazelcast 3.7.4无法重新初始化地图

时间:2018-02-13 15:13:56

标签: java hazelcast hazelcast-imap

在第一次尝试失败的情况下,Hazelcast无法从MapLoader重新启动地图。 MapLoader从数据库加载数据。

测试用例:

  1. 启动服务器成员
  2. 启动客户会员
  3. 断开与数据库的连接
  4. 尝试从Hazelcast Map获取数据(从MapLoader启动延迟加载) 观察异常。
  5. 恢复与DB的连接
  6. 重复步骤4.重复步骤4的异常。
  7. 因此,当没有重新启动时,无法初始化Map时,Hazelcast会进入状态。

    你遇到过这样的行为吗?

    推荐,请,解决方法或解决方案?

    更新

    如果从客户端成员方调用map.keySet(),则会重现此类行为。

2 个答案:

答案 0 :(得分:0)

当您尝试通过地图获取/放置/删除数据时,Hazelcast仅调用相关的MapStoreMapLoader方法。没有特定的方法调用来初始化数据库连接(Hazelcast提供了一个MapLoaderLifecycleSupport接口来初始化MapLoader实现,但是它的init()方法只在第一次使用地图时被调用在Hazelcast实例上,而不是每次执行地图操作时。)

因此;您需要在MapStore实施中自行处理数据库连接问题。例如;当您尝试在实施中向/从数据库中放入/读取/删除数据时,您需要检查连接并重新建立它是否存在。

答案 1 :(得分:0)

经过长时间调查未发现问题原因,但是如果失败后初始化Hazelcast映射则调用map.size()。 这很奇怪,但它确实有效。