使用Hazelcast(Java)时存储CONCURRENT_MAP_REMOVE的抛出异常

时间:2013-03-26 21:46:59

标签: java hazelcast

我在群集中使用hazelcast -2.5。我试图在我的Hazelcast Map(String,ArrayList)的存储加载实现中加载用户定义对象的ArrayList(带有一些String字段和一个Integer)。初始加载都没有给我任何例外。但是,如果由于地图上的get调用而调用了负载,而地图中没有值的键(因此调用了负载),我看到抛出了以下异常(我也在删除在该时间点之后在地图上操作):

Store thrown exception for CONCURRENT_MAP_REMOVE

它给了我一个类转换异常,说明我的UD对象不能转换为String。如果我在实现中遗漏了某些东西,我不会感到惊讶 - 只是在进行此调用时,我尝试在地图上执行get操作并将结果分配给用户定义对象的ArrayList。 store-load中的加载操作也返回User定义对象的ArrayList(以相同的方式声明store-load)。

WARNING: [192.168.1.1]:5703 [dev] Store thrown exception for CONCURRENT_MAP_REMOVE
java.lang.ClassCastException: models.test.TestClass cannot be cast to java.lang.String
    at models.test.StoreLoadTestMap.load(StoreLoadTestMap.java:1)
    at com.hazelcast.impl.concurrentmap.MapStoreWrapper.load(MapStoreWrapper.java:143)
    at com.hazelcast.impl.ConcurrentMapManager$RemoveOperationHandler$RemoveLoader.doMapStoreOperation(ConcurrentMapManager.java:2681)
    at com.hazelcast.impl.ConcurrentMapManager$AbstractMapStoreOperation.run(ConcurrentMapManager.java:3860)
    at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    at com.hazelcast.impl.ExecutorThreadFactory$1.run(ExecutorThreadFactory.java:38) 

有关排除故障的任何想法吗?

1 个答案:

答案 0 :(得分:0)

如果从hazelcast加载操作(在store-load实现中)返回的arraylist为空,则会出现此异常。