Description
Closeable.close() says "If the stream is already closed then invoking this method has no effect.".
But a lot of our code does not really respect that. If i add an "extra" close() call in assertingcodec, it finds all kinds of bugs in codec code, for example:
[junit4] Tests with failures (first 10 out of 59): [junit4] - org.apache.lucene.index.TestCrashCausesCorruptIndex.testCrashCorruptsIndexing [junit4] - org.apache.lucene.codecs.asserting.TestAssertingPostingsFormat.testDocsOnly [junit4] - org.apache.lucene.codecs.asserting.TestAssertingPostingsFormat.testDocsAndFreqsAndPositionsAndOffsetsAndPayloads [junit4] - org.apache.lucene.codecs.asserting.TestAssertingPostingsFormat.testDocsAndFreqs [junit4] - org.apache.lucene.codecs.asserting.TestAssertingPostingsFormat.testDocsAndFreqsAndPositionsAndOffsets [junit4] - org.apache.lucene.codecs.asserting.TestAssertingPostingsFormat.testRandom [junit4] - org.apache.lucene.codecs.asserting.TestAssertingPostingsFormat.testDocsAndFreqsAndPositionsAndPayloads [junit4] - org.apache.lucene.codecs.asserting.TestAssertingPostingsFormat.testDocsAndFreqsAndPositions [junit4] - org.apache.lucene.index.TestDirectoryReader.testFilesOpenClose [junit4] - org.apache.lucene.index.TestIndexWriterDelete.testIndexingThenDeleting