hazelcast地图尚未准备好警告

时间:2014-09-14 23:55:39

标签: java hazelcast

我正在尝试hazelcast v3.3 - 我一直看到以下内容(与v3.2相同)。我猜我可能做错了什么但看起来它与为mapstore实现调用loadAll有关。我在ubuntu v13上运行hazelcast服务器,并分配2GB RAM(4VM的小集群)。任何想法可能导致这个(配置或实现) - 这对我来说根本没有消失(并且由于地图尚未就绪,客户端似乎无法在此时获取数据)。我正在使用异步备份而不是映射条目的同步备份。

2014-09-14 18:56:09,429 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.partition-operation.thread-0] [192.168.110.159]:5701 [testApp] [3.3] Retrying invocation: BasicInvocation{ servi
ceName='hz:impl:mapService', op=com.hazelcast.map.operation.MapSizeOperation@7969fd40, partitionId=4, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=100, callTimeout=60000, target=Ad
dress[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!!

更新 它似乎与GC无关 - 我在一个节点上运行一个非常小的节点(大约100MB)。我定期看到这个电话,当发生这种情况时,客户端似乎无法从服务器获取任何信息!!

3 个答案:

答案 0 :(得分:0)

检查您的内存/堆设置,看看GC是否与这些同时发生"地图尚未就绪"调用。最有可能的是。尝试不同的变化(G1GC,如果不是G1GC,为新老一代尝试不同的尺寸比例,并尝试找出GC需要更长时间的地方,并尝试尽可能地配置它)。我建议您查看网络日志,具体取决于您运行此节点的节点数量。

答案 1 :(得分:0)

我的猜测是你的地图是延迟加载的,你真正想要的是它急切加载。 Hazelcast添加了一个标志,可以设置为需要急切加载。 ...

MapStoreConfig.InitialMode=EAGER

这修复了Hazelcast问题1593 -- Map is not ready!!! exception。另请参阅问题1707 -- Initial Load Types

答案 2 :(得分:0)

如果我没记错的话,这不是一个问题;警告时会记录异常,但这是预期的。

Hazelcast依赖于控制流的某些类型的异常(我知道。在大多数应用程序中,这会很糟糕)。在这种情况下,当地图仍然加载时,抛出异常,指示调用者;请再试一次,因为目前我还没准备好。调用程序将进行后退并稍后再次尝试,直到超时发生或加载阶段完成并且操作成功执行。

我想发生的事情是在警告下记录异常;但它应该在调试下记录。