in src/main/java/com/spotify/sparkey/IndexHash.java [68:103]
static IndexHash open(File indexFile, File logFile) throws IOException {
IndexHeader header = IndexHeader.read(indexFile);
LogHeader logHeader = LogHeader.read(logFile);
verifyIdentifier(logHeader, header);
if (header.getDataEnd() > logHeader.getDataEnd()) {
throw new IOException("Corrupt index file '" + indexFile.toString() + "': referencing more data than exists in the log file");
}
ReadOnlyMemMap indexData = null;
BlockRandomInput logData = null;
IndexHash indexHash = null;
try {
int maxBlockSize = 0;
indexData = new ReadOnlyMemMap(indexFile);
maxBlockSize = logHeader.getCompressionBlockSize();
logData = logHeader.getCompressionTypeBackend().createRandomAccessData(new ReadOnlyMemMap(logFile),
maxBlockSize);
indexHash = new IndexHash(indexFile, logFile, header, logHeader, indexData, maxBlockSize, logData);
indexHash.validate();
return indexHash;
} catch (Throwable e) {
if (indexHash != null) {
indexHash.close();
} else {
if (indexData != null) {
indexData.close();
}
if (logData != null) {
logData.close();
}
}
throw e;
}
}