Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public final class DBStoreBuilder {
private boolean enableCompactionLog;
private long maxTimeAllowedForSnapshotInDag;
private long pruneCompactionDagDaemonRunInterval;

private boolean createCheckpointDirs = true;
/**
* Create DBStoreBuilder from a generic DBDefinition.
*/
Expand Down Expand Up @@ -219,7 +219,7 @@ public DBStore build() throws IOException {
return new RDBStore(dbFile, rocksDBOption, writeOptions, tableConfigs,
registry, openReadOnly, maxFSSnapshots, dbJmxBeanNameName,
enableCompactionLog, maxTimeAllowedForSnapshotInDag,
pruneCompactionDagDaemonRunInterval);
pruneCompactionDagDaemonRunInterval, createCheckpointDirs);
} finally {
tableConfigs.forEach(TableConfig::close);
}
Expand Down Expand Up @@ -281,6 +281,10 @@ public DBStoreBuilder setEnableCompactionLog(boolean enableCompactionLog) {
return this;
}

public DBStoreBuilder setCreateCheckpointDirs(boolean createCheckpointDirs) {
this.createCheckpointDirs = createCheckpointDirs;
return this;
}
/**
* Set the {@link ManagedDBOptions} and default
* {@link ManagedColumnFamilyOptions} based on {@code prof}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import javax.management.ObjectName;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -83,7 +85,7 @@ public RDBStore(File dbFile, ManagedDBOptions options,
Set<TableConfig> families) throws IOException {
this(dbFile, options, new ManagedWriteOptions(), families,
new CodecRegistry(), false, 1000, null, false,
TimeUnit.DAYS.toMillis(1), TimeUnit.HOURS.toMillis(1));
TimeUnit.DAYS.toMillis(1), TimeUnit.HOURS.toMillis(1), true);
}

@SuppressWarnings("parameternumber")
Expand All @@ -92,7 +94,8 @@ public RDBStore(File dbFile, ManagedDBOptions dbOptions,
CodecRegistry registry, boolean readOnly, int maxFSSnapshots,
String dbJmxBeanNameName, boolean enableCompactionLog,
long maxTimeAllowedForSnapshotInDag,
long compactionDagDaemonInterval)
long compactionDagDaemonInterval,
boolean createCheckpointDirs)
throws IOException {
Preconditions.checkNotNull(dbFile, "DB file location cannot be null");
Preconditions.checkNotNull(families);
Expand Down Expand Up @@ -133,29 +136,22 @@ public RDBStore(File dbFile, ManagedDBOptions dbOptions,
}

//create checkpoints directory if not exists.
checkpointsParentDir =
Paths.get(dbLocation.getParent(), "db.checkpoints").toString();
File checkpointsDir = new File(checkpointsParentDir);
if (!checkpointsDir.exists()) {
boolean success = checkpointsDir.mkdir();
if (!success) {
throw new IOException(
"Unable to create RocksDB checkpoint directory: " +
checkpointsParentDir);
}
if (!createCheckpointDirs) {
checkpointsParentDir = null;
} else {
Path checkpointsParentDirPath =
Paths.get(dbLocation.getParent(), "db.checkpoints");
checkpointsParentDir = checkpointsParentDirPath.toString();
Files.createDirectories(checkpointsParentDirPath);
}

//create snapshot directory if does not exist.
snapshotsParentDir = Paths.get(dbLocation.getParent(),
OM_SNAPSHOT_DIR).toString();
File snapshotsDir = new File(snapshotsParentDir);
if (!snapshotsDir.exists()) {
boolean success = snapshotsDir.mkdir();
if (!success) {
throw new IOException(
"Unable to create RocksDB snapshot directory: " +
snapshotsParentDir);
}
if (!createCheckpointDirs) {
snapshotsParentDir = null;
} else {
Path snapshotsParentDirPath =
Paths.get(dbLocation.getParent(), OM_SNAPSHOT_DIR);
snapshotsParentDir = snapshotsParentDirPath.toString();
Files.createDirectories(snapshotsParentDirPath);
}

if (enableCompactionLog) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ protected OmMetadataManagerImpl() {
RDBCheckpointManager.waitForCheckpointDirectoryExist(checkpoint);
}
setStore(loadDB(conf, metaDir, dbName, true,
java.util.Optional.of(Boolean.TRUE)));
java.util.Optional.of(Boolean.TRUE), false));
initializeOmTables(false);
}

Expand Down Expand Up @@ -484,14 +484,23 @@ public void start(OzoneConfiguration configuration) throws IOException {
public static DBStore loadDB(OzoneConfiguration configuration, File metaDir)
throws IOException {
return loadDB(configuration, metaDir, OM_DB_NAME, false,
java.util.Optional.empty());
java.util.Optional.empty(), true);
}

public static DBStore loadDB(OzoneConfiguration configuration, File metaDir,
String dbName, boolean readOnly,
java.util.Optional<Boolean>
disableAutoCompaction)
throws IOException {
return loadDB(configuration, metaDir, dbName, readOnly,
disableAutoCompaction, true);
}
public static DBStore loadDB(OzoneConfiguration configuration, File metaDir,
String dbName, boolean readOnly,
java.util.Optional<Boolean>
disableAutoCompaction,
boolean createCheckpointDirs)
throws IOException {
final int maxFSSnapshots = configuration.getInt(
OZONE_OM_FS_SNAPSHOT_MAX_LIMIT, OZONE_OM_FS_SNAPSHOT_MAX_LIMIT_DEFAULT);
RocksDBConfiguration rocksDBConfiguration =
Expand All @@ -501,7 +510,8 @@ public static DBStore loadDB(OzoneConfiguration configuration, File metaDir,
.setOpenReadOnly(readOnly)
.setPath(Paths.get(metaDir.getPath()))
.setMaxFSSnapshots(maxFSSnapshots)
.setEnableCompactionLog(true);
.setEnableCompactionLog(true)
.setCreateCheckpointDirs(createCheckpointDirs);
disableAutoCompaction.ifPresent(
dbStoreBuilder::disableDefaultCFAutoCompaction);
return addOMTablesAndCodecs(dbStoreBuilder).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ public BackgroundTaskResult call() throws Exception {

try (RDBStore rdbStore = (RDBStore) OmMetadataManagerImpl
.loadDB(ozoneManager.getConfiguration(), new File(snapshotDir),
dbName, true, Optional.of(Boolean.TRUE))) {
dbName, true, Optional.of(Boolean.TRUE), false)) {
RocksDatabase db = rdbStore.getDb();
db.deleteFilesNotMatchingPrefix(prefixPairs, filterFunction);
}
Expand Down