it loos like it works, with patch, after a couple of hours of testing under same conditions didn't see it happen (without it, approx. every 15 minutes).
I do not think it will happen again with this patch. Thanks again and my respect to your debugging capacity, my bug report was really thin. On Thu, Feb 23, 2012 at 8:47 AM, eks dev <eks...@yahoo.co.uk> wrote: > thanks Mark, I will give it a go and report back... > > On Thu, Feb 23, 2012 at 1:31 AM, Mark Miller <markrmil...@gmail.com> wrote: >> Looks like an issue around replication IndexWriter reboot, soft commits and >> hard commits. >> >> I think I've got a workaround for it: >> >> Index: solr/core/src/java/org/apache/solr/handler/SnapPuller.java >> =================================================================== >> --- solr/core/src/java/org/apache/solr/handler/SnapPuller.java (revision >> 1292344) >> +++ solr/core/src/java/org/apache/solr/handler/SnapPuller.java (working >> copy) >> @@ -499,6 +499,17 @@ >> >> // reboot the writer on the new index and get a new searcher >> solrCore.getUpdateHandler().newIndexWriter(); >> + Future[] waitSearcher = new Future[1]; >> + solrCore.getSearcher(true, false, waitSearcher, true); >> + if (waitSearcher[0] != null) { >> + try { >> + waitSearcher[0].get(); >> + } catch (InterruptedException e) { >> + SolrException.log(LOG,e); >> + } catch (ExecutionException e) { >> + SolrException.log(LOG,e); >> + } >> + } >> // update our commit point to the right dir >> solrCore.getUpdateHandler().commit(new CommitUpdateCommand(req, >> false)); >> >> That should allow the searcher that the following commit command prompts to >> see the *new* IndexWriter. >> >> On Feb 22, 2012, at 10:56 AM, eks dev wrote: >> >>> We started observing strange failures from ReplicationHandler when we >>> commit on master.... trunk version 4-5 days old. >>> It works sometimes, and sometimes not.... didn't dig deeper yet. >>> >>> Looks like the real culprit hides behind: >>> org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed >>> >>> Looks familiar to somebody? >>> >>> >>> 120222 154959 SEVERE SnapPull failed >>> :org.apache.solr.common.SolrException: Error opening new searcher >>> at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1138) >>> at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1251) >>> at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1043) >>> at org.apache.solr.update.DirectUpdateHandler2.commit(Unknown Source) >>> at org.apache.solr.handler.SnapPuller.doCommit(SnapPuller.java:503) >>> at >>> org.apache.solr.handler.SnapPuller.fetchLatestIndex(SnapPuller.java:348) >>> at org.apache.solr.handler.ReplicationHandler.doFetch(Unknown Source) >>> at org.apache.solr.handler.SnapPuller$1.run(SnapPuller.java:163) >>> at >>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) >>> at >>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351) >>> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >>> at java.lang.Thread.run(Thread.java:722) >>> Caused by: org.apache.lucene.store.AlreadyClosedException: this >>> IndexWriter is closed >>> at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:810) >>> at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:815) >>> at >>> org.apache.lucene.index.IndexWriter.nrtIsCurrent(IndexWriter.java:3984) >>> at >>> org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:254) >>> at >>> org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:233) >>> at >>> org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:223) >>> at >>> org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:170) >>> at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1095) >>> ... 15 more >> >> - Mark Miller >> lucidimagination.com >> >> >> >> >> >> >> >> >> >> >>