1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. 2 // This source code is licensed under both the GPLv2 (found in the 3 // COPYING file in the root directory) and Apache 2.0 License 4 // (found in the LICENSE.Apache file in the root directory). 5 6 package org.rocksdb; 7 8 /** 9 * Options for FIFO Compaction 10 */ 11 public class CompactionOptionsFIFO extends RocksObject { 12 CompactionOptionsFIFO()13 public CompactionOptionsFIFO() { 14 super(newCompactionOptionsFIFO()); 15 } 16 17 /** 18 * Once the total sum of table files reaches this, we will delete the oldest 19 * table file 20 * 21 * Default: 1GB 22 * 23 * @param maxTableFilesSize The maximum size of the table files 24 * 25 * @return the reference to the current options. 26 */ setMaxTableFilesSize( final long maxTableFilesSize)27 public CompactionOptionsFIFO setMaxTableFilesSize( 28 final long maxTableFilesSize) { 29 setMaxTableFilesSize(nativeHandle_, maxTableFilesSize); 30 return this; 31 } 32 33 /** 34 * Once the total sum of table files reaches this, we will delete the oldest 35 * table file 36 * 37 * Default: 1GB 38 * 39 * @return max table file size in bytes 40 */ maxTableFilesSize()41 public long maxTableFilesSize() { 42 return maxTableFilesSize(nativeHandle_); 43 } 44 45 /** 46 * If true, try to do compaction to compact smaller files into larger ones. 47 * Minimum files to compact follows options.level0_file_num_compaction_trigger 48 * and compaction won't trigger if average compact bytes per del file is 49 * larger than options.write_buffer_size. This is to protect large files 50 * from being compacted again. 51 * 52 * Default: false 53 * 54 * @param allowCompaction true to allow intra-L0 compaction 55 * 56 * @return the reference to the current options. 57 */ setAllowCompaction( final boolean allowCompaction)58 public CompactionOptionsFIFO setAllowCompaction( 59 final boolean allowCompaction) { 60 setAllowCompaction(nativeHandle_, allowCompaction); 61 return this; 62 } 63 64 65 /** 66 * Check if intra-L0 compaction is enabled. 67 * When enabled, we try to compact smaller files into larger ones. 68 * 69 * See {@link #setAllowCompaction(boolean)}. 70 * 71 * Default: false 72 * 73 * @return true if intra-L0 compaction is enabled, false otherwise. 74 */ allowCompaction()75 public boolean allowCompaction() { 76 return allowCompaction(nativeHandle_); 77 } 78 79 newCompactionOptionsFIFO()80 private native static long newCompactionOptionsFIFO(); disposeInternal(final long handle)81 @Override protected final native void disposeInternal(final long handle); 82 setMaxTableFilesSize(final long handle, final long maxTableFilesSize)83 private native void setMaxTableFilesSize(final long handle, 84 final long maxTableFilesSize); maxTableFilesSize(final long handle)85 private native long maxTableFilesSize(final long handle); setAllowCompaction(final long handle, final boolean allowCompaction)86 private native void setAllowCompaction(final long handle, 87 final boolean allowCompaction); allowCompaction(final long handle)88 private native boolean allowCompaction(final long handle); 89 } 90