static void createNew()

in src/main/java/com/spotify/sparkey/IndexHash.java [120:156]


  static void createNew(
      File indexFile, File logFile, HashType hashType, double sparsity,
      boolean fsync, final int hashSeed, final long maxMemory,
      final SparkeyWriter.ConstructionMethod wantedMethod) throws IOException {
    if (sparsity < 1.3) {
      sparsity = 1.3;
    }
    LogHeader logHeader = LogHeader.read(logFile);

    int addressSize = calcAddressSize(logHeader) ? 4 : 8;
    if (hashType == null) {
      hashType = logHeader.getNumPuts() < (1 << 23) ? HashType.HASH_32_BITS : HashType.HASH_64_BITS;
    }

    long capacity = 1L | (long) (logHeader.getNumPuts() * sparsity);

    IndexHeader header = new IndexHeader(logHeader.getFileIdentifier(), logHeader.getDataEnd(),
        logHeader.getMaxKeyLen(), logHeader.getMaxValueLen(), addressSize, hashType.size(), capacity, logHeader.getNumPuts(),
        hashSeed,
        calcEntryBlockBits(logHeader.getMaxEntriesPerBlock()));

    long hashLength = header.getHashLength();


    final boolean inMemory;
    if (wantedMethod == SparkeyWriter.ConstructionMethod.AUTO) {
      inMemory = hashLength <= maxMemory;
    } else {
      inMemory = wantedMethod == SparkeyWriter.ConstructionMethod.IN_MEMORY;
    }

    if (inMemory) {
      writeIndexInMemory(indexFile, logFile, fsync, logHeader, header, hashLength);
    } else {
      writeIndexWithSorting(indexFile, logFile, fsync, logHeader, header, hashLength, maxMemory);
    }
  }