java - Apache Ignite 客户端重启场景
问题描述
这是场景
- 我启动了服务器节点。
- 我启动了 Client Ignite 节点,该节点将通过 Java 应用程序“X”完成。
- 在 visor 中,当给定命令“node”时,我可以看到两个节点,一个是客户端,一个是服务器。
- 我通过执行“kill -9 pid”杀死了 Java 应用程序“X”。
- 现在,当我进入 visor 终端并输入“节点”时,它仍然在列表中显示“客户端”和“服务器”节点。当被问及客户端节点详细信息时,它显然会引发错误。
- 现在,当我重新启动 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=FailureContext [type=SYSTEM_CRITICAL_OPERATION_TIMEOUT , err=class oaiIgniteException: 检查点读取锁获取已超时。]] [10:37:57,739][SEVERE][exchange-worker-#46][GridCacheDatabaseSharedManager] 检查点读取锁获取已超时。class org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager$CheckpointReadLockTimeoutException:检查点读取锁获取已超时。在 org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager。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:1%lo0:47501 crd]-#2][G] 已检测到阻塞的系统关键线程。这可能导致集群范围的未定义行为 [workerName=db-checkpoint-thread, threadName=db-checkpoint-thread-#59, blockedFor=209s]
我在这里假设,由于我强制关闭启动 Ignite Client 节点的 Java 应用程序,因此可能会发生一些拓扑不平衡。
有人可以建议,如果我强制终止客户端应用程序,是否有正确的方法重新启动客户端应用程序,以便它继续重新建立与 Ignite 服务器的连接并继续工作?
解决方案
当您有很长的超时时,这种情况是可能的。
在所有超时(例如,网络超时、套接字写入超时、故障检测超时)结束之前,您不应该期望节点被删除并加入新节点。那,除非你优雅地关机。
推荐阅读
- php - 收到 mail() 多个或格式错误的换行错误
- vba - 从实时网站中提取数据
- cordova - 通过 Cordova 访问需要列入白名单的引用域名的远程 API
- c - 在 c 复合语句中使用宏时
- matrix - 如何在 Mathematica 中求解非对易变量的矩阵方程
- reactjs - hoc的函数无法获取react-redux connect props
- circuit - 如何使用通用移位寄存器实现序列生成器?
- node.js - throw new TypeError('OAuth2Strategy 需要一个 clientID 选项'); }
- arrays - 对包含 8 个元素的数组进行排序的最快方法是什么?
- python - 在 Django 中替换生成密钥的随机部分