diff --git a/hadoop-hdds/common/src/main/resources/ozone-default.xml b/hadoop-hdds/common/src/main/resources/ozone-default.xml index f093bf7303b..5541d910776 100644 --- a/hadoop-hdds/common/src/main/resources/ozone-default.xml +++ b/hadoop-hdds/common/src/main/resources/ozone-default.xml @@ -1864,7 +1864,23 @@ its log segments after taking snapshot. - + + ozone.om.ratis.log.purge.upto.snapshot.index + true + OZONE, OM, RATIS + + Enable/disable Raft server to purge its log up to the snapshot index + after taking snapshot. + + + + ozone.om.ratis.log.purge.preservation.log.num + 0 + OZONE, OM, RATIS + + The number of latest Raft logs to not be purged after taking snapshot. + + ozone.om.ratis.server.request.timeout 3s diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java index 9ba5485da27..5716f062377 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java @@ -151,6 +151,15 @@ private OMConfigKeys() { public static final String OZONE_OM_RATIS_LOG_PURGE_GAP = "ozone.om.ratis.log.purge.gap"; public static final int OZONE_OM_RATIS_LOG_PURGE_GAP_DEFAULT = 1000000; + public static final String OZONE_OM_RATIS_LOG_PURGE_UPTO_SNAPSHOT_INDEX + = "ozone.om.ratis.log.purge.upto.snapshot.index"; + public static final boolean + OZONE_OM_RATIS_LOG_PURGE_UPTO_SNAPSHOT_INDEX_DEFAULT = true; + public static final String + OZONE_OM_RATIS_LOG_PURGE_PRESERVATION_LOG_NUM + = "ozone.om.ratis.log.purge.preservation.log.num"; + public static final long + OZONE_OM_RATIS_LOG_PURGE_PRESERVATION_LOG_NUM_DEFAULT = 0L; public static final String OZONE_OM_RATIS_SNAPSHOT_AUTO_TRIGGER_THRESHOLD_KEY = "ozone.om.ratis.snapshot.auto.trigger.threshold"; diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java index 9ab6ecdad27..aa4c9b1db83 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java @@ -602,7 +602,21 @@ private RaftProperties newRaftProperties(ConfigurationSource conf) { StorageUnit.BYTES); RaftServerConfigKeys.Log.setSegmentSizeMax(properties, SizeInBytes.valueOf(raftSegmentSize)); - RaftServerConfigKeys.Log.setPurgeUptoSnapshotIndex(properties, true); + + // Set to enable RAFT to purge logs up to Snapshot Index + RaftServerConfigKeys.Log.setPurgeUptoSnapshotIndex(properties, + conf.getBoolean( + OMConfigKeys.OZONE_OM_RATIS_LOG_PURGE_UPTO_SNAPSHOT_INDEX, + OMConfigKeys.OZONE_OM_RATIS_LOG_PURGE_UPTO_SNAPSHOT_INDEX_DEFAULT + ) + ); + // Set number of last RAFT logs to not be purged + RaftServerConfigKeys.Log.setPurgePreservationLogNum(properties, + conf.getLong( + OMConfigKeys.OZONE_OM_RATIS_LOG_PURGE_PRESERVATION_LOG_NUM, + OMConfigKeys.OZONE_OM_RATIS_LOG_PURGE_PRESERVATION_LOG_NUM_DEFAULT + ) + ); // Set RAFT segment pre-allocated size final long raftSegmentPreallocatedSize = (long) conf.getStorageSize(