Apache Ignite客户端重启方案

问题描述 投票:0回答:1

这是场景

  1. 我启动了服务器节点。
  2. 我启动了Client Ignite节点,它将通过Java应用程序说“ X”来完成。
  3. 在遮阳板中,当给定命令“节点”时,我可以看到两个节点,一个是客户端,一个是服务器。
  4. 我通过执行“ kill -9 pid”杀死了Java应用程序“ X”。
  5. 现在,当我进入遮阳板终端并输入“节点”时,它仍在列表中显示“客户端”和“服务器”节点。当被问及客户端节点的详细信息时,它显然会引发错误。
  6. 现在,当我重新启动Java应用程序“ X”时,再次在该Java代码中将尝试连接到Ignite服务器。但是与其连接,不如打印这些日志很多次

"org.apache.ignite.logger.java.JavaLogger" "info" "INFO" "" "284" "Accepted incoming communication connection [locAddr=/0:0:0:0:0:0:0:1:47101, rmtAddr=/0:0:0:0:0:0:0:1:62856]" "" "" "" "" "" "" "1587013526124" "" "" "" "" "" "" "ROOT" "{""service"":"""",""logger_name"":""org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi""}"

  1. 它没有连接并继续执行Java代码。因此,该应用程序不恢复。我发现这是Ignite服务器日志

[[10:37:57]根据配置的处理程序[hnd = StopNodeOrHaltFailureHandler [tryStop = false,超时= 0,super = AbstractFailureHandler [ignoredFailureTypes = UnmodifiableSet [SYSTEM_WORKER_BLOCKED,SYSTEM_CRITICAL_OPERATION_TIMEOUT]]],相应的故障Ctx = Failure = SYSTEM_CRITICAL_OPERATION_TIMEOUT,err =类oaiIgniteException:检查点读取锁定获取已超时。]][10:37:57,739] [SEVERE] [exchange-worker-#46] [GridCacheDatabaseSharedManager]检查点读取锁定获取已超时。类org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager $ CheckpointReadLockTimeoutException:检查点读取锁获取已超时。在org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.failCheckpointReadLock(GridCacheDatabaseSharedManager.java:1708)在org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.checkpointReadLock(GridCacheDatabaseSharedManager.java:1640)在org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.initTopologies(GridDhtPartitionsExchangeFuture.java:1078)在org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:944)在org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager $ ExchangeWorker.body0(GridCachePartitionExchangeManager.java:3258)在org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager $ ExchangeWorker.body(GridCachePartitionExchangeManager.java:3104)在org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119)在java.lang.Thread.run(Thread.java:748)[10:39:21,547] [严重] [tcp-disco-msg-worker- [693d29cd 0:0:0:0:0:0:0:0:1%lo0:47501 crd]-#2] [G]已阻止已检测到系统关键线程。这可能导致群集范围内的未定义行为[workerName = db-checkpoint-thread,threadName = db-checkpoint-thread-#59,blockedFor = 209s]

[我在这里假设,由于我被迫关闭了启动Ignite Client节点的Java应用程序,因此可能会发生某些拓扑不平衡的情况。

有人可以建议,如果我强制终止了客户端应用程序,是否有正确的方法来重新启动客户端应用程序,以便它将继续与Ignite服务器建立连接并继续工作?

java ignite gridgain
1个回答
0
投票

如果超时时间很长,则可能出现这种情况。

您不应该期望节点在所有超时(例如网络超时,套接字写入超时,故障检测超时)耗尽之前被丢弃并加入新的节点。那,除非您进行正常关机。

© www.soinside.com 2019 - 2024. All rights reserved.