2

4ノードのCoherenceクラスターを分散モード(他の構成は基本的にデフォルト)でセットアップし、ノードの1つをシャットダウンして、残りのノードのバランスをどのように管理するかを監視しようとしています。シャットダウンには私が使用します

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

シャットダウンする必要のあるノードは、次のように書き込みを続けます。

Logger@9217551 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)

私は実際にPartitionedCache$Storageそのキャッシュ名を設定していないことを発見しました(getCacheName()このオブジェクトでnullを返します)-そしてそれは悪いです、なぜなら私は別のバッキングマップをインスタンス化したくないからです-しかし私はそれを引き起こす原因とどのように設定すべきか全くわかりませんそれ。

(有用な)回答をありがとう。

4

1 に答える 1

4

さて、私はそれを見つけました。私はCacheFactory.destroyCache(...)を使用していましたが、これによりクラスター全体のキャッシュがシャットダウンします。CacheFactory.releaseCache(...)を使用してからCacheFactory.shutdown()を使用すると、正常に動作しました。

于 2012-08-23T16:42:16.967 に答える