IMap.destroy()是片状的(?)

时间:2015-06-16 15:50:28

标签: hazelcast

上下文:

  • Hazelcast 3.4.1
  • 2个Hazelcast节点
  • 两个节点都运行相同的Hazelcast相关代码
  • 自己的Java进程中的每个节点
  • 两个Java进程都在同一台服务器上运行
  • 配置需要一次备份(1

发生了什么

在T0,其中一个节点删除地图并且它一直有效 管理控制台(MC)中不再显示该地图

IMap<String, IMyStuff> aMap= getHazelcastInstance().getMap("a particular map");
aMap.destroy();

在T1,节点A执行&#34;清理任务&#34;确保一些地图是完整的和破坏:

IMap<String, IMyStuff> aMap= getHazelcastInstance().getMap("a particular map");
// clean-up / validation stuff
aMap.destroy();

由于地图不再存在,getMap(...)返回一个新的空的 - 按预期工作。

此时,地图仍然被破坏(在MC中不可见)

在T2,节点B执行相同的&#34;清理任务&#34; (为了冗余)

IMap<String, IMyStuff> aMap= getHazelcastInstance().getMap("a particular map");
// clean-up / validation stuff
aMap.destroy();

问题

在T2之后,某个时间(5-50%之间)的时间,地图&#34;特定地图&#34;在MC中仍然可见,它不应该。 密切关注&#34;地图XXX数据表&#34;在MC中,似乎地图仅在节点B上,但在节点A中没有,尽管它是为单个(同步)备份配置的。

我看起来在所有情况下都不尊重DistributedObject.destroy()调用。

问题

是否有人遇到过这个问题?它看起来像一个bug,但可能会遗漏一些东西,例如:它应该是创建空Map的getMap(...)和destroy()之间的最小延迟吗?

我知道同步备份确保在返回之前将项添加到所有必需的节点中,对于Map创建是否相同。

感谢您的帮助,

-Martin

0 个答案:

没有答案
相关问题