Class RocksDBIncrementalCheckpointUtils
- java.lang.Object
-
- org.apache.flink.contrib.streaming.state.RocksDBIncrementalCheckpointUtils
-
public class RocksDBIncrementalCheckpointUtils extends Object
Utils for RocksDB Incremental Checkpoint.
-
-
Constructor Summary
Constructors Constructor Description RocksDBIncrementalCheckpointUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static booleanbeforeThePrefixBytes(byte[] bytes, byte[] prefixBytes)check whether the bytes is before prefixBytes in the character order.static <T extends org.apache.flink.runtime.state.KeyedStateHandle>
TchooseTheBestStateHandleForInitial(List<T> restoreStateHandles, org.apache.flink.runtime.state.KeyGroupRange targetKeyGroupRange, double overlapFractionThreshold)Choose the best state handle according to thestateHandleEvaluator(KeyedStateHandle, KeyGroupRange, double)to init the initial db.static voidclipDBWithKeyGroupRange(org.rocksdb.RocksDB db, List<org.rocksdb.ColumnFamilyHandle> columnFamilyHandles, org.apache.flink.runtime.state.KeyGroupRange targetKeyGroupRange, org.apache.flink.runtime.state.KeyGroupRange currentKeyGroupRange, int keyGroupPrefixBytes, boolean useDeleteFilesInRange)The method to clip the db instance according to the target key group range using theRocksDB.delete(ColumnFamilyHandle, byte[]).static Optional<org.apache.flink.util.function.RunnableWithException>createRangeCompactionTaskIfNeeded(org.rocksdb.RocksDB db, Collection<org.rocksdb.ColumnFamilyHandle> columnFamilyHandles, int keyGroupPrefixBytes, org.apache.flink.runtime.state.KeyGroupRange dbExpectedKeyGroupRange)Returns a range compaction task as runnable if any data in the SST files of the given DB exceeds the proclaimed key-group range.static <T extends org.apache.flink.runtime.state.KeyedStateHandle>
intfindTheBestStateHandleForInitial(List<T> restoreStateHandles, org.apache.flink.runtime.state.KeyGroupRange targetKeyGroupRange, double overlapFractionThreshold)Choose the best state handle according to thestateHandleEvaluator(KeyedStateHandle, KeyGroupRange, double)to init the initial db from the given lists and returns its index.static booleanisSstDataInKeyGroupRange(org.rocksdb.RocksDB db, int keyGroupPrefixBytes, org.apache.flink.runtime.state.KeyGroupRange dbExpectedKeyGroupRange)Returns true, if all entries in the sst files of the given DB is strictly within the expected key-group range for the DB.
-
-
-
Method Detail
-
clipDBWithKeyGroupRange
public static void clipDBWithKeyGroupRange(@Nonnull org.rocksdb.RocksDB db, @Nonnull List<org.rocksdb.ColumnFamilyHandle> columnFamilyHandles, @Nonnull org.apache.flink.runtime.state.KeyGroupRange targetKeyGroupRange, @Nonnull org.apache.flink.runtime.state.KeyGroupRange currentKeyGroupRange, @Nonnegative int keyGroupPrefixBytes, boolean useDeleteFilesInRange) throws org.rocksdb.RocksDBException
The method to clip the db instance according to the target key group range using theRocksDB.delete(ColumnFamilyHandle, byte[]).- Parameters:
db- the RocksDB instance to be clipped.columnFamilyHandles- the column families in the db instance.targetKeyGroupRange- the target key group range.currentKeyGroupRange- the key group range of the db instance.keyGroupPrefixBytes- Number of bytes required to prefix the key groups.useDeleteFilesInRange- whether to call db.deleteFilesInRanges for the deleted ranges.- Throws:
org.rocksdb.RocksDBException
-
isSstDataInKeyGroupRange
public static boolean isSstDataInKeyGroupRange(org.rocksdb.RocksDB db, int keyGroupPrefixBytes, org.apache.flink.runtime.state.KeyGroupRange dbExpectedKeyGroupRange)Returns true, if all entries in the sst files of the given DB is strictly within the expected key-group range for the DB.- Parameters:
db- the DB to check.dbExpectedKeyGroupRange- the expected key-groups range of the DB.keyGroupPrefixBytes- the number of bytes used to serialize the key-group prefix of keys in the DB.
-
createRangeCompactionTaskIfNeeded
public static Optional<org.apache.flink.util.function.RunnableWithException> createRangeCompactionTaskIfNeeded(org.rocksdb.RocksDB db, Collection<org.rocksdb.ColumnFamilyHandle> columnFamilyHandles, int keyGroupPrefixBytes, org.apache.flink.runtime.state.KeyGroupRange dbExpectedKeyGroupRange)
Returns a range compaction task as runnable if any data in the SST files of the given DB exceeds the proclaimed key-group range.- Parameters:
db- the DB to check and compact if needed.columnFamilyHandles- list of column families to check.keyGroupPrefixBytes- the number of bytes used to serialize the key-group prefix of keys in the DB.dbExpectedKeyGroupRange- the expected key-groups range of the DB.- Returns:
- runnable that performs compaction upon execution if the key-groups range is exceeded. Otherwise, empty optional is returned.
-
beforeThePrefixBytes
public static boolean beforeThePrefixBytes(@Nonnull byte[] bytes, @Nonnull byte[] prefixBytes)
check whether the bytes is before prefixBytes in the character order.
-
chooseTheBestStateHandleForInitial
@Nullable public static <T extends org.apache.flink.runtime.state.KeyedStateHandle> T chooseTheBestStateHandleForInitial(@Nonnull List<T> restoreStateHandles, @Nonnull org.apache.flink.runtime.state.KeyGroupRange targetKeyGroupRange, double overlapFractionThreshold)
Choose the best state handle according to thestateHandleEvaluator(KeyedStateHandle, KeyGroupRange, double)to init the initial db.- Type Parameters:
T- the generic parameter type of the state handles.- Parameters:
restoreStateHandles- The candidate state handles.targetKeyGroupRange- The target key group range.overlapFractionThreshold- configured threshold for overlap.- Returns:
- The best candidate or null if no candidate was a good fit.
-
findTheBestStateHandleForInitial
public static <T extends org.apache.flink.runtime.state.KeyedStateHandle> int findTheBestStateHandleForInitial(@Nonnull List<T> restoreStateHandles, @Nonnull org.apache.flink.runtime.state.KeyGroupRange targetKeyGroupRange, double overlapFractionThreshold)
Choose the best state handle according to thestateHandleEvaluator(KeyedStateHandle, KeyGroupRange, double)to init the initial db from the given lists and returns its index.- Type Parameters:
T- the generic parameter type of the state handles.- Parameters:
restoreStateHandles- The candidate state handles.targetKeyGroupRange- The target key group range.overlapFractionThreshold- configured threshold for overlap.- Returns:
- the index of the best candidate handle in the list or -1 if the list was empty.
-
-