Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import java.util.Properties;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.xml.bind.JAXBContext;
Expand All @@ -53,6 +54,7 @@
import org.apache.hadoop.hdds.utils.LegacyHadoopConfigurationSource;
import org.apache.hadoop.ozone.OzoneConfigKeys;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.slf4j.Logger;

/**
* Configuration for ozone.
Expand Down Expand Up @@ -476,6 +478,36 @@ private Properties getCryptoProperties() {
}
}

/**
* Get a duration value from the configuration, and default to the given value if it's invalid.
* @param logger the logger to use
* @param key the key to get the value from
* @param defaultValue the default value to use if the key is not set
* @param unit the unit of the duration
* @return the duration value
*/
public long getOrFixDuration(Logger logger, String key, String defaultValue, TimeUnit unit) {
maybeFixInvalidDuration(logger, key, defaultValue, unit);
return getTimeDuration(key, defaultValue, unit);
}

private boolean maybeFixInvalidDuration(Logger logger, String key, String defaultValue, TimeUnit unit) {
boolean fixed = maybeFixInvalidDuration(key, defaultValue, unit);
if (fixed) {
logger.warn("{} must be greater than zero, defaulting to {}", key, defaultValue);
}
return fixed;
}

private boolean maybeFixInvalidDuration(String key, String defaultValue, TimeUnit unit) {
long duration = getTimeDuration(key, defaultValue, unit);
if (duration <= 0) {
set(key, defaultValue);
return true;
}
return false;
}

@Override
public Iterator<Map.Entry<String, String>> iterator() {
DelegatingProperties properties = (DelegatingProperties) getProps();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,30 +276,21 @@ public NodeDecommissionManager(OzoneConfiguration config, NodeManager nm, Contai
HddsConfigKeys.HDDS_DATANODE_USE_DN_HOSTNAME,
HddsConfigKeys.HDDS_DATANODE_USE_DN_HOSTNAME_DEFAULT);

long monitorInterval = config.getTimeDuration(
long monitorIntervalMs = config.getOrFixDuration(
LOG,
ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL,
ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL_DEFAULT,
TimeUnit.SECONDS);
if (monitorInterval <= 0) {
LOG.warn("{} must be greater than zero, defaulting to {}",
ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL,
ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL_DEFAULT);
config.set(ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL,
ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL_DEFAULT);
monitorInterval = config.getTimeDuration(
ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL,
ScmConfigKeys.OZONE_SCM_DATANODE_ADMIN_MONITOR_INTERVAL_DEFAULT,
TimeUnit.SECONDS);
}
TimeUnit.MILLISECONDS);

setMaintenanceConfigs(config.getInt("hdds.scm.replication.maintenance.replica.minimum", 2),
config.getInt("hdds.scm.replication.maintenance.remaining.redundancy", 1));

monitor = new DatanodeAdminMonitorImpl(config, eventQueue, nodeManager,
rm);
this.metrics = NodeDecommissionMetrics.create();
monitor.setMetrics(this.metrics);
executor.scheduleAtFixedRate(monitor, monitorInterval, monitorInterval,
TimeUnit.SECONDS);
executor.scheduleAtFixedRate(monitor, monitorIntervalMs, monitorIntervalMs,
TimeUnit.MILLISECONDS);
}

public Map<String, List<ContainerID>> getContainersPendingReplication(DatanodeDetails dn)
Expand Down