2

4 노드 Coherence 클러스터를 분산 모드로 설정하려고합니다 (다른 구성은 기본적으로 기본값 임). 그런 다음 노드 중 하나를 종료하고 나머지 노드의 균형을 관리하는 방법을 살펴보십시오.일관성 : BackingMap을 재설정 할 수 없습니다.

[email protected] 3.7.1.0) (thread=DistributedCache, member=n/a): Remains to transfer before shutting down: 504 primary partitions, 0 backup partitions 

하지만 다른 노드 (또는 그 중 때때로 이상) 던져이 예외 :

java.lang.IllegalArgumentException: BackingMap is not resettable: x 
    at com.tangosol.net.DefaultConfigurableCacheFactory$Manager.setBackingMap(DefaultConfigurableCacheFactory.java:4163) 
    at com.tangosol.net.DefaultConfigurableCacheFactory$Manager.instantiateBackingMap(DefaultConfigurableCacheFactory.java:4114) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$Storage.instantiateBackingMap(PartitionedCache.CDB:22) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$Storage.setCacheName(PartitionedCache.CDB:25) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.ensureStorage(PartitionedCache.CDB:5) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.receivePartition(PartitionedCache.CDB:11) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService.onFinalizePrimaryTransfer(PartitionedService.CDB:141) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService$Continuations$Continuation.proceed(PartitionedService.CDB:10) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$EventsHelper.onEntriesArrived(PartitionedCache.CDB:42) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$TransferControl.onReceiveStarted(PartitionedCache.CDB:19) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService.onTransferRequest(PartitionedService.CDB:76) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.PartitionedService$TransferRequest.onReceived(PartitionedService.CDB:1) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.onMessage(Grid.CDB:34) 
    at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.onNotify(Grid.CDB:33) 
    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:42) 
    at java.lang.Thread.run(Thread.java:662) 

I 종료를 위해 나는

CacheFactory.destroyCache(myCache); 
CacheFactory.shutdown(); 

종료가이 글을 쓰는 유지해야하는 노드를 사용하여 사실 PartitionedCache$Storage은 캐시 이름 (getCacheName()이이 개체에 null을 반환 함)을 설정하지 않았으며 다른 백킹을 인스턴스화하고 싶지 않기 때문에 좋지 않습니다. 지도 -하지만 그 원인이 무엇인지, 어떻게 구성해야하는지에 대한 단서가 전혀 없습니다.

(유용한) 응답 주셔서 감사합니다.

답변

3

좋아, 찾았습니다. CacheFactory.destroyCache (...)를 사용하여 클러스터 전체 캐시 종료가 발생했습니다. CacheFactory.releaseCache (...)를 사용한 다음 CacheFactory.shutdown()을 사용하면 필요한 작업을 수행했습니다.