HDFS-17285. RBF: Add a safe mode check period configuration (#6347) Contributed by LiuGuH.
Reviewed-by: Inigo Goiri <inigoiri@apache.org> Reviewed-by: Ayush Saxena <ayushsaxena@apache.org> Signed-off-by: Shilun Fan <slfan1989@apache.org>
This commit is contained in:
parent
5dd1977800
commit
b4fed58c6a
@ -279,6 +279,10 @@ public class RBFConfigKeys extends CommonConfigurationKeysPublic {
|
||||
FEDERATION_ROUTER_PREFIX + "safemode.expiration";
|
||||
public static final long DFS_ROUTER_SAFEMODE_EXPIRATION_DEFAULT =
|
||||
3 * DFS_ROUTER_CACHE_TIME_TO_LIVE_MS_DEFAULT;
|
||||
public static final String DFS_ROUTER_SAFEMODE_CHECKPERIOD_MS =
|
||||
FEDERATION_ROUTER_PREFIX + "safemode.checkperiod";
|
||||
public static final long DFS_ROUTER_SAFEMODE_CHECKPERIOD_MS_DEFAULT =
|
||||
TimeUnit.SECONDS.toMillis(5);
|
||||
|
||||
// HDFS Router-based federation mount table entries
|
||||
/** Maximum number of cache entries to have. */
|
||||
|
@ -133,8 +133,8 @@ protected void serviceInit(Configuration conf) throws Exception {
|
||||
|
||||
// Use same interval as cache update service
|
||||
this.setIntervalMs(conf.getTimeDuration(
|
||||
RBFConfigKeys.DFS_ROUTER_CACHE_TIME_TO_LIVE_MS,
|
||||
RBFConfigKeys.DFS_ROUTER_CACHE_TIME_TO_LIVE_MS_DEFAULT,
|
||||
RBFConfigKeys.DFS_ROUTER_SAFEMODE_CHECKPERIOD_MS,
|
||||
RBFConfigKeys.DFS_ROUTER_SAFEMODE_CHECKPERIOD_MS_DEFAULT,
|
||||
TimeUnit.MILLISECONDS));
|
||||
|
||||
this.startupInterval = conf.getTimeDuration(
|
||||
|
@ -530,6 +530,17 @@
|
||||
</description>
|
||||
</property>
|
||||
|
||||
<property>
|
||||
<name>dfs.federation.router.safemode.checkperiod</name>
|
||||
<value>5s</value>
|
||||
<description>
|
||||
How often the Router should check safe mode. This
|
||||
setting supports multiple time unit suffixes as described in
|
||||
dfs.heartbeat.interval. If no suffix is specified then milliseconds is
|
||||
assumed.
|
||||
</description>
|
||||
</property>
|
||||
|
||||
<property>
|
||||
<name>dfs.federation.router.monitor.namenode</name>
|
||||
<value></value>
|
||||
|
@ -18,6 +18,7 @@
|
||||
package org.apache.hadoop.hdfs.server.federation.router;
|
||||
|
||||
import static org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys.DFS_ROUTER_CACHE_TIME_TO_LIVE_MS;
|
||||
import static org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys.DFS_ROUTER_SAFEMODE_CHECKPERIOD_MS;
|
||||
import static org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys.DFS_ROUTER_SAFEMODE_EXPIRATION;
|
||||
import static org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys.DFS_ROUTER_SAFEMODE_EXTENSION;
|
||||
import static org.apache.hadoop.hdfs.server.federation.store.FederationStateStoreTestUtils.deleteStateStore;
|
||||
@ -70,6 +71,9 @@ public static void create() throws IOException {
|
||||
// 200 ms cache refresh
|
||||
conf.setTimeDuration(DFS_ROUTER_CACHE_TIME_TO_LIVE_MS,
|
||||
200, TimeUnit.MILLISECONDS);
|
||||
// 100 ms safemode checkperiod
|
||||
conf.setTimeDuration(DFS_ROUTER_SAFEMODE_CHECKPERIOD_MS,
|
||||
100, TimeUnit.MILLISECONDS);
|
||||
// 1 sec post cache update before entering safemode (2 intervals)
|
||||
conf.setTimeDuration(DFS_ROUTER_SAFEMODE_EXPIRATION,
|
||||
TimeUnit.SECONDS.toMillis(1), TimeUnit.MILLISECONDS);
|
||||
@ -133,7 +137,7 @@ public void testRouterExitSafemode()
|
||||
long interval =
|
||||
conf.getTimeDuration(DFS_ROUTER_SAFEMODE_EXTENSION,
|
||||
TimeUnit.SECONDS.toMillis(2), TimeUnit.MILLISECONDS) +
|
||||
conf.getTimeDuration(DFS_ROUTER_CACHE_TIME_TO_LIVE_MS,
|
||||
conf.getTimeDuration(DFS_ROUTER_SAFEMODE_CHECKPERIOD_MS,
|
||||
TimeUnit.SECONDS.toMillis(1), TimeUnit.MILLISECONDS);
|
||||
Thread.sleep(interval);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user