2014-10-20 2 views
1

다음 구성으로 프로젝트에서 일관성을 사용합니다.
모든 것이 일관성 12.1.2에서 Ok입니다. 그러나 버전 12.1.3로 일관성을 업데이트 한 후에 문제가 있습니다. 예를 들어 NamedCache.put()을 사용하여 캐시에 하나씩 1000 개의 항목을 넣을 때 오류는 없지만 NamedCache.putall을 호출하여 캐시에 1000 개의 항목을 넣으면 일관성이 예외를 발생시킵니다. 내 프로젝트가 java에 있으며 jboss에 배포되었습니다.Coherence를 12.1.3으로 업데이트 한 후 NamedCache.putall의 Coherence 예외

캐시 구성 : 나는 로더 클래스는 cachestore-계획 요소에 정의 된 경우, 대신 CacheLoader의 CacheStore를 구현하고 가게를 떠날 것을 발견

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

:

<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> 

제기 예외 사항() 및 storeAll()가 비어 있으면 아무런 예외도 발생하지 않습니다. 오라클 문서에 따르면 CacheStore를 구현하는 것은 읽기 전용 캐시 저장소에 필요하지 않으며 CacheLoader를 구현하는 것으로 충분합니다. 이것은 버그 일 수 있습니다. 읽기 전용 캐시 저장소가 필요할 때 빈 Store() 및 storeAll() 메서드로 CacheStore를 구현하는 것이 확실하지 않은 경우 성능 저하가 발생 했습니까?

0

데이터베이스에 다시 쓰지 않는 경우 CacheLoader (CacheStore 아님) 만 구현합니다.