当客户端已经连接并在Hazelcast中获取地图时,防止在达到定额之前加载地图

时间:2019-06-03 15:37:42

标签: hazelcast hazelcast-imap

我想阻止映射加载机制在达到群集定额之前启动。我使用了 hazelcast.initial.min.cluster.size 属性,除非有一个客户端已经连接并且已经获取了给定的地图,否则它可以正常工作。

我期望的是,只要未达到法定人数,客户端就无法在地图上执行任何操作。

我观察到的是:如果没有客户端已连接,并且我重新启动了群集,它将等待仲裁,并且映射不可用(这很好)。 如果已经连接了一个客户端,并且它获取了映射,然后我重新启动集群(将其完全停止,然后手动启动一个节点接一个节点),则客户端以某种方式指示集群加载映射,并且确实加载了映射,只有这样群集等待仲裁。有办法防止这种情况发生吗?

编辑:事实证明,即使以前没有客户端,也已加载了地图,只是一个新的客户端连接并请求了地图。集群似乎在达到法定人数之前就已为客户开放业务。

1 个答案:

答案 0 :(得分:0)

您的客户端连接是否配置为重新连接?
即连接策略async-start =“ false” reconnect-mode =“ ON”

我确实可以重现此内容,并且不确定这是否是预期的行为。我已经在github上提出了这个问题。无论如何,配置地图的定额大小是否足够?该地图配置实际上将一直阻塞,直到达到法定人数为止。

    <map name="my-test-map">
        <quorum-ref>quorumRuleWithTwoNodes</quorum-ref>
    </map>

    <quorum name="quorumRuleWithTwoNodes" enabled="true">
        <quorum-size>2</quorum-size>
    </quorum>