You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by iv...@apache.org on 2021/02/16 14:09:09 UTC
[lucene-solr] branch master updated: LUCENE-9322:
Lucene90VectorReader can leak open files (#2371)
This is an automated email from the ASF dual-hosted git repository.
ivera pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/master by this push:
new 4cdfbbb LUCENE-9322: Lucene90VectorReader can leak open files (#2371)
4cdfbbb is described below
commit 4cdfbbb95be1b25adb839ee8d1fe61052a53a4a3
Author: Ignacio Vera <iv...@apache.org>
AuthorDate: Tue Feb 16 15:08:50 2021 +0100
LUCENE-9322: Lucene90VectorReader can leak open files (#2371)
---
.../codecs/lucene90/Lucene90VectorReader.java | 83 +++++++++++-----------
1 file changed, 41 insertions(+), 42 deletions(-)
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorReader.java
index 370c9f0..58fc919 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90VectorReader.java
@@ -67,20 +67,28 @@ public final class Lucene90VectorReader extends VectorReader {
int versionMeta = readMetadata(state, Lucene90VectorFormat.META_EXTENSION);
long[] checksumRef = new long[1];
- vectorData =
- openDataInput(
- state,
- versionMeta,
- Lucene90VectorFormat.VECTOR_DATA_EXTENSION,
- Lucene90VectorFormat.VECTOR_DATA_CODEC_NAME,
- checksumRef);
- vectorIndex =
- openDataInput(
- state,
- versionMeta,
- Lucene90VectorFormat.VECTOR_INDEX_EXTENSION,
- Lucene90VectorFormat.VECTOR_INDEX_CODEC_NAME,
- checksumRef);
+ boolean success = false;
+ try {
+ vectorData =
+ openDataInput(
+ state,
+ versionMeta,
+ Lucene90VectorFormat.VECTOR_DATA_EXTENSION,
+ Lucene90VectorFormat.VECTOR_DATA_CODEC_NAME,
+ checksumRef);
+ vectorIndex =
+ openDataInput(
+ state,
+ versionMeta,
+ Lucene90VectorFormat.VECTOR_INDEX_EXTENSION,
+ Lucene90VectorFormat.VECTOR_INDEX_CODEC_NAME,
+ checksumRef);
+ success = true;
+ } finally {
+ if (success == false) {
+ IOUtils.closeWhileHandlingException(this);
+ }
+ }
checksumSeed = checksumRef[0];
}
@@ -116,37 +124,28 @@ public final class Lucene90VectorReader extends VectorReader {
String codecName,
long[] checksumRef)
throws IOException {
- boolean success = false;
-
String fileName =
IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, fileExtension);
IndexInput in = state.directory.openInput(fileName, state.context);
- try {
- int versionVectorData =
- CodecUtil.checkIndexHeader(
- in,
- codecName,
- Lucene90VectorFormat.VERSION_START,
- Lucene90VectorFormat.VERSION_CURRENT,
- state.segmentInfo.getId(),
- state.segmentSuffix);
- if (versionMeta != versionVectorData) {
- throw new CorruptIndexException(
- "Format versions mismatch: meta="
- + versionMeta
- + ", "
- + codecName
- + "="
- + versionVectorData,
- in);
- }
- checksumRef[0] = CodecUtil.retrieveChecksum(in);
- success = true;
- } finally {
- if (!success) {
- IOUtils.closeWhileHandlingException(in);
- }
- }
+ int versionVectorData =
+ CodecUtil.checkIndexHeader(
+ in,
+ codecName,
+ Lucene90VectorFormat.VERSION_START,
+ Lucene90VectorFormat.VERSION_CURRENT,
+ state.segmentInfo.getId(),
+ state.segmentSuffix);
+ if (versionMeta != versionVectorData) {
+ throw new CorruptIndexException(
+ "Format versions mismatch: meta="
+ + versionMeta
+ + ", "
+ + codecName
+ + "="
+ + versionVectorData,
+ in);
+ }
+ checksumRef[0] = CodecUtil.retrieveChecksum(in);
return in;
}