2013-03-27 78 views
1

我在集群中使用了hazelcast -2.5。我有一个地图(key:String,value:用户定义对象的ArrayList)。我能够在大多数地方放入/删除罚款,但是在我的代码的一个特定部分中,put操作静静地失败(用于put操作的键字符串是唯一的,并且ArrayList也不是空的)。没有例外被抛出。如果涉及到锁,我甚至尝试tryPut,该调用给了我一个真正的返回值。在put操作之后,我尝试打印出地图的keySet,但看不到我刚刚插入的键 - 地图的大小也没有改变(但tryPut给了我一个真正的返回值,我相当确定字符串我使用的密钥是唯一的 - 我希望密钥的二进制形式也是唯一的)。如果我的密钥的二进制形式不是唯一的,我假设tryPut应该返回一个错误的返回值,或者至少用新的键/值对替换之前添加的键/值(除非我误解了文档)。hazelcast map put操作不起作用

boolean putVal = testMap.tryPut(this.testObj.UUID, testEntity, timeout, TimeUnit.MILLISECONDS); //timeout is 2000L or 2 seconds in this case 

有关解决此问题的任何想法或弄清楚,如果我的密钥的二进制形式导致问题将不胜感激。

谢谢

回答

2

尝试做一个get。并查看是否有与该密钥相关的任何价值。如果不是,放置应该是成功的。

+0

谢谢 - 我实际上已经在放置操作的2-3秒内尝试了多次,并且它为我返回一个空值(这就是我如何达到放置可能失败的程度)。我已经尝试在put操作之后立即打印出键集,并且键不在那里。尽管我想确认问题所在,但很可能是我的代码存在问题。 (String)键用于地图的时间有多长? – 2013-03-28 19:43:23

+0

我想我误解了你的建议。我会尝试,如果没有价值,我将继续进行放置操作并分享结果 – 2013-03-28 19:49:30

+0

Pilot Error(我的脸上的蛋)!投入工作正常。我有一些测试代码在地图上调用get,然后在地图的store-load实现中调用load(该值已经在数据库中,然后通过另一个地图的商店加载实现 - 该地图的商店实现是空)。感谢Fuad回应。 – 2013-03-29 00:16:21