2013-03-27 46 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