0

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

Store thrown exception for CONCURRENT_MAP_REMOVE

它给了我一个类转换异常,说明我的 UD 对象不能转换为字符串。如果我在实现中遗漏了某些内容,我不会感到惊讶——只是在进行此调用时,我试图在地图上执行 get 操作并将结果分配给用户定义对象的 ArrayList。store-load 中的加载操作也返回一个用户定义对象的 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) 

关于解决此问题的任何想法?

4

1 回答 1

0

如果从 hazelcast 加载操作(在存储加载实现中)返回的 arraylist 为空,您似乎会收到此异常。

于 2013-04-16T19:33:38.133 回答