Author: brandonli
Date: Fri May 30 23:53:00 2014
New Revision: 1598782
URL: http://svn.apache.org/r1598782
Log:
HDFS-6056. Clean up NFS config settings. Contributed by Brandon Li
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/NfsExports.java
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/IdUserGroup.java
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/TestNfsExports.java
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/nfs3/TestIdUserGroup.java
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
Fri May 30 23:53:00 2014
@@ -423,7 +423,9 @@ public class Configuration implements It
new DeprecationDelta("fs.default.name",
CommonConfigurationKeys.FS_DEFAULT_NAME_KEY),
new DeprecationDelta("dfs.umaskmode",
- CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY)
+ CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY),
+ new DeprecationDelta("dfs.nfs.exports.allowed.hosts",
+ CommonConfigurationKeys.NFS_EXPORTS_ALLOWED_HOSTS_KEY)
};
/**
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/CommonConfigurationKeys.java
Fri May 30 23:53:00 2014
@@ -265,4 +265,10 @@ public class CommonConfigurationKeys ext
public static final boolean RPC_METRICS_QUANTILE_ENABLE_DEFAULT = false;
public static final String RPC_METRICS_PERCENTILES_INTERVALS_KEY =
"rpc.metrics.percentiles.intervals";
+
+ /** Allowed hosts for nfs exports */
+ public static final String NFS_EXPORTS_ALLOWED_HOSTS_SEPARATOR = ";";
+ public static final String NFS_EXPORTS_ALLOWED_HOSTS_KEY =
"nfs.exports.allowed.hosts";
+ public static final String NFS_EXPORTS_ALLOWED_HOSTS_KEY_DEFAULT = "* rw";
+
}
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml
Fri May 30 23:53:00 2014
@@ -1309,18 +1309,17 @@
</property>
<property>
- <name>nfs3.server.port</name>
- <value>2049</value>
+ <name>nfs.exports.allowed.hosts</name>
+ <value>* rw</value>
<description>
- Specify the port number used by Hadoop NFS.
- </description>
-</property>
-
-<property>
- <name>nfs3.mountd.port</name>
- <value>4242</value>
- <description>
- Specify the port number used by Hadoop mount daemon.
+ By default, the export can be mounted by any client. The value string
+ contains machine name and access privilege, separated by whitespace
+ characters. The machine name format can be a single host, a Java regular
+ expression, or an IPv4 address. The access privilege uses rw or ro to
+ specify read/write or read-only access of the machines to exports. If the
+ access privilege is not provided, the default is read-only. Entries are
separated by ";".
+ For example: "192.168.0.0/22 rw ; host.*\.example\.com ; host1.test.org
ro;".
+ Only the NFS gateway needs to restart after this property is updated.
</description>
</property>
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/NfsExports.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/NfsExports.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/NfsExports.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/NfsExports.java
Fri May 30 23:53:00 2014
@@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFac
import org.apache.commons.net.util.SubnetUtils;
import org.apache.commons.net.util.SubnetUtils.SubnetInfo;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.CommonConfigurationKeys;
import org.apache.hadoop.nfs.nfs3.Nfs3Constant;
import org.apache.hadoop.util.LightWeightCache;
import org.apache.hadoop.util.LightWeightGSet;
@@ -44,13 +45,14 @@ public class NfsExports {
public static synchronized NfsExports getInstance(Configuration conf) {
if (exports == null) {
- String matchHosts = conf.get(Nfs3Constant.EXPORTS_ALLOWED_HOSTS_KEY,
- Nfs3Constant.EXPORTS_ALLOWED_HOSTS_KEY_DEFAULT);
- int cacheSize = conf.getInt(Nfs3Constant.EXPORTS_CACHE_SIZE_KEY,
- Nfs3Constant.EXPORTS_CACHE_SIZE_DEFAULT);
+ String matchHosts = conf.get(
+ CommonConfigurationKeys.NFS_EXPORTS_ALLOWED_HOSTS_KEY,
+ CommonConfigurationKeys.NFS_EXPORTS_ALLOWED_HOSTS_KEY_DEFAULT);
+ int cacheSize = conf.getInt(Nfs3Constant.NFS_EXPORTS_CACHE_SIZE_KEY,
+ Nfs3Constant.NFS_EXPORTS_CACHE_SIZE_DEFAULT);
long expirationPeriodNano = conf.getLong(
- Nfs3Constant.EXPORTS_CACHE_EXPIRYTIME_MILLIS_KEY,
- Nfs3Constant.EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT) * 1000 * 1000;
+ Nfs3Constant.NFS_EXPORTS_CACHE_EXPIRYTIME_MILLIS_KEY,
+ Nfs3Constant.NFS_EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT) * 1000 *
1000;
exports = new NfsExports(cacheSize, expirationPeriodNano, matchHosts);
}
return exports;
@@ -140,7 +142,7 @@ public class NfsExports {
accessCache = new LightWeightCache<AccessCacheEntry, AccessCacheEntry>(
cacheSize, cacheSize, expirationPeriodNano, 0);
String[] matchStrings = matchHosts.split(
- Nfs3Constant.EXPORTS_ALLOWED_HOSTS_SEPARATOR);
+ CommonConfigurationKeys.NFS_EXPORTS_ALLOWED_HOSTS_SEPARATOR);
mMatches = new ArrayList<Match>(matchStrings.length);
for(String mStr : matchStrings) {
if (LOG.isDebugEnabled()) {
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/IdUserGroup.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/IdUserGroup.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/IdUserGroup.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/IdUserGroup.java
Fri May 30 23:53:00 2014
@@ -50,9 +50,6 @@ public class IdUserGroup {
static final String MAC_GET_ALL_USERS_CMD = "dscl . -list /Users UniqueID";
static final String MAC_GET_ALL_GROUPS_CMD = "dscl . -list /Groups
PrimaryGroupID";
- // Used for finding the configured static mapping file.
- static final String NFS_STATIC_MAPPING_FILE_KEY =
"dfs.nfs.static.mapping.file";
- private static final String NFS_STATIC_MAPPING_FILE_DEFAULT = "/etc/nfs.map";
private final File staticMappingFile;
// Used for parsing the static mapping file.
@@ -61,11 +58,7 @@ public class IdUserGroup {
private static final Pattern MAPPING_LINE =
Pattern.compile("^(uid|gid)\\s+(\\d+)\\s+(\\d+)\\s*(#.*)?$");
- // Do update every 15 minutes by default
- final static long TIMEOUT_DEFAULT = 15 * 60 * 1000; // ms
- final static long TIMEOUT_MIN = 1 * 60 * 1000; // ms
final private long timeout;
- final static String NFS_USERUPDATE_MILLY = "hadoop.nfs.userupdate.milly";
// Maps for id to name map. Guarded by this object monitor lock
private BiMap<Integer, String> uidNameMap = HashBiMap.create();
@@ -73,25 +66,21 @@ public class IdUserGroup {
private long lastUpdateTime = 0; // Last time maps were updated
- public IdUserGroup() throws IOException {
- timeout = TIMEOUT_DEFAULT;
- staticMappingFile = new File(NFS_STATIC_MAPPING_FILE_DEFAULT);
- updateMaps();
- }
-
public IdUserGroup(Configuration conf) throws IOException {
- long updateTime = conf.getLong(NFS_USERUPDATE_MILLY, TIMEOUT_DEFAULT);
+ long updateTime = conf.getLong(
+ Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_KEY,
+ Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_DEFAULT);
// Minimal interval is 1 minute
- if (updateTime < TIMEOUT_MIN) {
+ if (updateTime < Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_MIN) {
LOG.info("User configured user account update time is less"
+ " than 1 minute. Use 1 minute instead.");
- timeout = TIMEOUT_MIN;
+ timeout = Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_MIN;
} else {
timeout = updateTime;
}
- String staticFilePath = conf.get(NFS_STATIC_MAPPING_FILE_KEY,
- NFS_STATIC_MAPPING_FILE_DEFAULT);
+ String staticFilePath = conf.get(Nfs3Constant.NFS_STATIC_MAPPING_FILE_KEY,
+ Nfs3Constant.NFS_STATIC_MAPPING_FILE_DEFAULT);
staticMappingFile = new File(staticFilePath);
updateMaps();
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
Fri May 30 23:53:00 2014
@@ -33,7 +33,6 @@ import org.apache.hadoop.util.ShutdownHo
public abstract class Nfs3Base {
public static final Log LOG = LogFactory.getLog(Nfs3Base.class);
private final RpcProgram rpcProgram;
- private final int nfsPort;
private int nfsBoundPort; // Will set after server starts
public RpcProgram getRpcProgram() {
@@ -42,9 +41,7 @@ public abstract class Nfs3Base {
protected Nfs3Base(RpcProgram rpcProgram, Configuration conf) {
this.rpcProgram = rpcProgram;
- this.nfsPort = conf.getInt(Nfs3Constant.NFS3_SERVER_PORT,
- Nfs3Constant.NFS3_SERVER_PORT_DEFAULT);
- LOG.info("NFS server port set to: " + nfsPort);
+ LOG.info("NFS server port set to: " + rpcProgram.getPort());
}
public void start(boolean register) {
@@ -58,7 +55,7 @@ public abstract class Nfs3Base {
}
private void startTCPServer() {
- SimpleTcpServer tcpServer = new SimpleTcpServer(nfsPort,
+ SimpleTcpServer tcpServer = new SimpleTcpServer(rpcProgram.getPort(),
rpcProgram, 0);
rpcProgram.startDaemons();
tcpServer.run();
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
Fri May 30 23:53:00 2014
@@ -25,10 +25,6 @@ public class Nfs3Constant {
// The local rpcbind/portmapper port.
public final static int SUN_RPCBIND = 111;
- // The IP port number for NFS.
- public final static String NFS3_SERVER_PORT = "nfs3.server.port";
- public final static int NFS3_SERVER_PORT_DEFAULT = 2049;
-
// The RPC program number for NFS.
public final static int PROGRAM = 100003;
@@ -191,36 +187,22 @@ public class Nfs3Constant {
public final static int CREATE_GUARDED = 1;
public final static int CREATE_EXCLUSIVE = 2;
- public static final String EXPORTS_ALLOWED_HOSTS_SEPARATOR = ";";
- /** Allowed hosts for nfs exports */
- public static final String EXPORTS_ALLOWED_HOSTS_KEY =
"dfs.nfs.exports.allowed.hosts";
- public static final String EXPORTS_ALLOWED_HOSTS_KEY_DEFAULT = "* rw";
/** Size for nfs exports cache */
- public static final String EXPORTS_CACHE_SIZE_KEY =
"dfs.nfs.exports.cache.size";
- public static final int EXPORTS_CACHE_SIZE_DEFAULT = 512;
+ public static final String NFS_EXPORTS_CACHE_SIZE_KEY =
"nfs.exports.cache.size";
+ public static final int NFS_EXPORTS_CACHE_SIZE_DEFAULT = 512;
/** Expiration time for nfs exports cache entry */
- public static final String EXPORTS_CACHE_EXPIRYTIME_MILLIS_KEY =
"dfs.nfs.exports.cache.expirytime.millis";
- public static final long EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT = 15 * 60 *
1000; // 15 min
+ public static final String NFS_EXPORTS_CACHE_EXPIRYTIME_MILLIS_KEY =
"nfs.exports.cache.expirytime.millis";
+ public static final long NFS_EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT = 15 *
60 * 1000; // 15 min
- public static final String FILE_DUMP_DIR_KEY = "dfs.nfs3.dump.dir";
- public static final String FILE_DUMP_DIR_DEFAULT = "/tmp/.hdfs-nfs";
- public static final String ENABLE_FILE_DUMP_KEY = "dfs.nfs3.enableDump";
- public static final boolean ENABLE_FILE_DUMP_DEFAULT = true;
- public static final String MAX_READ_TRANSFER_SIZE_KEY = "dfs.nfs.rtmax";
- public static final int MAX_READ_TRANSFER_SIZE_DEFAULT = 1024 * 1024;
- public static final String MAX_WRITE_TRANSFER_SIZE_KEY = "dfs.nfs.wtmax";
- public static final int MAX_WRITE_TRANSFER_SIZE_DEFAULT = 1024 * 1024;
- public static final String MAX_READDIR_TRANSFER_SIZE_KEY = "dfs.nfs.dtmax";
- public static final int MAX_READDIR_TRANSFER_SIZE_DEFAULT = 64 * 1024;
- public static final String MAX_OPEN_FILES = "dfs.nfs3.max.open.files";
- public static final int MAX_OPEN_FILES_DEFAULT = 256;
- public static final String OUTPUT_STREAM_TIMEOUT = "dfs.nfs3.stream.timeout";
- public static final long OUTPUT_STREAM_TIMEOUT_DEFAULT = 10 * 60 * 1000; //
10 minutes
- public static final long OUTPUT_STREAM_TIMEOUT_MIN_DEFAULT = 10 * 1000; //10
seconds
+ /** Do user/group update every 15 minutes by default, minimum 1 minute */
+ public final static String NFS_USERGROUP_UPDATE_MILLIS_KEY =
"nfs.usergroup.update.millis";
+ public final static long NFS_USERGROUP_UPDATE_MILLIS_DEFAULT = 15 * 60 *
1000; // ms
+ final static long NFS_USERGROUP_UPDATE_MILLIS_MIN = 1 * 60 * 1000; // ms
public final static String UNKNOWN_USER = "nobody";
public final static String UNKNOWN_GROUP = "nobody";
- public final static String EXPORT_POINT = "dfs.nfs3.export.point";
- public final static String EXPORT_POINT_DEFAULT = "/";
+ // Used for finding the configured static mapping file.
+ public static final String NFS_STATIC_MAPPING_FILE_KEY =
"nfs.static.mapping.file";
+ public static final String NFS_STATIC_MAPPING_FILE_DEFAULT = "/etc/nfs.map";
}
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/TestNfsExports.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/TestNfsExports.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/TestNfsExports.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/TestNfsExports.java
Fri May 30 23:53:00 2014
@@ -17,11 +17,8 @@
*/
package org.apache.hadoop.nfs;
-import org.junit.Assert;
-
-import org.apache.hadoop.nfs.AccessPrivilege;
-import org.apache.hadoop.nfs.NfsExports;
import org.apache.hadoop.nfs.nfs3.Nfs3Constant;
+import org.junit.Assert;
import org.junit.Test;
public class TestNfsExports {
@@ -32,9 +29,9 @@ public class TestNfsExports {
private final String hostname2 = "a.b.org";
private static final long ExpirationPeriod =
- Nfs3Constant.EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT * 1000 * 1000;
+ Nfs3Constant.NFS_EXPORTS_CACHE_EXPIRYTIME_MILLIS_DEFAULT * 1000 * 1000;
- private static final int CacheSize = Nfs3Constant.EXPORTS_CACHE_SIZE_DEFAULT;
+ private static final int CacheSize =
Nfs3Constant.NFS_EXPORTS_CACHE_SIZE_DEFAULT;
private static final long NanosPerMillis = 1000000;
@Test
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/nfs3/TestIdUserGroup.java
URL:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/nfs3/TestIdUserGroup.java?rev=1598782&r1=1598781&r2=1598782&view=diff
==============================================================================
---
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/nfs3/TestIdUserGroup.java
(original)
+++
hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/nfs/nfs3/TestIdUserGroup.java
Fri May 30 23:53:00 2014
@@ -199,17 +199,19 @@ public class TestIdUserGroup {
@Test
public void testUserUpdateSetting() throws IOException {
- IdUserGroup iug = new IdUserGroup();
- assertEquals(iug.getTimeout(), IdUserGroup.TIMEOUT_DEFAULT);
+ IdUserGroup iug = new IdUserGroup(new Configuration());
+ assertEquals(iug.getTimeout(),
+ Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_DEFAULT);
Configuration conf = new Configuration();
- conf.setLong(IdUserGroup.NFS_USERUPDATE_MILLY, 0);
+ conf.setLong(Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_KEY, 0);
iug = new IdUserGroup(conf);
- assertEquals(iug.getTimeout(), IdUserGroup.TIMEOUT_MIN);
+ assertEquals(iug.getTimeout(),
Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_MIN);
- conf.setLong(IdUserGroup.NFS_USERUPDATE_MILLY,
- IdUserGroup.TIMEOUT_DEFAULT * 2);
+ conf.setLong(Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_KEY,
+ Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_DEFAULT * 2);
iug = new IdUserGroup(conf);
- assertEquals(iug.getTimeout(), IdUserGroup.TIMEOUT_DEFAULT * 2);
+ assertEquals(iug.getTimeout(),
+ Nfs3Constant.NFS_USERGROUP_UPDATE_MILLIS_DEFAULT * 2);
}
}