Интеграция HazelCast и DB2 с использованием MapStore - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь загрузить данные из DB2 в HazelCast, используя MapStore (и MapLoader), выполнив хранимую процедуру.Я могу получить данные из DB2, но когда он пытается загрузить данные в HazelCast, я получаю следующее исключение

java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: MapLoader загружен элемент принадлежит другому разделу в com.hazelcast.util.executor.CompletableFutureTask.run (CompletableFutureTask.java:69) в com.hazelcast.util.executor.CachedExecutorr(CachedExecutorServiceDelegate.java:227) на java.util.concurrent.ThreadPoolExecutor.runWorker (неизвестный источник) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) на java.lang.Thread.run неизвестно (неизвестно)com.hazelcast.util.executor.HazelcastManagedThread.executeRun (HazelcastManagedThread.java:64) на com.hazelcast.util.executor.HazelcastManagedThread.run (HazelcastManagedThread.java:80) Вызывается: javationception.exe.lang.IllegalStateException: MapLoader загрузил элемент Belongs к другому разделу в com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveAndThrowIfException (InvocationFuture.java:92) в com.hazelcast.spi.impl.AbstractInvocationFuture.get (AbstractInvocationFuture.java:16).hazelcast.map.impl.recordstore.BasicRecordStoreLoader.loadValuesInternal (BasicRecordStoreLoader.java:141) в com.hazelcast.map.impl.recordstore..BasicRecordStoreLoader $ GivenKeysLoaderTask.call (BasicRecordStoreLoader.java:109) в com.hazelcast.util.executor.CompletableFutureTask.run (CompletableFutureTask.java:67) ... еще 6, вызванных загрузчиком объекта класса: java.lang.принадлежит к другому разделу в com.hazelcast.map.impl.recordstore.DefaultRecordStore.isKeyAndValueLoadable (DefaultRecordStore.java:1031) в com.hazelcast.map.impl.recordstore.DefaultRecordStore.putFromLoadInternal (по умолчанию).светло-коричневыйcast.map.impl.recordstore.DefaultRecordStore.putFromLoad (DefaultRecordStore.java:978) в com.hazelcast.map.impl.operation.PutFromLoadAllOperation.run (PutFromLoadAllOperation.java:74) в com.hazelperation.i.Operation.java:148) на com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.call (OperationRunnerImpl.java:202) на com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run (OperationRunnerImpl:191) в com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process (OperationThread.java:120) в com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.run (OperationThread.java:100) в ------ отправлено из ------. (Неизвестный источник) на com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve (InvocationFuture.java:127) на com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveAndThrowIfException (InvocationFuture.java:79) ... еще 11

Если кто-нибудь выполнял интеграцию HazelCast и DB2 с MapStore с помощью exeнарезка "Хранимая процедура".

Спасибо, Ram

1 Ответ

0 голосов
/ 28 сентября 2018

@ katteriamma, проблема в PutFromLoadAllOperation операции.Подпись метода loadAll: Map<K,V> loadAll(Collection<K> keys).

В вашем случае ваши методы loadAll возвращают дополнительные пары ключ-значение, которые не принадлежат разделу вызывающей стороны.Вам нужно убедиться, что вы возвращаете карту ключ-значение только для Collection<K> keys, не более того.loadAll метод будет вызываться для каждого раздела в любом случае.Поэтому вам нужно убедиться, что ваша хранимая процедура возвращает данные только для заданных ключей, или вам нужно отфильтровать дополнительные пары ключ-значение.

...