java - Apache Ignite Client重新启动方案

标签 java ignite gridgain

这是场景


我启动了服务器节点。
我启动了Client Ignite节点,它将通过Java应用程序“ X”来完成。
在遮阳板中,当给定命令“节点”时,我可以看到两个节点,一个是客户端,一个是服务器。
我通过执行“ kill -9 pid”杀死了Java应用程序“ X”。
现在,当我转到遮阳板终端并输入“节点”时,它仍在列表中显示“客户端”和“服务器”节点。当询问有关客户端节点详细信息时,显然会引发错误。
现在,当我重新启动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""}"


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


[10:37:57]通过配置的处理程序[hnd = StopNodeOrHaltFailureHandler [tryStop = false,timeout = 0,super = AbstractFailureHandler [ignoredFailureTypes = UnmodifiableSet [SYSTEM_WORKER_BLOCKED,SYSTEM_CRITICAL_OPERATION_TIMEOUT]]],failureCtx = SYSTEM_TEM_ICAL = ,err = class 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 - Apache Ignite Client重新启动方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61243359/

相关文章:

java - 读取属性文件与 Java HashMap

c++ - 在 Ignite 节点上获取本地分区

java - 如何使用 Apache Ignite/GridGain 在任何节点上重试失败的作业

java - GridGain:如何在同一个JVM中运行多个节点?

java do while 不解析

java - 我无法使用 javax.servlet 版本 2.5 导入 javax.servlet.FilterRegistration

java - 从 Docker 容器中的 Ignite 客户端连接到另一个 Docker 容器中的 Ignite 服务器问题

java - Apache ignite 和 Spark 迭代错误 java.lang.NoSuchMethodError : org. apache.spark.sql.SQLContext.createDataFrame

Java - Web 应用程序,其中相同的数据库字段由许多用户同时编辑

java - Ignite 扫描查询抛出类 org.apache.ignite.binary.BinaryInvalidTypeException