lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LUCENE-7248) Interrupting IndexWriter causing unhandled ClosedChannelException
Date Fri, 22 Apr 2016 21:44:12 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-7248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15254753#comment-15254753
] 

Uwe Schindler commented on LUCENE-7248:
---------------------------------------

bq. I disagree that it has nothing to do with LockFactory.

Sorry the problem will still exists if you interrupt IndexWriter and it writes files at the
same time. You have to stop interrupting indexwriter. The problem is not in Lucene it is in
the software that sends interrupts to threads by Lucene. This is a no-go, sorry. If you cannot
fix this, your only chance is to use RAFDirectory, but this slows down reading from index.

> 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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message