мы получаем com.hazelcast.core.MemberLeftException, когда одна реплика Hazelcast отключается при репликации сеанса причала - PullRequest
0 голосов
/ 01 декабря 2018

Мы используем hazelcast 3.6.3 для репликации сеанса с пристани 9.4.Конфигурация hazelcast:

Config config = new Config();
    config.setInstanceName(HAZELCAST_INSTANCE_NAME);
    // logger config
    config.setProperty("hazelcast.logging.type", "slf4j");
    // config for session map
    MapConfig sessionMapConfig = new MapConfig();
    sessionMapConfig.setName(SESSION_MAP_NAME)
            .setBackupCount(2);
    config.addMapConfig(sessionMapConfig);
    // peer discovery with zookeeper
    config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
    config.setProperty(GroupProperty.DISCOVERY_SPI_ENABLED, "true");

    DiscoveryStrategyConfig discoveryStrategyConfig = new DiscoveryStrategyConfig(new ZookeeperDiscoveryStrategyFactory());
    discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.ZOOKEEPER_URL.key(), serviceDiscoveryNode);
    discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.ZOOKEEPER_PATH.key(), "sessionstore/APP");
    discoveryStrategyConfig.addProperty(ZookeeperDiscoveryProperties.GROUP.key(), "cluster-name");
    config.getNetworkConfig().getJoin().getDiscoveryConfig().addDiscoveryStrategyConfig(discoveryStrategyConfig);

Когда один из членов кластера выходит из строя, мы получаем это в наших журналах

 2018-11-27 13:13:47,217 [WARN ] (1-thread-1) com.hazelcast.map.impl.query.MapQueryEngineImpl  - [10.x.x.x]:5702 [dev] [3.6.3] Could not get results
com.hazelcast.core.MemberLeftException: Member [10.x.x.x]:5701 has left cluster!
        at com.hazelcast.spi.impl.operationservice.impl.InvocationMonitor$OnMemberLeftTask.run(InvocationMonitor.java:284)
        at com.hazelcast.util.executor.CachedExecutorServiceDelegate$Worker.run(CachedExecutorServiceDelegate.java:212)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
        at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76)
        at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92)
        at ------ End remote and begin local stack-trace ------.(Unknown Source)
        at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveApplicationResponse(InvocationFuture.java:387)
        at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveApplicationResponseOrThrowException(InvocationFuture.java:337)
        at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.get(InvocationFuture.java:225)
        at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.get(InvocationFuture.java:204)
        at com.hazelcast.map.impl.query.MapQueryEngineImpl.addResultsOfPredicate(MapQueryEngineImpl.java:528)
        at com.hazelcast.map.impl.query.MapQueryEngineImpl.invokeQueryAllPartitions(MapQueryEngineImpl.java:421)
        at com.hazelcast.map.impl.proxy.MapProxyImpl.values(MapProxyImpl.java:637)
        at com.hazelcast.map.impl.proxy.MapProxyImpl.values(MapProxyImpl.java:625)
        at 

Почему мы получаем исключение, когда у нас включено резервное копирование разделовв конфигурации карты сеанса?

1 Ответ

0 голосов
/ 03 декабря 2018

MemberLeftException выбрасывается, когда участник покидает кластер во время вызова или выполнения, но это RetryableException, что означает, что он будет повторен с обновленным списком членов.Так что в конце концов он должен исцелить себя.

OTOH Я вижу, что вы используете 3.6.3, но последняя стабильная версия - 3.11, обновление - это хорошая идея, учитывая, что с тех пор было много улучшений и исправлений.

...