[
https://issues.apache.org/jira/browse/LUCENE-7248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15254508#comment-15254508
]
Alexandre Philbert edited comment on LUCENE-7248 at 4/22/16 8:13 PM:
---------------------------------------------------------------------
Okay thanks for the detailed responses. I'll look into Scott's 'workaround' or
if RAFDirectory solves the problem.
EDIT: I tried switching FSDirectory implementations and LockFactory and it
seems that switching to other LockFactory implementations "fixes" the issue...
I'm currently testing locally so it's not confirmed yet. Are there any terrible
things that can happen using SingleInstanceLockFactory or NoLockFactory?
was (Author: pheelbert):
Okay thanks for the detailed responses. I'll look into Scott's 'workaround' or
if RAFDirectory solves the problem.
> Interrupting IndexWriter causing unhandled ClosedChannelException
> -----------------------------------------------------------------
>
> Key: LUCENE-7248
> URL: https://issues.apache.org/jira/browse/LUCENE-7248
> Project: Lucene - Core
> Issue Type: Bug
> Components: core/store
> Affects Versions: 5.3
> Reporter: Alexandre Philbert
> Labels: exception, interrupt, lock, nio, release
>
> When interrupting the IndexWriter, sometimes an InterruptedException is
> correctly handled but other times it isn't. When unhandled, the IndexWriter
> 'closes' and any other operation throws AlreadyClosedException. Here is a
> stack trace:
> java.nio.channels.ClosedChannelException
> at sun.nio.ch.FileLockImpl.release(FileLockImpl.java:58)
> at java.nio.channels.FileLock.close(FileLock.java:309)
> at
> org.apache.lucene.store.NativeFSLockFactory$NativeFSLock.close(NativeFSLockFactory.java:194)
> at org.apache.lucene.util.IOUtils.close(IOUtils.java:97)
> at org.apache.lucene.util.IOUtils.close(IOUtils.java:84)
> at
> org.apache.lucene.index.IndexWriter.rollbackInternal(IndexWriter.java:2103)
> at org.apache.lucene.index.IndexWriter.tragicEvent(IndexWriter.java:4574)
> at
> org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1487)
> at
> com.google.gerrit.lucene.AutoCommitWriter.updateDocument(AutoCommitWriter.java:100)
> at
> org.apache.lucene.index.TrackingIndexWriter.updateDocument(TrackingIndexWriter.java:55)
> at com.google.gerrit.lucene.SubIndex.replace(SubIndex.java:183)
> at
> com.google.gerrit.lucene.LuceneChangeIndex.replace(LuceneChangeIndex.java:326)
> at
> com.google.gerrit.server.index.ChangeIndexer$IndexTask.call(ChangeIndexer.java:243)
> at
> com.google.gerrit.server.index.ChangeIndexer$IndexTask.call(ChangeIndexer.java:1)
> at
> com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:108)
> at
> com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:41)
> at
> com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)
> at
> com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:310)
> at
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:132)
> at
> com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:61)
> at
> com.google.gerrit.server.index.ChangeIndexer.submit(ChangeIndexer.java:200)
> at
> com.google.gerrit.server.index.ChangeIndexer.indexAsync(ChangeIndexer.java:133)
> at
> com.google.gerrit.server.change.PostReviewers.addReviewers(PostReviewers.java:246)
> at
> com.google.gerrit.server.change.PostReviewers.putAccount(PostReviewers.java:156)
> at
> com.google.gerrit.server.change.PostReviewers.apply(PostReviewers.java:138)
> at
> com.google.gerrit.sshd.commands.SetReviewersCommand.modifyOne(SetReviewersCommand.java:158)
> at
> com.google.gerrit.sshd.commands.SetReviewersCommand.run(SetReviewersCommand.java:112)
> at com.google.gerrit.sshd.SshCommand$1.run(SshCommand.java:48)
> at com.google.gerrit.sshd.BaseCommand$TaskThunk.run(BaseCommand.java:442)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
> at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:377)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> [...]
> org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed
> at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:719)
> at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:733)
> at
> org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1471)
> at
> com.google.gerrit.lucene.AutoCommitWriter.updateDocument(AutoCommitWriter.java:100)
> at
> org.apache.lucene.index.TrackingIndexWriter.updateDocument(TrackingIndexWriter.java:55)
> at com.google.gerrit.lucene.SubIndex.replace(SubIndex.java:183)
> at
> com.google.gerrit.lucene.LuceneChangeIndex.replace(LuceneChangeIndex.java:326)
> at
> com.google.gerrit.server.index.ChangeIndexer$IndexTask.call(ChangeIndexer.java:243)
> at
> com.google.gerrit.server.index.ChangeIndexer$IndexTask.call(ChangeIndexer.java:1)
> at
> com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:108)
> at
> com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:41)
> at
> com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)
> at
> com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:310)
> at
> java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:132)
> at
> com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:61)
> at
> com.google.gerrit.server.index.ChangeIndexer.submit(ChangeIndexer.java:200)
> at
> com.google.gerrit.server.index.ChangeIndexer.indexAsync(ChangeIndexer.java:133)
> at
> com.google.gerrit.server.change.PostReviewers.addReviewers(PostReviewers.java:246)
> at
> com.google.gerrit.server.change.PostReviewers.putAccount(PostReviewers.java:156)
> at
> com.google.gerrit.server.change.PostReviewers.apply(PostReviewers.java:138)
> at
> com.google.gerrit.sshd.commands.SetReviewersCommand.modifyOne(SetReviewersCommand.java:158)
> at
> com.google.gerrit.sshd.commands.SetReviewersCommand.run(SetReviewersCommand.java:112)
> at com.google.gerrit.sshd.SshCommand$1.run(SshCommand.java:48)
> at
> com.google.gerrit.sshd.BaseCommand$TaskThunk.run(BaseCommand.java:442)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
> at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:377)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.nio.channels.ClosedByInterruptException
> at
> java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
> at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:312)
> at
> org.apache.lucene.store.NativeFSLockFactory$NativeFSLock.ensureValid(NativeFSLockFactory.java:170)
> at
> org.apache.lucene.store.LockValidatingDirectoryWrapper.createOutput(LockValidatingDirectoryWrapper.java:43)
> at
> org.apache.lucene.store.TrackingDirectoryWrapper.createOutput(TrackingDirectoryWrapper.java:43)
> at
> org.apache.lucene.codecs.compressing.CompressingStoredFieldsWriter.<init>(CompressingStoredFieldsWriter.java:110)
> at
> org.apache.lucene.codecs.compressing.CompressingStoredFieldsFormat.fieldsWriter(CompressingStoredFieldsFormat.java:128)
> at
> org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat.fieldsWriter(Lucene50StoredFieldsFormat.java:183)
> at
> org.apache.lucene.index.DefaultIndexingChain.initStoredFieldsWriter(DefaultIndexingChain.java:81)
> at
> org.apache.lucene.index.DefaultIndexingChain.startStoredFields(DefaultIndexingChain.java:258)
> at
> org.apache.lucene.index.DefaultIndexingChain.processDocument(DefaultIndexingChain.java:295)
> at
> org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:234)
> at
> org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:450)
> at
> org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1475)
> ... 29 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]