上下文:
发生了什么
在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