1

Eclipse で Hazelcast v2.5 と Maven プラグインを使用しています。ABCD 名前空間に 3 つのマップ エントリを作成するサンプル プログラムを Eclipse で実行してみました。Eclipse でコードを実行すると、この WARNING メッセージが表示されます

Feb 07, 2013 12:08:23 PM com.hazelcast.impl.ConcurrentMapManager
WARNING: [192.168.1.36]:5702 [dev] Caller -> RedoLog{name=c:ABCD, redoType=REDO_TARGET_UNKNOWN, operation=CONCURRENT_MAP_MERGE, target=null / connected=false, redoCount=53, migrating=null
partition=Partition [227]{
}
}

これは、やり直しのしきい値を超えるまで反復し続けます。

Feb 07, 2013 12:08:42 PM com.hazelcast.impl.LifecycleServiceImpl
WARNING: [192.168.1.36]:5702 [dev] [CONCURRENT_MAP_MERGE] Redo threshold[90] exceeded! Last redo cause: REDO_TARGET_UNKNOWN, Name: c:ABCD
com.hazelcast.core.OperationTimeoutException: [CONCURRENT_MAP_MERGE] Redo threshold[90] exceeded! Last redo cause: REDO_TARGET_UNKNOWN, Name: c:ABCD
    at com.hazelcast.impl.BaseManager$ResponseQueueCall.getRedoAwareResult(BaseManager.java:640)
    at com.hazelcast.impl.BaseManager$ResponseQueueCall.getResult(BaseManager.java:627)
    at com.hazelcast.impl.BaseManager$RequestBasedCall.getResultAsBoolean(BaseManager.java:437)
    at com.hazelcast.impl.BaseManager$ResponseQueueCall.getResultAsBoolean(BaseManager.java:544)
    at com.hazelcast.impl.ConcurrentMapManager$MPut.mergeOne(ConcurrentMapManager.java:1758)
    at com.hazelcast.impl.ConcurrentMapManager$MPut.merge(ConcurrentMapManager.java:1747)
    at com.hazelcast.impl.LifecycleServiceImpl$1.run(LifecycleServiceImpl.java:143)
    at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at com.hazelcast.impl.ExecutorThreadFactory$1.run(ExecutorThreadFactory.java:38)

なぜこれが起こるのですか?

助けてください。!

4

1 に答える 1

2

ベアボーン Java クラスを使い始めるために、次のことを行うことができます (より詳細なチュートリアルを参照することをお勧めします。より便利な場合があります。Hazelcast サービスへのアクセスについては詳しく説明していません)。

  1. 次のように、hazelcast.xml ファイルでマップを指定します。

       <map name="testMap">     
        <backup-count>1</backup-count>
        <eviction-policy>NONE</eviction-policy>
        <max-size policy="cluster_wide_map_size">0</max-size>
        <eviction-percentage>25</eviction-percentage>
        <merge-policy>hz.ADD_NEW_ENTRY</merge-policy>
        <map-store enabled="true">
        <class-name>models.test.StoreLoadTestMap</class-name>
        <write-delay-seconds>5</write-delay-seconds> 
        </map-store>
        <entry-listeners>
        <entry-listener include value="true"local="false">models.test.ListenerTestMap</entry-listener>
         </entry-listeners>
         </map>
    

完了したら、Java アプリから以下を呼び出すだけです。

IMap<String, testObject> testMap = Hazelcast.getMap("testMap");

これで、必要に応じてマップに値を入れたり、マップから値を取得したりできるようになります。ユース ケースに基づいてレプリケーションに tcp またはマルチキャストを使用し (可能であれば tcp を使用)、データ レプリケーションの確認のために 2 番目のマップから情報を取得できます。また、マップ間でデータがどのように複製されるかについても理解しておいてください。

それが役に立てば幸い

于 2013-02-08T17:22:11.857 に答える