繁体   English   中英

JVM崩溃后如何清除Lucene write.lock文件的锁定?

[英]How to clear the lock for lucene write.lock file after a jvm crash?

我需要Java lucene启动代码来检查是否有JVM崩溃后留下的锁定的write.lock文件,如果是,则需要对其进行解锁。

JVM崩溃后,lucene无法获得正确释放write.lock文件的机会。 我需要的是Java lucene代码,以在启动时检查这种情况并顺利处理,而不会抛出任何大的LockObtainFailedException

正在使用Lucene版本5。

这应该在Lucene之外通过删除锁定文件来解决。

问题在于,新的Lucene实例无法安全删除锁定文件,因为由于现有实例仍在运行,因此它无法确定锁定文件是否存在。

您需要的是一个外部应用程序,可以测试该实例是否仍然存在。 您可以使用一些简单的脚本来构建它:

  • 在“ PID文件”中捕获Lucene实例的PID。
  • 重新启动Lucene时,请检查现有的PID文件。 如果PID文件存在:
    • 检查具有该PID的进程是否仍在运行; 例如使用kill -0 <pid>
    • 如果是这样,请检查它是否为Lucene进程; 例如,通过对ps ... <pid>的输出进行模式匹配。
  • 如果以上都不是,则脚本可以删除锁定文件。

如果您的应用程序已注册为服务(在Linux上),则各种“ init”和服务管理服务(System V init,upstart,systemd)允许您以受控方式停止和启动服务。 您甚至可以将服务配置为在服务崩溃时重新启动。

第三种选择是使用现有的HA(或类似)框架,以在Lucene崩溃时自动重新启动。 现有的框架可能会为您从头开始开发某些东西带来好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM