提问者:小点点

Ignite RestartProcessFailureHandler无法重新启动卡住的节点


Ignite版本2.8.1-1

我已经配置了ResartProcessFailureHandler来处理系统关键错误,如SYSTEM_WORKER_BLOCKED,但是,当错误发生时,即使在几个小时后也不会重新启动,这是预期的行为吗?

但是,请在日志中看到指示已请求重新启动,但似乎从未执行过。

作为替代方案,我正在考虑启用 rest API 来检查服务的活动性,如果失败处理程序不适合处理这种情况,请在检查失败后重新启动服务,请告知。

谢谢。

[22022-03-08T02:14:32561][错误][迪斯科事件工作程序-#44%点火实例%][]检测到严重系统错误。将根据配置的处理程序[hnd=RestartProcessFailureHandler[super=AbstractFailureHandler[ignoredFailureTypes=Unmod ifilableSet[]]进行处理,failureCtx=FailureContext[type=SYSTEM_WORKER_BLOCKED,err=class o.a.i.IgniteException:GridWorker[name=sys-stripe-6,igniteInstanceName=igniteinstance,finish=false,hearteatTs=1646705660633]]org.apach.ignite.IniteExcept:GridWorker[name=sys-stripe-6,igniteInstance name=ignite instance,Finish=falseorg.apache.inignite.internal.InitionEx$IgnitionNameInstance$3.apply(IgnitionEx.java:1810)[initure-core-2.8.1.jar:2.8.1]位于org.apache.in点火.internal.initionEx$IgnitureNameInstance$3.apply(点火Ex.java:2805)[initize-core-2.8.1.jar位于org.apache.initure.internal.worker.WorkersRegistry.oIdle(WorkersRegistry.java:234)[initive-core-2.8.1 jar:2.8.1位于org.apache.inignite.internal.util.worker.GridWorker.onIdle(GridWorker.java:297)[initite-core-2.8.1.jar:2.8.1]位于org.apache.internal.managers.discovery.GridDiscoveryManager$DiscoveryWorker.body(GridDiscoveryManager.java:2796)[initure-core-2.8.1.jar位于org.apache.initure.internal.util.worker.GridWorker.run(GridWorker.java:120)[initive-core-2.8.1 jar:2.8.1]java.lang.Thread.run(线程.java:748)[?:1.8.0_312]。。。

[2022-03-08T02:14:32,603][错误][节点重启器][] 在 Ignite failure 上重新启动 JVM: [failureCtx=FailureContext [type=SYSTEM_WORKER_BLOCKED, err=class o.a.i.IgniteException: GridWorker [name=sys-stripe-6, igniteInstanceName=ignite-instance, done=false, heartbeatTs=1646705660633]]] ....


共1个答案

匿名用户

JVM没有从Java应用程序重新启动自己的标准方法,因此需要依赖外部工具来提供该功能。根据<code>org.apach.ignite.failure的文档。RestartProcessFailureHandlerhttps://ignite.apache.org/docs/2.11.1/perf-and-troubleshooting/handling-exceptions#failures-处理标准<代码>点火。sh|bat脚本支持在JVM进程退出时使用此代码重新启动。

如果您将ignite作为应用程序的一部分运行,则可以编写自己的脚本来启动。并添加<code>IGNITE_SUCCESS_FILE=