static IndexHash open()

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;
    }
  }