Github user StefanRRichter commented on a diff in the pull request: https://github.com/apache/flink/pull/5239#discussion_r168185050 --- Diff: flink-contrib/flink-statebackend-rocksdb/src/main/java/org/apache/flink/contrib/streaming/state/RocksDBStateBackend.java --- @@ -686,4 +714,53 @@ static void resetRocksDBLoadedFlag() throws Exception { initField.setAccessible(true); initField.setBoolean(null, false); } + + /** + * This enum represents the different modes for local recovery. + */ + public enum LocalRecoveryMode { + DISABLED, ENABLE_FILE_BASED + } + + /** + * This class encapsulates the configuration for local recovery of this backend. + */ + public static final class LocalRecoveryConfig implements Serializable { + + private static final long serialVersionUID = 1L; + private static final LocalRecoveryConfig DISABLED_SINGLETON = + new LocalRecoveryConfig(LocalRecoveryMode.DISABLED, null); + + private final LocalRecoveryMode localRecoveryMode; + private final File localStateDirectory; + + LocalRecoveryConfig(LocalRecoveryMode localRecoveryMode, File localStateDirectory) { + this.localRecoveryMode = Preconditions.checkNotNull(localRecoveryMode); + this.localStateDirectory = localStateDirectory; + if (LocalRecoveryMode.ENABLE_FILE_BASED.equals(localRecoveryMode) && localStateDirectory == null) { + throw new IllegalStateException("Local state directory must be specified if local recovery mode is " + + LocalRecoveryMode.ENABLE_FILE_BASED); + } + } + + public LocalRecoveryMode getLocalRecoveryMode() { + return localRecoveryMode; + } + + public File getLocalStateDirectory() { --- End diff -- Changed in later commits.
---