Skip to content

Commit ca1b10f

Browse files
committed
HDDS-14874. Make Ratis append-entries.compose.enabled false by default.
1 parent b49226d commit ca1b10f

8 files changed

Lines changed: 61 additions & 0 deletions

File tree

hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,11 @@ public final class ScmConfigKeys {
578578
"ozone.scm.ha.ratis.log.purge.gap";
579579
public static final int OZONE_SCM_HA_RAFT_LOG_PURGE_GAP_DEFAULT = 1000000;
580580

581+
public static final String OZONE_SCM_HA_RAFT_LOG_APPEND_ENTRIES_COMPOSE_ENABLED =
582+
"ozone.scm.ha.ratis.log.append-entries.compose.enabled";
583+
public static final boolean
584+
OZONE_SCM_HA_RAFT_LOG_APPEND_ENTRIES_COMPOSE_ENABLED_DEFAULT = false;
585+
581586
/**
582587
* the config will transfer value to ratis config
583588
* raft.server.snapshot.auto.trigger.threshold.

hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,10 @@ public RaftProperties newRaftProperties() {
352352
OzoneConfigKeys.HDDS_CONTAINER_RATIS_LOG_PURGE_GAP_DEFAULT);
353353
RaftServerConfigKeys.Log.setPurgeGap(properties, purgeGap);
354354

355+
properties.setBoolean(
356+
"raft.server.log.append-entries.compose.enabled",
357+
ratisServerConfig.isAppendEntriesComposeEnabled());
358+
355359
//Set the number of Snapshots Retained.
356360
RatisServerConfiguration ratisServerConfiguration =
357361
conf.getObject(RatisServerConfiguration.class);

hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/TestDatanodeConfiguration.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import static org.apache.hadoop.ozone.container.common.statemachine.DatanodeConfiguration.PERIODIC_DISK_CHECK_INTERVAL_MINUTES_KEY;
3535
import static org.assertj.core.api.Assertions.assertThat;
3636
import static org.junit.jupiter.api.Assertions.assertEquals;
37+
import static org.junit.jupiter.api.Assertions.assertFalse;
3738

3839
import java.util.concurrent.TimeUnit;
3940
import org.apache.hadoop.hdds.conf.DatanodeRatisServerConfig;
@@ -267,11 +268,16 @@ public void testConf() throws Exception {
267268
DatanodeRatisServerConfig.class);
268269
assertEquals(0, ratisConf.getLogAppenderWaitTimeMin(),
269270
"getLogAppenderWaitTimeMin");
271+
assertFalse(ratisConf.isAppendEntriesComposeEnabled(),
272+
"isAppendEntriesComposeEnabled");
270273

271274
assertWaitTimeMin(TimeDuration.ZERO, conf);
275+
assertAppendEntriesComposeEnabled(false, conf);
272276
ratisConf.setLogAppenderWaitTimeMin(1);
277+
ratisConf.setAppendEntriesComposeEnabled(true);
273278
conf.setFromObject(ratisConf);
274279
assertWaitTimeMin(TimeDuration.ONE_MILLISECOND, conf);
280+
assertAppendEntriesComposeEnabled(true, conf);
275281
}
276282

277283
static void assertWaitTimeMin(TimeDuration expected,
@@ -283,4 +289,13 @@ static void assertWaitTimeMin(TimeDuration expected,
283289
assertEquals(expected, t,
284290
RaftServerConfigKeys.Log.Appender.WAIT_TIME_MIN_KEY);
285291
}
292+
293+
static void assertAppendEntriesComposeEnabled(boolean expected,
294+
OzoneConfiguration conf) throws Exception {
295+
final DatanodeDetails dn = MockPipeline.createPipeline(1).getFirstNode();
296+
final RaftProperties p = ContainerTestUtils.newXceiverServerRatis(dn, conf)
297+
.newRaftProperties();
298+
final String key = "raft.server.log.append-entries.compose.enabled";
299+
assertEquals(expected, p.getBoolean(key, null), key);
300+
}
286301
}

hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/conf/DatanodeRatisServerConfig.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,15 @@ public class DatanodeRatisServerConfig {
132132
)
133133
private long logAppenderWaitTimeMin;
134134

135+
@Config(key = "hdds.ratis.raft.server.log.append-entries.compose.enabled",
136+
defaultValue = "false",
137+
type = ConfigType.BOOLEAN,
138+
tags = {OZONE, DATANODE, RATIS, PERFORMANCE},
139+
description = "Enable/disable composing appendEntries requests on the " +
140+
"Ratis server log appender path."
141+
)
142+
private boolean appendEntriesComposeEnabled;
143+
135144
public long getRequestTimeOut() {
136145
return requestTimeOut;
137146
}
@@ -211,4 +220,13 @@ public long getLogAppenderWaitTimeMin() {
211220
public void setLogAppenderWaitTimeMin(long logAppenderWaitTimeMin) {
212221
this.logAppenderWaitTimeMin = logAppenderWaitTimeMin;
213222
}
223+
224+
public boolean isAppendEntriesComposeEnabled() {
225+
return appendEntriesComposeEnabled;
226+
}
227+
228+
public void setAppendEntriesComposeEnabled(
229+
boolean appendEntriesComposeEnabled) {
230+
this.appendEntriesComposeEnabled = appendEntriesComposeEnabled;
231+
}
214232
}

hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/RatisUtil.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public static RaftProperties newRaftProperties(
7878
final String prefix = RaftServerConfigKeys.PREFIX + ".";
7979
conf.getPropsMatchPrefixAndTrimPrefix(OZONE_SCM_HA_PREFIX + "." + prefix)
8080
.forEach((k, v) -> properties.set(prefix + k, v));
81+
8182
return properties;
8283
}
8384

@@ -196,6 +197,12 @@ private static int setRaftLogProperties(final RaftProperties properties,
196197
ozoneConf.getInt(ScmConfigKeys.OZONE_SCM_HA_RAFT_LOG_PURGE_GAP,
197198
ScmConfigKeys.OZONE_SCM_HA_RAFT_LOG_PURGE_GAP_DEFAULT));
198199
Log.setSegmentCacheNumMax(properties, 2);
200+
properties.setBoolean(
201+
"raft.server.log.append-entries.compose.enabled",
202+
ozoneConf.getBoolean(
203+
ScmConfigKeys.OZONE_SCM_HA_RAFT_LOG_APPEND_ENTRIES_COMPOSE_ENABLED,
204+
ScmConfigKeys.
205+
OZONE_SCM_HA_RAFT_LOG_APPEND_ENTRIES_COMPOSE_ENABLED_DEFAULT));
199206

200207
return logAppenderQueueByteLimit;
201208
}

hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,10 @@ public final class OMConfigKeys {
206206
public static final String OZONE_OM_RATIS_LOG_PURGE_GAP =
207207
"ozone.om.ratis.log.purge.gap";
208208
public static final int OZONE_OM_RATIS_LOG_PURGE_GAP_DEFAULT = 1000000;
209+
public static final String OZONE_OM_RATIS_LOG_APPEND_ENTRIES_COMPOSE_ENABLED =
210+
"ozone.om.ratis.log.append-entries.compose.enabled";
211+
public static final boolean
212+
OZONE_OM_RATIS_LOG_APPEND_ENTRIES_COMPOSE_ENABLED_DEFAULT = false;
209213
public static final String OZONE_OM_RATIS_LOG_PURGE_UPTO_SNAPSHOT_INDEX
210214
= "ozone.om.ratis.log.purge.upto.snapshot.index";
211215
public static final boolean

hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ private void addPropertiesNotInXml() {
127127
OMConfigKeys.OZONE_THREAD_NUMBER_KEY_DELETION,
128128
ScmConfigKeys.OZONE_SCM_PIPELINE_PLACEMENT_IMPL_KEY,
129129
ScmConfigKeys.OZONE_SCM_HA_PREFIX,
130+
ScmConfigKeys.OZONE_SCM_HA_RAFT_LOG_APPEND_ENTRIES_COMPOSE_ENABLED,
131+
OMConfigKeys.OZONE_OM_RATIS_LOG_APPEND_ENTRIES_COMPOSE_ENABLED,
130132
S3GatewayConfigKeys.OZONE_S3G_FSO_DIRECTORY_CREATION_ENABLED,
131133
DatanodeConfiguration.HDDS_DATANODE_VOLUME_MIN_FREE_SPACE_PERCENT,
132134
OzoneConfigKeys.HDDS_SCM_CLIENT_RPC_TIME_OUT,

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,12 @@ private static void setRaftLogProperties(RaftProperties properties,
817817
OMConfigKeys.OZONE_OM_RATIS_LOG_PURGE_GAP,
818818
OMConfigKeys.OZONE_OM_RATIS_LOG_PURGE_GAP_DEFAULT));
819819

820+
properties.setBoolean(
821+
"raft.server.log.append-entries.compose.enabled",
822+
conf.getBoolean(
823+
OMConfigKeys.OZONE_OM_RATIS_LOG_APPEND_ENTRIES_COMPOSE_ENABLED,
824+
OMConfigKeys.OZONE_OM_RATIS_LOG_APPEND_ENTRIES_COMPOSE_ENABLED_DEFAULT));
825+
820826
// This avoids writing commit metadata to Raft Log, which can be used to recover the
821827
// commit index even if a majority of servers are dead. We don't need this for OzoneManager,
822828
// disabling this will avoid the additional disk IO.

0 commit comments

Comments
 (0)