Skip to content

Commit 1856090

Browse files
authored
validate checksum in footer separately for segment metadata files (#6931)
Signed-off-by: Varun Bansal <bansvaru@amazon.com>
1 parent c0a8cf8 commit 1856090

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

server/src/main/java/org/opensearch/common/io/VersionedCodecStreamWrapper.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import java.io.IOException;
1212

1313
import org.apache.lucene.codecs.CodecUtil;
14-
import org.apache.lucene.store.BufferedChecksumIndexInput;
1514
import org.apache.lucene.store.ChecksumIndexInput;
1615
import org.apache.lucene.store.IndexInput;
1716
import org.apache.lucene.store.IndexOutput;
@@ -47,10 +46,9 @@ public VersionedCodecStreamWrapper(IndexIOStreamHandler<T> indexIOStreamHandler,
4746
* @return stream content parsed into {@link T}
4847
*/
4948
public T readStream(IndexInput indexInput) throws IOException {
50-
ChecksumIndexInput checksumIndexInput = new BufferedChecksumIndexInput(indexInput);
51-
int readStreamVersion = checkHeader(checksumIndexInput);
52-
T content = getHandlerForVersion(readStreamVersion).readContent(checksumIndexInput);
53-
checkFooter(checksumIndexInput);
49+
CodecUtil.checksumEntireFile(indexInput);
50+
int readStreamVersion = checkHeader(indexInput);
51+
T content = getHandlerForVersion(readStreamVersion).readContent(indexInput);
5452
return content;
5553
}
5654

server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.apache.lucene.store.IndexInput;
1818
import org.apache.lucene.store.IndexOutput;
1919
import org.opensearch.common.UUIDs;
20+
import org.opensearch.common.lucene.store.ByteArrayIndexInput;
2021
import org.opensearch.index.store.remote.metadata.RemoteSegmentMetadata;
2122
import org.opensearch.common.io.VersionedCodecStreamWrapper;
2223
import org.opensearch.index.store.remote.metadata.RemoteSegmentMetadataHandler;
@@ -135,7 +136,9 @@ private Map<String, UploadedSegmentMetadata> readLatestMetadataFile() throws IOE
135136

136137
private Map<String, UploadedSegmentMetadata> readMetadataFile(String metadataFilename) throws IOException {
137138
try (IndexInput indexInput = remoteMetadataDirectory.openInput(metadataFilename, IOContext.DEFAULT)) {
138-
RemoteSegmentMetadata metadata = metadataStreamWrapper.readStream(indexInput);
139+
byte[] metadataBytes = new byte[(int) indexInput.length()];
140+
indexInput.readBytes(metadataBytes, 0, (int) indexInput.length());
141+
RemoteSegmentMetadata metadata = metadataStreamWrapper.readStream(new ByteArrayIndexInput(metadataFilename, metadataBytes));
139142
return metadata.getMetadata();
140143
}
141144
}

0 commit comments

Comments
 (0)