|
[
Permlink
| « Hide
]
Shay Banon added a comment - 17/Mar/08 12:22 PM
It is not a known problem. I would suggest trying to run it against the latest Compass code (though I don't remember fixing something in that area). Is there a chance that you can create a simple test case?
Further digging indicates that this is a synchronization problem in Lucene's IndexWriter. I don't think that Compass's ExecutorMergeScheduler is responsible. You can close this bug out. Sorry for the misfiling.
Here's the Lucene bug I've filed: Nix my last comment. When I use Lucene's ConcurrentMergeScheduler, the deadlock goes away. Michael McCandless on the Lucene project says:
Michael McCandless - 18/Mar/08 05:20 AM One thing that makes me nervous about ExecutorMergeScheduler is this comment: // Compass: No need to execute continous merges, we simply reschedule another merge, if there is any, using executor manager and the corresponding change which is to schedule a new job instead of using the while loop to run new merges. If I understand that code correctly, the executorManager will re-call the run() method on MergeThread when there is a cascaded merge. But that won't do the right thing because it will run "startMerge" rather than the newly returned (cascaded) merge. That would then cause the deadlock because the cascaded merge is never issued. spot on. I hope that now I fixed it. Is there a chance that you can test with the latest trunk?
I'll pull tonight's build when Bamboo has it ready and test it.
Thanks for the fix! I kicked in a nightly build, should be ready soon. Lets get this nailed down.
It's almost 1am here in Hong Kong but I'll try to have it checked before you have to go to the pub there in London
Looks fixed! I grabbed build 59 and checked several scenarios that resulted in deadlock previously when using the ExecutorMergeScheduler. No deadlock.
Thanks for all the hard work Shay! Thanks for the effort mate!. I am glad that you found this one, its a nasty one. I will close this issue.
|
||||||||||||||||||||||||||||||||||||||||||