6 lucene multithreading lucene.net
我有一个名为"Execute()"的索引函数,使用IndexWriter索引我的网站的内容.如果我只是从网页上调用它,它的效果很好,但是当我将它作为委托参数输入System.Threading.Thread时失败了.奇怪的是,它总是在我的本地开发机器上工作,它只在我上传到共享主机时失败.
这是我收到的错误消息
"锁定获得超时:SimpleFSLock错误......"
以下是失败的代码(但只在共享主机上失败)
Scheduler scheduler = new Scheduler();
System.Threading.Thread schedulerThread = new System.Threading.Thread(scheduler.Execute);
Run Code Online (Sandbox Code Playgroud)
以下是有效的代码(在我的本地计算机和共享主机上工作)
Scheduler scheduler = new Scheduler();
schedulre.Execute();
Run Code Online (Sandbox Code Playgroud)
现在,一些ppl说,它可能是以前的调试会话遗留下来的坏事,所以在我实例化IndexWriter之前,我做了
if (IndexReader.IsLocked(indexingFolder))
{
log.Debug("it is locked");
IndexReader.Unlock(FSDirectory.GetDirectory(indexingFolder));
}
else
{
log.Debug("it is not locked");
}
Run Code Online (Sandbox Code Playgroud)
你猜怎么着?我的日志说,它没有锁定.
所以现在我很确定它是由System.Thread.Threading造成的,但我不知道如何修复它.
谢谢
可能是尝试回答这个问题的最糟糕的一个,因为我没有使用过 lucene / 共享托管,但 SimpleFSLock 听起来像是通过在文件系统上使用显式锁定文件来锁定 lucene 索引文件(与线程中的锁定不太一样) 。我想说的是,请检查以确保您已配置正确的文件路径并且文件权限设置正确。
否则,希望更熟悉 Lucene.net 的人能够回答。
| 归档时间: |
|
| 查看次数: |
2725 次 |
| 最近记录: |