0

クラスターでhazelcast-2.5を使用しています。Hazelcast Map(String、ArrayList)のstore-load実装で、ユーザー定義オブジェクトのArrayList(いくつかのStringフィールドと1つの整数)をロードしようとしています。すべての初期ロードで例外は発生しません。ただし、マップに値がないキーのマップでget呼び出しが原因でロードが呼び出された場合(したがって、ロードが呼び出された場合)、次の例外がスローされます(私も削除を行っています)その時点以降のマップでの操作):

Store thrown exception for CONCURRENT_MAP_REMOVE

UDオブジェクトを文字列にキャストできないことを示すクラスキャスト例外が発生します。実装で何かを見逃しても驚かないでしょう。この呼び出しが行われたときに、マップ上でget操作を実行し、その結果をユーザー定義オブジェクトのArrayListに割り当てようとしているだけです。store-loadの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) 

これをトラブルシューティングするためのアイデアはありますか?

4

1 に答える 1

0

hazelcastロード操作(store-load実装内)から返されるarraylistが空の場合、この例外が発生するようです。

于 2013-04-16T19:33:38.133 に答える