[ https://issues.apache.org/jira/browse/OAK-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chetan Mehrotra resolved OAK-3098. ---------------------------------- Resolution: Fixed Fix Version/s: (was: 1.2.4) 1.2.3 Fixed by ensuring that when oak-lucene bundle gets restarted it closes the IndexCopier and which in turn prevent any further task from being added to queue. Further the latch is now awaited with a timeout which should further prevent any such occurance * trunk - http://svn.apache.org/r1691167 * 1.0 - http://svn.apache.org/r1691168 * 1.2 - http://svn.apache.org/r1691172 > CopyOnWrite might block Async indexer thread indefinitely > --------------------------------------------------------- > > Key: OAK-3098 > URL: https://issues.apache.org/jira/browse/OAK-3098 > Project: Jackrabbit Oak > Issue Type: Bug > Components: lucene > Reporter: Chetan Mehrotra > Assignee: Chetan Mehrotra > Priority: Minor > Fix For: 1.2.3, 1.3.3, 1.0.18 > > > CopyOnWrite logic uses a CountDownLatch to sync up on close call. In case of > config change which might lead to closing of the the IndexCopier this latch > might not be released causing the async index thread to hang > {noformat} > sun.misc.Unsafe.park(Native Method) > java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) > > java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834) > > java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994) > > java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303) > java.util.concurrent.CountDownLatch.await(CountDownLatch.java:236) > > org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier$CopyOnWriteDirectory.close(IndexCopier.java:648) > > org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.closeWriter(LuceneIndexEditorContext.java:196) > > org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor.leave(LuceneIndexEditor.java:207) > > org.apache.jackrabbit.oak.plugins.index.IndexUpdate.leave(IndexUpdate.java:219) > > org.apache.jackrabbit.oak.spi.commit.VisibleEditor.leave(VisibleEditor.java:63) > > org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:56) > > org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.updateIndex(AsyncIndexUpdate.java:366) > > org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.run(AsyncIndexUpdate.java:311) > > org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:105) > org.quartz.core.JobRunShell.run(JobRunShell.java:207) > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > java.lang.Thread.run(Thread.java:745) > {noformat} > Ideally this latch should have a timeout or closing logic of IndexCopier > ensures that this is released -- This message was sent by Atlassian JIRA (v6.3.4#6332)