lucene 异常 Lock obtain timed out 解决方法
2014-11-07 10:31
399 查看
http://terje.blog.163.com/blog/static/119243712008102122316595/
一般都是索引建立的过程中,不正常操作影响了IndexWriter正常使用,那么下次在使用这个IndexWriter就有这种问题了。最简单的方法,手动删掉文件锁,重新创建一个IndexWriter实例。或者在创建实例的时候删掉锁。
经验,将保持的IndexWriter实例取出来(为提高效率,减少对磁盘的IO,管理了IndexWriter的实例),关闭后(异常之前建立的索引是没问题的,关闭是使他生效),重新构造一个实例。
实战代码:
[align=left] // org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/data/index/ipsos/weibo24/cache/201209/write.lock[/align]
[align=left] // 获取文件锁超时,IndexWriter关闭后,删掉锁,重新获取[/align]
[align=left] if (e.getMessage().indexOf("Lock obtain timed out") != -1) {[/align]
[align=left] LoggerUtil.debugTrace(bizTypeEnName, _objId + " IndexWriter{ " + indexFilePath + " }获取文件锁超时,IndexWriter关闭,等待重新获取");[/align]
[align=left] if (!Validate.isEmpty(indexFilePath)) {[/align]
[align=left] IndexWriter indexWriter = writerMap.get(indexFilePath);[/align]
[align=left] LoggerUtil.debugTrace(bizTypeEnName, _objId + " IndexWriter{ " + indexFilePath + " }关闭开始,是否为空 " + (null == indexWriter));[/align]
[align=left] if (null != indexWriter) {[/align]
[align=left] indexWriter.close();[/align]
[align=left] LoggerUtil.debugTrace(bizTypeEnName, _objId + " IndexWriter{ " + indexFilePath + " }关闭成功,等待重新获取已开始");[/align]
[align=left] indexWriter = null;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
一般都是索引建立的过程中,不正常操作影响了IndexWriter正常使用,那么下次在使用这个IndexWriter就有这种问题了。最简单的方法,手动删掉文件锁,重新创建一个IndexWriter实例。或者在创建实例的时候删掉锁。
经验,将保持的IndexWriter实例取出来(为提高效率,减少对磁盘的IO,管理了IndexWriter的实例),关闭后(异常之前建立的索引是没问题的,关闭是使他生效),重新构造一个实例。
实战代码:
[align=left] // org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/data/index/ipsos/weibo24/cache/201209/write.lock[/align]
[align=left] // 获取文件锁超时,IndexWriter关闭后,删掉锁,重新获取[/align]
[align=left] if (e.getMessage().indexOf("Lock obtain timed out") != -1) {[/align]
[align=left] LoggerUtil.debugTrace(bizTypeEnName, _objId + " IndexWriter{ " + indexFilePath + " }获取文件锁超时,IndexWriter关闭,等待重新获取");[/align]
[align=left] if (!Validate.isEmpty(indexFilePath)) {[/align]
[align=left] IndexWriter indexWriter = writerMap.get(indexFilePath);[/align]
[align=left] LoggerUtil.debugTrace(bizTypeEnName, _objId + " IndexWriter{ " + indexFilePath + " }关闭开始,是否为空 " + (null == indexWriter));[/align]
[align=left] if (null != indexWriter) {[/align]
[align=left] indexWriter.close();[/align]
[align=left] LoggerUtil.debugTrace(bizTypeEnName, _objId + " IndexWriter{ " + indexFilePath + " }关闭成功,等待重新获取已开始");[/align]
[align=left] indexWriter = null;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
相关文章推荐
- Lock obtain timed out: Lock@的解决方法(lucene)
- Lock obtain timed out: Lock@的解决方法(lucene)
- lucene使用IndexWriter时遇到LockObtainFailedException: Lock obtain timed out 异常原因及解决办法
- Lock obtain timed out: Lock@的解决方法(lucene)
- 求解决 严重: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out:
- Lucene异常:org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out:
- Lock obtain timed out: SimpleFSLock@E://javasource//LuceneTest//index//write.lock异常
- Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
- Solr lucene LockObtainFailedException: Lock obtain timed out 错误解决
- Dom4J读取XML文件时出现的connection timed out:connect Nested exception异常解决方法
- lucene Lock obtain timed out: Lock@
- Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
- Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
- Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
- Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
- Attempted to lock an already-locked dir异常解决方法
- ASP.net 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。解决方法
- java.lang.OutOfMemoryError异常解决方法
- Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
- java.lang.OutOfMemoryError异常解决方法