public BlockCompressedStableGeneration( BloomFilter.MemoryManager memoryManager, File file, Comparator<K> comparator, Serializer<K> keySerializer, Serializer<V> valueSerializer, final CompressionCodec codec, final boolean mlockBTree ) throws IOException { this.file = file; reader = new ImmutableBTreeIndex.Reader(file, comparator, keySerializer, new LongSerializer(), mlockBTree); final File valuesFile = new File(file, "values.bin"); recordFile = new BlockCompressedRecordFile.Builder(valuesFile, valueSerializer, codec).setMlockFiles(mlockBTree).build(); final File bloomFilterFile = new File(file, "bloomfilter.bin"); if (bloomFilterFile.exists()) { bloomFilter = new BloomFilter.Reader(memoryManager, bloomFilterFile, keySerializer); } else { bloomFilter = null; } sizeInBytes = reader.sizeInBytes()+valuesFile.length()+(bloomFilter == null ? 0 : bloomFilter.sizeInBytes()); stuffToClose = SharedReference.create((Closeable)new Closeable() { public void close() throws IOException { Closeables2.closeQuietly(reader, log); if (bloomFilter != null) Closeables2.closeQuietly(bloomFilter, log); Closeables2.closeQuietly(recordFile, log); } }); }