diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java index 31089bc1c0b6..ed8d145b666b 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java @@ -413,6 +413,10 @@ private ManagedDBOptions getDefaultDBOptions( dbOptions.setLogger(logger); } + // RocksDB log settings. + dbOptions.setMaxLogFileSize(rocksDBConfiguration.getMaxLogFileSize()); + dbOptions.setKeepLogFileNum(rocksDBConfiguration.getKeepLogFileNum()); + // Apply WAL settings. dbOptions.setWalTtlSeconds(rocksDBConfiguration.getWalTTL()); dbOptions.setWalSizeLimitMB(rocksDBConfiguration.getWalSizeLimit()); diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDBConfiguration.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDBConfiguration.java index 786494618864..dd197affe99a 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDBConfiguration.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDBConfiguration.java @@ -46,6 +46,20 @@ public class RocksDBConfiguration { description = "OM RocksDB logging level (INFO/DEBUG/WARN/ERROR/FATAL)") private String rocksdbLogLevel; + @Config(key = "rocksdb.max.log.file.size", + type = ConfigType.SIZE, + defaultValue = "0MB", + tags = {OM, SCM, DATANODE}, + description = "Maximum size of RocksDB application log file.") + private long rocksdbMaxLogFileSize = 0; + + @Config(key = "rocksdb.keep.log.file.num", + type = ConfigType.INT, + defaultValue = "1000", + tags = {OM, SCM, DATANODE}, + description = "Maximum number of RocksDB application log files.") + private int rocksdbKeepLogFileNum = 1000; + @Config(key = "rocksdb.writeoption.sync", type = ConfigType.BOOLEAN, defaultValue = "false", @@ -110,4 +124,20 @@ public void setWalSizeLimit(long limit) { public long getWalSizeLimit() { return walSizeLimit; } + + public void setMaxLogFileSize(long fileSize) { + rocksdbMaxLogFileSize = fileSize; + } + + public long getMaxLogFileSize() { + return rocksdbMaxLogFileSize; + } + + public void setKeepLogFileNum(int fileNum) { + rocksdbKeepLogFileNum = fileNum; + } + + public int getKeepLogFileNum() { + return rocksdbKeepLogFileNum; + } }