2014-10-20 1 views
1

Я использую согласованность в своем проекте со следующей конфигурацией.
Все в порядке с когерентностью 12.1.2, но после обновления согласованности до версии 12.1.3 у меня есть проблема. Когда я кладу 1000 экземпляров кеша один за другим, используя NamedCache.put(), ошибки нет, но когда я кладу 1000 элементов в кеш с вызовом NamedCache.putall один раз, когерентность вызывает исключение. Мой проект находится в java и развернут на jboss.Исключение Coherence в NamedCache.putall после обновления когерентности до 12.1.3

конфигурация кэша:

<distributed-scheme> 
     <scheme-name>my-map</scheme-name> 
     <service-name>MyMap</service-name> 

     <serializer> 
      <instance> 
       <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name> 
       <init-params> 
        <init-param> 
         <param-type>String</param-type> 
         <param-value>pof-config.xml</param-value> 
        </init-param> 
       </init-params> 
      </instance> 
     </serializer> 

     <thread-count>100</thread-count> 
     <local-storage>true</local-storage> 

     <backup-count>0</backup-count> 

     <backing-map-scheme> 

      <read-write-backing-map-scheme> 
       <internal-cache-scheme> 
        <ramjournal-scheme/> 
       </internal-cache-scheme> 

       <cachestore-scheme> 
        <class-scheme> 
         <class-name>myPackage.loader</class-name> 
        </class-scheme> 
       </cachestore-scheme> 
      </read-write-backing-map-scheme> 

     </backing-map-scheme> 
     <autostart>true</autostart> 
    </distributed-scheme> 

Фальш деталь исключения:

Exception in thread "pool-7-thread-1" com.tangosol.net.RequestIncompleteException: Partial failure 
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$BinaryMap.validatePartialResponse(PartitionedCache.CDB:56) 
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$BinaryMap.putAll(PartitionedCache.CDB:123) 
at com.oracle.common.collections.ConverterCollections$ConverterMap.putAll(ConverterCollections.java:1553) 
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$ViewMap.putAll(PartitionedCache.CDB:5) 
at com.tangosol.coherence.component.util.SafeNamedCache.putAll(SafeNamedCache.CDB:1) 
at mypackage.CacheEnabledDataProvider.putOnCache(CacheEnabledDataProvider.java:66) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: Portable(com.tangosol.util.WrapperException): (Wrapped: Failed request execution for myMap service on Member(Id=1, Timestamp=2014-10-20 18:00:25.737, Address=192.168.70.101:8088, MachineId=5642, Location=site:,machine:PS,process:9876,member:Mem_1, Role=CoherenceServer) (Wrapped: Failed to store keys="9112791815, 9165497418, 9199193873, 9192139970, 9392020128, ") Assertion failed:) Assertion failed: 
    at com.tangosol.util.Base.ensureRuntimeException(Base.java:289) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.tagException(Grid.CDB:50) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onPartialCommit(PartitionedCache.CDB:7) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onPutAllRequest(PartitionedCache.CDB:85) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$PutAllRequest$PutJob.run(PartitionedCache.CDB:1) 
    at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:1) 
    at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:32) 
    at com.tangosol.coherence.component.util.DaemonPool$Daemon.onNotify(DaemonPool.CDB:65) 
    at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:51) 
    at java.lang.Thread.run(Unknown Source) 
    at <process boundary> 
    at com.tangosol.io.pof.ThrowablePofSerializer.deserialize(ThrowablePofSerializer.java:57) 
    at com.tangosol.io.pof.PofBufferReader.readAsObject(PofBufferReader.java:3316) 
    at com.tangosol.io.pof.PofBufferReader.readObject(PofBufferReader.java:2604) 
    at com.tangosol.io.pof.ConfigurablePofContext.deserialize(ConfigurablePofContext.java:376) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.Service.readObject(Service.CDB:1) 
    at com.tangosol.coherence.component.net.Message.readObject(Message.CDB:1) 
    at com.tangosol.coherence.component.net.message.responseMessage.DistributedPartialResponse.read(DistributedPartialResponse.CDB:12) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$PartialValueResponse.read(PartitionedCache.CDB:4) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.deserializeMessage(Grid.CDB:20) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.onNotify(Grid.CDB:21) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService.onNotify(PartitionedService.CDB:3) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onNotify(PartitionedCache.CDB:3) 
    at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:51) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: Portable(com.tangosol.util.AssertionException): Assertion failed: 
    at com.tangosol.util.Base.azzertFailed(Base.java:209) 
    at com.tangosol.util.Base.azzert(Base.java:166) 
    at com.tangosol.net.cache.ReadWriteBackingMap$CacheStoreWrapper.storeAllInternal(ReadWriteBackingMap.java:5943) 
    at com.tangosol.net.cache.ReadWriteBackingMap$StoreWrapper.storeAll(ReadWriteBackingMap.java:5067) 
    at com.tangosol.net.cache.ReadWriteBackingMap.putAll(ReadWriteBackingMap.java:840) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$Storage.putAllPrimaryResource(PartitionedCache.CDB:7) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$Storage.postPutAll(PartitionedCache.CDB:27) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$Storage.putAll(PartitionedCache.CDB:14) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onPutAllRequest(PartitionedCache.CDB:62) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$PutAllRequest$PutJob.run(PartitionedCache.CDB:1) 
    at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:1) 
    at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:32) 
    at com.tangosol.coherence.component.util.DaemonPool$Daemon.onNotify(DaemonPool.CDB:65) 
    at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:51) 
    at java.lang.Thread.run(Unknown Source) 
    at <process boundary> 
    at com.tangosol.io.pof.ThrowablePofSerializer.deserialize(ThrowablePofSerializer.java:57) 
    at com.tangosol.io.pof.PofBufferReader.readAsObject(PofBufferReader.java:3316) 
    at com.tangosol.io.pof.PofBufferReader.readObject(PofBufferReader.java:2604) 
    at com.tangosol.io.pof.PortableException.readExternal(PortableException.java:150) 
    at com.tangosol.io.pof.ThrowablePofSerializer.deserialize(ThrowablePofSerializer.java:59) 
    at com.tangosol.io.pof.PofBufferReader.readAsObject(PofBufferReader.java:3316) 
    at com.tangosol.io.pof.PofBufferReader.readObject(PofBufferReader.java:2604) 
    at com.tangosol.io.pof.ConfigurablePofContext.deserialize(ConfigurablePofContext.java:376) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.Service.readObject(Service.CDB:1) 
    at com.tangosol.coherence.component.net.Message.readObject(Message.CDB:1) 
    at com.tangosol.coherence.component.net.message.responseMessage.DistributedPartialResponse.read(DistributedPartialResponse.CDB:12) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$PartialValueResponse.read(PartitionedCache.CDB:4) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.deserializeMessage(Grid.CDB:20) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.onNotify(Grid.CDB:21) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService.onNotify(PartitionedService.CDB:3) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onNotify(PartitionedCache.CDB:3) 
    at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:51) 
    at java.lang.Thread.run(Thread.java:745) 

ответ

1

Я обнаружил, что если загрузчик классы определяются в хранилище кэша-элементе схема, реализует хранилища кэша вместо CacheLoader и оставить магазин() и storeAll() пуст, никаких исключений не возникает. Согласно документам оракула, реализация CacheStore не требуется для кэширования только для чтения, и реализация CacheLoader является достаточной. Это может быть ошибка. Я не уверен, что реализация CacheStore с пустыми методами Store() и storeAll(), когда нам нужен кеш-магазин только для чтения, имеет ограничение производительности или нет?

0

Я бы применил CacheLoader (не CacheStore), если вы не возвращаете данные в базу данных.

Смежные вопросы