All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.rocksdb.CompactRangeOptions Maven / Gradle / Ivy

// Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
//  This source code is licensed under both the GPLv2 (found in the
//  COPYING file in the root directory) and Apache 2.0 License
//  (found in the LICENSE.Apache file in the root directory).

package org.rocksdb;

/**
 * CompactRangeOptions is used by CompactRange() call. In the documentation of the methods "the compaction" refers to
 * any compaction that is using this CompactRangeOptions.
 */
public class CompactRangeOptions extends RocksObject {

  private final static byte VALUE_kSkip = 0;
  private final static byte VALUE_kIfHaveCompactionFilter = 1;
  private final static byte VALUE_kForce = 2;

  // For level based compaction, we can configure if we want to skip/force bottommost level compaction.
  // The order of this neum MUST follow the C++ layer. See BottommostLevelCompaction in db/options.h
  public enum BottommostLevelCompaction {
    /**
     * Skip bottommost level compaction
     */
    kSkip((byte)VALUE_kSkip),
    /**
     * Only compact bottommost level if there is a compaction filter. This is the default option
     */
    kIfHaveCompactionFilter(VALUE_kIfHaveCompactionFilter),
    /**
     * Always compact bottommost level
     */
    kForce(VALUE_kForce);

    private final byte value;

    BottommostLevelCompaction(final byte value) {
      this.value = value;
    }

    /**
     * 

Returns the byte value of the enumerations value.

* * @return byte representation */ public byte getValue() { return value; } /** * Returns the BottommostLevelCompaction for the given C++ rocks enum value. * @param bottommostLevelCompaction The value of the BottommostLevelCompaction * @return BottommostLevelCompaction instance, or null if none matches */ public static BottommostLevelCompaction fromRocksId(final int bottommostLevelCompaction) { switch (bottommostLevelCompaction) { case VALUE_kSkip: return kSkip; case VALUE_kIfHaveCompactionFilter: return kIfHaveCompactionFilter; case VALUE_kForce: return kForce; default: return null; } } } /** * Construct CompactRangeOptions. */ public CompactRangeOptions() { super(newCompactRangeOptions()); } /** * Returns whether the compaction is exclusive or other compactions may run concurrently at the same time. * * @return true if exclusive, false if concurrent */ public boolean exclusiveManualCompaction() { return exclusiveManualCompaction(nativeHandle_); } /** * Sets whether the compaction is exclusive or other compaction are allowed run concurrently at the same time. * * @param exclusiveCompaction true if compaction should be exclusive * @return This CompactRangeOptions */ public CompactRangeOptions setExclusiveManualCompaction(final boolean exclusiveCompaction) { setExclusiveManualCompaction(nativeHandle_, exclusiveCompaction); return this; } /** * Returns the policy for compacting the bottommost level * @return The BottommostLevelCompaction policy */ public BottommostLevelCompaction bottommostLevelCompaction() { return BottommostLevelCompaction.fromRocksId(bottommostLevelCompaction(nativeHandle_)); } /** * Sets the policy for compacting the bottommost level * * @param bottommostLevelCompaction The policy for compacting the bottommost level * @return This CompactRangeOptions */ public CompactRangeOptions setBottommostLevelCompaction(final BottommostLevelCompaction bottommostLevelCompaction) { setBottommostLevelCompaction(nativeHandle_, bottommostLevelCompaction.getValue()); return this; } /** * Returns whether compacted files will be moved to the minimum level capable of holding the data or given level * (specified non-negative target_level). * @return true, if compacted files will be moved to the minimum level */ public boolean changeLevel() { return changeLevel(nativeHandle_); } /** * Whether compacted files will be moved to the minimum level capable of holding the data or given level * (specified non-negative target_level). * * @param changeLevel If true, compacted files will be moved to the minimum level * @return This CompactRangeOptions */ public CompactRangeOptions setChangeLevel(final boolean changeLevel) { setChangeLevel(nativeHandle_, changeLevel); return this; } /** * If change_level is true and target_level have non-negative value, compacted files will be moved to target_level. * @return The target level for the compacted files */ public int targetLevel() { return targetLevel(nativeHandle_); } /** * If change_level is true and target_level have non-negative value, compacted files will be moved to target_level. * * @param targetLevel target level for the compacted files * @return This CompactRangeOptions */ public CompactRangeOptions setTargetLevel(final int targetLevel) { setTargetLevel(nativeHandle_, targetLevel); return this; } /** * target_path_id for compaction output. Compaction outputs will be placed in options.db_paths[target_path_id]. * * @return target_path_id */ public int targetPathId() { return targetPathId(nativeHandle_); } /** * Compaction outputs will be placed in options.db_paths[target_path_id]. Behavior is undefined if target_path_id is * out of range. * * @param targetPathId target path id * @return This CompactRangeOptions */ public CompactRangeOptions setTargetPathId(final int targetPathId) { setTargetPathId(nativeHandle_, targetPathId); return this; } /** * If true, compaction will execute immediately even if doing so would cause the DB to * enter write stall mode. Otherwise, it'll sleep until load is low enough. * @return true if compaction will execute immediately */ public boolean allowWriteStall() { return allowWriteStall(nativeHandle_); } /** * If true, compaction will execute immediately even if doing so would cause the DB to * enter write stall mode. Otherwise, it'll sleep until load is low enough. * * @return This CompactRangeOptions * @param allowWriteStall true if compaction should execute immediately */ public CompactRangeOptions setAllowWriteStall(final boolean allowWriteStall) { setAllowWriteStall(nativeHandle_, allowWriteStall); return this; } /** * If > 0, it will replace the option in the DBOptions for this compaction * @return number of subcompactions */ public int maxSubcompactions() { return maxSubcompactions(nativeHandle_); } /** * If > 0, it will replace the option in the DBOptions for this compaction * * @param maxSubcompactions number of subcompactions * @return This CompactRangeOptions */ public CompactRangeOptions setMaxSubcompactions(final int maxSubcompactions) { setMaxSubcompactions(nativeHandle_, maxSubcompactions); return this; } private native static long newCompactRangeOptions(); private native boolean exclusiveManualCompaction(final long handle); private native void setExclusiveManualCompaction(final long handle, final boolean exclusive_manual_compaction); private native int bottommostLevelCompaction(final long handle); private native void setBottommostLevelCompaction(final long handle, final int bottommostLevelCompaction); private native boolean changeLevel(final long handle); private native void setChangeLevel(final long handle, final boolean changeLevel); private native int targetLevel(final long handle); private native void setTargetLevel(final long handle, final int targetLevel); private native int targetPathId(final long handle); private native void setTargetPathId(final long handle, final int /* uint32_t */ targetPathId); private native boolean allowWriteStall(final long handle); private native void setAllowWriteStall(final long handle, final boolean allowWriteStall); private native void setMaxSubcompactions(final long handle, final int /* uint32_t */ maxSubcompactions); private native int maxSubcompactions(final long handle); @Override protected final native void disposeInternal(final long handle); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy