Skip to content

Commit 624e82b

Browse files
committed
Refactor current codec formats
1 parent e5f63e4 commit 624e82b

25 files changed

+225
-332
lines changed

lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene101/Lucene101PostingsReader.java

+25-31
Original file line numberDiff line numberDiff line change
@@ -90,49 +90,43 @@ public Lucene101PostingsReader(SegmentReadState state) throws IOException {
9090
IndexFileNames.segmentFileName(
9191
state.segmentInfo.name, state.segmentSuffix, Lucene101PostingsFormat.META_EXTENSION);
9292
final long expectedDocFileLength, expectedPosFileLength, expectedPayFileLength;
93-
ChecksumIndexInput metaIn = null;
9493
int version;
95-
try {
96-
metaIn = state.directory.openChecksumInput(metaName);
97-
version =
98-
CodecUtil.checkIndexHeader(
99-
metaIn,
100-
META_CODEC,
101-
VERSION_START,
102-
VERSION_CURRENT,
103-
state.segmentInfo.getId(),
104-
state.segmentSuffix);
105-
maxNumImpactsAtLevel0 = metaIn.readInt();
106-
maxImpactNumBytesAtLevel0 = metaIn.readInt();
107-
maxNumImpactsAtLevel1 = metaIn.readInt();
108-
maxImpactNumBytesAtLevel1 = metaIn.readInt();
109-
expectedDocFileLength = metaIn.readLong();
110-
if (state.fieldInfos.hasProx()) {
111-
expectedPosFileLength = metaIn.readLong();
112-
if (state.fieldInfos.hasPayloads() || state.fieldInfos.hasOffsets()) {
113-
expectedPayFileLength = metaIn.readLong();
94+
try (ChecksumIndexInput metaIn = state.directory.openChecksumInput(metaName)) {
95+
try {
96+
version =
97+
CodecUtil.checkIndexHeader(
98+
metaIn,
99+
META_CODEC,
100+
VERSION_START,
101+
VERSION_CURRENT,
102+
state.segmentInfo.getId(),
103+
state.segmentSuffix);
104+
maxNumImpactsAtLevel0 = metaIn.readInt();
105+
maxImpactNumBytesAtLevel0 = metaIn.readInt();
106+
maxNumImpactsAtLevel1 = metaIn.readInt();
107+
maxImpactNumBytesAtLevel1 = metaIn.readInt();
108+
expectedDocFileLength = metaIn.readLong();
109+
if (state.fieldInfos.hasProx()) {
110+
expectedPosFileLength = metaIn.readLong();
111+
if (state.fieldInfos.hasPayloads() || state.fieldInfos.hasOffsets()) {
112+
expectedPayFileLength = metaIn.readLong();
113+
} else {
114+
expectedPayFileLength = -1;
115+
}
114116
} else {
117+
expectedPosFileLength = -1;
115118
expectedPayFileLength = -1;
116119
}
117-
} else {
118-
expectedPosFileLength = -1;
119-
expectedPayFileLength = -1;
120-
}
121-
CodecUtil.checkFooter(metaIn, null);
122-
} catch (Throwable t) {
123-
try {
120+
CodecUtil.checkFooter(metaIn, null);
121+
} catch (Throwable t) {
124122
if (metaIn != null) {
125123
CodecUtil.checkFooter(metaIn, t);
126124
throw new AssertionError("unreachable");
127125
} else {
128126
throw t;
129127
}
130-
} catch (Throwable ct) {
131-
IOUtils.closeWhileSuppressingExceptions(ct, metaIn);
132-
throw ct;
133128
}
134129
}
135-
metaIn.close();
136130

137131
IndexInput docIn = null;
138132
IndexInput posIn = null;

lucene/core/src/java/org/apache/lucene/codecs/lucene103/Lucene103PostingsReader.java

+25-31
Original file line numberDiff line numberDiff line change
@@ -93,49 +93,43 @@ public Lucene103PostingsReader(SegmentReadState state) throws IOException {
9393
IndexFileNames.segmentFileName(
9494
state.segmentInfo.name, state.segmentSuffix, Lucene103PostingsFormat.META_EXTENSION);
9595
final long expectedDocFileLength, expectedPosFileLength, expectedPayFileLength;
96-
ChecksumIndexInput metaIn = null;
9796
int version;
98-
try {
99-
metaIn = state.directory.openChecksumInput(metaName);
100-
version =
101-
CodecUtil.checkIndexHeader(
102-
metaIn,
103-
META_CODEC,
104-
VERSION_START,
105-
VERSION_CURRENT,
106-
state.segmentInfo.getId(),
107-
state.segmentSuffix);
108-
maxNumImpactsAtLevel0 = metaIn.readInt();
109-
maxImpactNumBytesAtLevel0 = metaIn.readInt();
110-
maxNumImpactsAtLevel1 = metaIn.readInt();
111-
maxImpactNumBytesAtLevel1 = metaIn.readInt();
112-
expectedDocFileLength = metaIn.readLong();
113-
if (state.fieldInfos.hasProx()) {
114-
expectedPosFileLength = metaIn.readLong();
115-
if (state.fieldInfos.hasPayloads() || state.fieldInfos.hasOffsets()) {
116-
expectedPayFileLength = metaIn.readLong();
97+
try (ChecksumIndexInput metaIn = state.directory.openChecksumInput(metaName)) {
98+
try {
99+
version =
100+
CodecUtil.checkIndexHeader(
101+
metaIn,
102+
META_CODEC,
103+
VERSION_START,
104+
VERSION_CURRENT,
105+
state.segmentInfo.getId(),
106+
state.segmentSuffix);
107+
maxNumImpactsAtLevel0 = metaIn.readInt();
108+
maxImpactNumBytesAtLevel0 = metaIn.readInt();
109+
maxNumImpactsAtLevel1 = metaIn.readInt();
110+
maxImpactNumBytesAtLevel1 = metaIn.readInt();
111+
expectedDocFileLength = metaIn.readLong();
112+
if (state.fieldInfos.hasProx()) {
113+
expectedPosFileLength = metaIn.readLong();
114+
if (state.fieldInfos.hasPayloads() || state.fieldInfos.hasOffsets()) {
115+
expectedPayFileLength = metaIn.readLong();
116+
} else {
117+
expectedPayFileLength = -1;
118+
}
117119
} else {
120+
expectedPosFileLength = -1;
118121
expectedPayFileLength = -1;
119122
}
120-
} else {
121-
expectedPosFileLength = -1;
122-
expectedPayFileLength = -1;
123-
}
124-
CodecUtil.checkFooter(metaIn, null);
125-
} catch (Throwable t) {
126-
try {
123+
CodecUtil.checkFooter(metaIn, null);
124+
} catch (Throwable t) {
127125
if (metaIn != null) {
128126
CodecUtil.checkFooter(metaIn, t);
129127
throw new AssertionError("unreachable");
130128
} else {
131129
throw t;
132130
}
133-
} catch (Throwable ct) {
134-
IOUtils.closeWhileSuppressingExceptions(ct, metaIn);
135-
throw ct;
136131
}
137132
}
138-
metaIn.close();
139133

140134
IndexInput docIn = null;
141135
IndexInput posIn = null;

lucene/core/src/java/org/apache/lucene/codecs/lucene103/Lucene103PostingsWriter.java

+28-32
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ public Lucene103PostingsWriter(SegmentWriteState state) throws IOException {
152152
metaOut = state.directory.createOutput(metaFileName, state.context);
153153
IndexOutput posOut = null;
154154
IndexOutput payOut = null;
155-
boolean success = false;
156155
try {
157156
docOut = state.directory.createOutput(docFileName, state.context);
158157
CodecUtil.writeIndexHeader(
@@ -205,11 +204,9 @@ public Lucene103PostingsWriter(SegmentWriteState state) throws IOException {
205204
}
206205
this.payOut = payOut;
207206
this.posOut = posOut;
208-
success = true;
209-
} finally {
210-
if (!success) {
211-
IOUtils.closeWhileHandlingException(metaOut, docOut, posOut, payOut);
212-
}
207+
} catch (Throwable t) {
208+
IOUtils.closeWhileSuppressingExceptions(t, metaOut, docOut, posOut, payOut);
209+
throw t;
213210
}
214211

215212
docDeltaBuffer = new int[BLOCK_SIZE];
@@ -694,38 +691,37 @@ public void encodeTerm(
694691
@Override
695692
public void close() throws IOException {
696693
// TODO: add a finish() at least to PushBase? DV too...?
697-
boolean success = false;
698694
try {
699-
if (docOut != null) {
700-
CodecUtil.writeFooter(docOut);
701-
}
702-
if (posOut != null) {
703-
CodecUtil.writeFooter(posOut);
704-
}
705-
if (payOut != null) {
706-
CodecUtil.writeFooter(payOut);
707-
}
708-
if (metaOut != null) {
709-
metaOut.writeInt(maxNumImpactsAtLevel0);
710-
metaOut.writeInt(maxImpactNumBytesAtLevel0);
711-
metaOut.writeInt(maxNumImpactsAtLevel1);
712-
metaOut.writeInt(maxImpactNumBytesAtLevel1);
713-
metaOut.writeLong(docOut.getFilePointer());
695+
try {
696+
if (docOut != null) {
697+
CodecUtil.writeFooter(docOut);
698+
}
714699
if (posOut != null) {
715-
metaOut.writeLong(posOut.getFilePointer());
716-
if (payOut != null) {
717-
metaOut.writeLong(payOut.getFilePointer());
700+
CodecUtil.writeFooter(posOut);
701+
}
702+
if (payOut != null) {
703+
CodecUtil.writeFooter(payOut);
704+
}
705+
if (metaOut != null) {
706+
metaOut.writeInt(maxNumImpactsAtLevel0);
707+
metaOut.writeInt(maxImpactNumBytesAtLevel0);
708+
metaOut.writeInt(maxNumImpactsAtLevel1);
709+
metaOut.writeInt(maxImpactNumBytesAtLevel1);
710+
metaOut.writeLong(docOut.getFilePointer());
711+
if (posOut != null) {
712+
metaOut.writeLong(posOut.getFilePointer());
713+
if (payOut != null) {
714+
metaOut.writeLong(payOut.getFilePointer());
715+
}
718716
}
717+
CodecUtil.writeFooter(metaOut);
719718
}
720-
CodecUtil.writeFooter(metaOut);
719+
} catch (Throwable t) {
720+
IOUtils.closeWhileSuppressingExceptions(t, metaOut, docOut, posOut, payOut);
721+
throw t;
721722
}
722-
success = true;
723+
IOUtils.close(metaOut, docOut, posOut, payOut);
723724
} finally {
724-
if (success) {
725-
IOUtils.close(metaOut, docOut, posOut, payOut);
726-
} else {
727-
IOUtils.closeWhileHandlingException(metaOut, docOut, posOut, payOut);
728-
}
729725
metaOut = docOut = posOut = payOut = null;
730726
}
731727
}

lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90CompoundReader.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ public Lucene90CompoundReader(Directory directory, SegmentInfo si) throws IOExce
6464
String entriesFileName =
6565
IndexFileNames.segmentFileName(segmentName, "", Lucene90CompoundFormat.ENTRIES_EXTENSION);
6666
this.entries = readEntries(si.getId(), directory, entriesFileName);
67-
boolean success = false;
6867

6968
// find the last FileEntry in the map (largest offset+length) and add length of codec footer:
7069
final long expectedLength =
@@ -92,12 +91,9 @@ public Lucene90CompoundReader(Directory directory, SegmentInfo si) throws IOExce
9291
"length should be " + expectedLength + " bytes, but is " + handle.length() + " instead",
9392
handle);
9493
}
95-
96-
success = true;
97-
} finally {
98-
if (!success) {
99-
IOUtils.closeWhileHandlingException(handle);
100-
}
94+
} catch (Throwable t) {
95+
IOUtils.closeWhileSuppressingExceptions(t, handle);
96+
throw t;
10197
}
10298
}
10399

lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90DocValuesConsumer.java

+15-19
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ public Lucene90DocValuesConsumer(
7878
String metaExtension)
7979
throws IOException {
8080
this.termsDictBuffer = new byte[1 << 14];
81-
boolean success = false;
8281
try {
8382
String dataName =
8483
IndexFileNames.segmentFileName(
@@ -102,32 +101,29 @@ public Lucene90DocValuesConsumer(
102101
state.segmentSuffix);
103102
maxDoc = state.segmentInfo.maxDoc();
104103
this.skipIndexIntervalSize = skipIndexIntervalSize;
105-
success = true;
106-
} finally {
107-
if (!success) {
108-
IOUtils.closeWhileHandlingException(this);
109-
}
104+
} catch (Throwable t) {
105+
IOUtils.closeWhileSuppressingExceptions(t, this);
106+
throw t;
110107
}
111108
}
112109

113110
@Override
114111
public void close() throws IOException {
115-
boolean success = false;
116112
try {
117-
if (meta != null) {
118-
meta.writeInt(-1); // write EOF marker
119-
CodecUtil.writeFooter(meta); // write checksum
120-
}
121-
if (data != null) {
122-
CodecUtil.writeFooter(data); // write checksum
113+
try {
114+
if (meta != null) {
115+
meta.writeInt(-1); // write EOF marker
116+
CodecUtil.writeFooter(meta); // write checksum
117+
}
118+
if (data != null) {
119+
CodecUtil.writeFooter(data); // write checksum
120+
}
121+
} catch (Throwable t) {
122+
IOUtils.closeWhileSuppressingExceptions(t, data, meta);
123+
throw t;
123124
}
124-
success = true;
125+
IOUtils.close(data, meta);
125126
} finally {
126-
if (success) {
127-
IOUtils.close(data, meta);
128-
} else {
129-
IOUtils.closeWhileHandlingException(data, meta);
130-
}
131127
meta = data = null;
132128
}
133129
}

lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90DocValuesProducer.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ final class Lucene90DocValuesProducer extends DocValuesProducer {
116116
IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, dataExtension);
117117
// Doc-values have a forward-only access pattern
118118
this.data = state.directory.openInput(dataName, state.context.withHints(FileTypeHint.DATA));
119-
boolean success = false;
120119
try {
121120
final int version2 =
122121
CodecUtil.checkIndexHeader(
@@ -136,12 +135,9 @@ final class Lucene90DocValuesProducer extends DocValuesProducer {
136135
// for FOOTER_MAGIC + algorithmID. This is cheap and can detect some forms of corruption
137136
// such as file truncation.
138137
CodecUtil.retrieveChecksum(data);
139-
140-
success = true;
141-
} finally {
142-
if (!success) {
143-
IOUtils.closeWhileHandlingException(this.data);
144-
}
138+
} catch (Throwable t) {
139+
IOUtils.closeWhileSuppressingExceptions(t, data);
140+
throw t;
145141
}
146142
}
147143

lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90NormsConsumer.java

+15-19
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ final class Lucene90NormsConsumer extends NormsConsumer {
4242
String metaCodec,
4343
String metaExtension)
4444
throws IOException {
45-
boolean success = false;
4645
try {
4746
String dataName =
4847
IndexFileNames.segmentFileName(
@@ -57,32 +56,29 @@ final class Lucene90NormsConsumer extends NormsConsumer {
5756
CodecUtil.writeIndexHeader(
5857
meta, metaCodec, VERSION_CURRENT, state.segmentInfo.getId(), state.segmentSuffix);
5958
maxDoc = state.segmentInfo.maxDoc();
60-
success = true;
61-
} finally {
62-
if (!success) {
63-
IOUtils.closeWhileHandlingException(this);
64-
}
59+
} catch (Throwable t) {
60+
IOUtils.closeWhileSuppressingExceptions(t, this);
61+
throw t;
6562
}
6663
}
6764

6865
@Override
6966
public void close() throws IOException {
70-
boolean success = false;
7167
try {
72-
if (meta != null) {
73-
meta.writeInt(-1); // write EOF marker
74-
CodecUtil.writeFooter(meta); // write checksum
68+
try {
69+
if (meta != null) {
70+
meta.writeInt(-1); // write EOF marker
71+
CodecUtil.writeFooter(meta); // write checksum
72+
}
73+
if (data != null) {
74+
CodecUtil.writeFooter(data); // write checksum
75+
}
76+
} catch (Throwable t) {
77+
IOUtils.closeWhileSuppressingExceptions(t, data, meta);
78+
throw t;
7579
}
76-
if (data != null) {
77-
CodecUtil.writeFooter(data); // write checksum
78-
}
79-
success = true;
80+
IOUtils.close(data, meta);
8081
} finally {
81-
if (success) {
82-
IOUtils.close(data, meta);
83-
} else {
84-
IOUtils.closeWhileHandlingException(data, meta);
85-
}
8682
meta = data = null;
8783
}
8884
}

0 commit comments

Comments
 (0)