Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Won't Fix
-
7.1.1
-
None
-
None
-
New
Description
The condition is rare for us and seems basically a race. If a thread that is running just happens to have the FileChannel open for NativeFSLockFactory and is interrupted, the channel is closed since it extends AbstractInterruptibleChannel
Unfortunately this means the Solr Core has to be unloaded and reopened to make the core usable again as the ensureValid check forever throws an exception after.
org.apache.lucene.store.AlreadyClosedException: FileLock invalidated by an external force: NativeFSLock(path=data/index/write.lock,impl=sun.nio.ch.FileLockImpl[0:9223372036854775807 exclusive invalid],creationTime=2018-04-06T21:45:11Z) at org.apache.lucene.store.NativeFSLockFactory$NativeFSLock.ensureValid(NativeFSLockFactory.java:178) 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:113) at org.apache.lucene.codecs.compressing.CompressingStoredFieldsFormat.fieldsWriter(CompressingStoredFieldsFormat.java:128) at org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat.fieldsWriter(Lucene50StoredFieldsFormat.java:183)
Proposed solution is using AsynchronousFileChannel instead, since this is only operating on a lock and .size method