gpt4 book ai didi

java - jvm崩溃后如何清除lucene write.lock文件的锁定?

转载 作者:行者123 更新时间:2023-12-01 20:52:22 25 4
gpt4 key购买 nike

我需要 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 崩溃时自动重新启动。现有框架可能具有您自己从头开始开发的东西的优点。

关于java - jvm崩溃后如何清除lucene write.lock文件的锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43011020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com