Tôi có một hàm lập chỉ mục có tên là "Execute()" sử dụng IndexWriter để lập chỉ mục nội dung trang web của tôi. Nó hoạt động tuyệt vời nếu tôi chỉ đơn giản gọi nó từ một trang web, nhưng thất bại khi tôi có nó như là một tham số đại biểu vào System.Threading.Thread. Kỳ lạ thay, nó luôn hoạt động trên máy dev cục bộ của tôi, nó chỉ thất bại khi tôi tải lên một máy chủ chia sẻ.Lucene.Net và I/O Luồng vấn đề
Đây là thông báo lỗi tôi đã
"Khóa được sự thoả timed out: Lỗi SimpleFSLock ...."
Dưới đây là mã thất bại (nhưng chỉ thất bại trên một máy chủ chia sẻ)
Scheduler scheduler = new Scheduler();
System.Threading.Thread schedulerThread = new System.Threading.Thread(scheduler.Execute);
Dưới đây là đoạn code mà làm việc (làm việc cả trên máy tính địa phương của tôi và trên máy chủ chia sẻ)
Scheduler scheduler = new Scheduler();
schedulre.Execute();
Bây giờ, một số ppl nói, nó có thể là một xấu còn sót lại từ phiên gỡ lỗi trước, vì vậy trước khi tôi khởi tạo các IndexWriter, tôi đã làm
if (IndexReader.IsLocked(indexingFolder))
{
log.Debug("it is locked");
IndexReader.Unlock(FSDirectory.GetDirectory(indexingFolder));
}
else
{
log.Debug("it is not locked");
}
và đoán những gì? nhật ký của tôi nói, nó không bị khóa.
Vì vậy, bây giờ tôi khá chắc chắn nó gây ra bởi các System.Thread.Threading, nhưng tôi chỉ không có đầu mối như thế nào để sửa chữa nó.
Cảm ơn
Tôi đã cập nhật câu trả lời của mình để kết hợp những gì bạn đã hỏi trong nhận xét của mình. –