HDDS-1474. "ozone.scm.datanode.id" config should take path for a dir and not a file (#809)
This commit is contained in:
parent
1b48100a5e
commit
b832e174b0
@ -296,11 +296,10 @@ public final class ScmConfigKeys {
|
||||
|
||||
public static final int OZONE_SCM_DEFAULT_PORT =
|
||||
OZONE_SCM_DATANODE_PORT_DEFAULT;
|
||||
// File Name and path where datanode ID is to written to.
|
||||
// The path where datanode ID is to be written to.
|
||||
// if this value is not set then container startup will fail.
|
||||
public static final String OZONE_SCM_DATANODE_ID = "ozone.scm.datanode.id";
|
||||
|
||||
public static final String OZONE_SCM_DATANODE_ID_PATH_DEFAULT = "datanode.id";
|
||||
public static final String OZONE_SCM_DATANODE_ID_DIR =
|
||||
"ozone.scm.datanode.id.dir";
|
||||
|
||||
public static final String OZONE_SCM_DB_CACHE_SIZE_MB =
|
||||
"ozone.scm.db.cache.size.mb";
|
||||
|
@ -195,6 +195,11 @@ public static Versioning getVersioning(boolean versioning) {
|
||||
public static final int INVALID_PORT = -1;
|
||||
|
||||
|
||||
/**
|
||||
* Default SCM Datanode ID file name.
|
||||
*/
|
||||
public static final String OZONE_SCM_DATANODE_ID_FILE_DEFAULT = "datanode.id";
|
||||
|
||||
// The ServiceListJSONServlet context attribute where OzoneManager
|
||||
// instance gets stored.
|
||||
public static final String OM_CONTEXT_ATTRIBUTE = "ozone.om";
|
||||
|
@ -883,7 +883,7 @@
|
||||
</description>
|
||||
</property>
|
||||
<property>
|
||||
<name>ozone.scm.datanode.id</name>
|
||||
<name>ozone.scm.datanode.id.dir</name>
|
||||
<value/>
|
||||
<tag>OZONE, MANAGEMENT</tag>
|
||||
<description>The path that datanodes will use to store the datanode ID.
|
||||
|
@ -23,6 +23,7 @@
|
||||
import org.apache.hadoop.hdds.server.ServerUtils;
|
||||
import org.apache.hadoop.net.NetUtils;
|
||||
import org.apache.hadoop.ozone.OzoneConfigKeys;
|
||||
import org.apache.hadoop.ozone.OzoneConsts;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -380,8 +381,9 @@ public static String getDefaultRatisDirectory(Configuration conf) {
|
||||
* @return the path of datanode id as string
|
||||
*/
|
||||
public static String getDatanodeIdFilePath(Configuration conf) {
|
||||
String dataNodeIDPath = conf.get(ScmConfigKeys.OZONE_SCM_DATANODE_ID);
|
||||
if (dataNodeIDPath == null) {
|
||||
String dataNodeIDDirPath =
|
||||
conf.get(ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR);
|
||||
if (dataNodeIDDirPath == null) {
|
||||
File metaDirPath = ServerUtils.getOzoneMetaDirPath(conf);
|
||||
if (metaDirPath == null) {
|
||||
// this means meta data is not found, in theory should not happen at
|
||||
@ -389,9 +391,10 @@ public static String getDatanodeIdFilePath(Configuration conf) {
|
||||
throw new IllegalArgumentException("Unable to locate meta data" +
|
||||
"directory when getting datanode id path");
|
||||
}
|
||||
dataNodeIDPath = new File(metaDirPath,
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID_PATH_DEFAULT).toString();
|
||||
dataNodeIDDirPath = metaDirPath.toString();
|
||||
}
|
||||
return dataNodeIDPath;
|
||||
// Use default datanode id file name for file path
|
||||
return new File(dataNodeIDDirPath,
|
||||
OzoneConsts.OZONE_SCM_DATANODE_ID_FILE_DEFAULT).toString();
|
||||
}
|
||||
}
|
||||
|
@ -320,9 +320,10 @@ private DatanodeDetails initializeDatanodeDetails()
|
||||
throws IOException {
|
||||
String idFilePath = HddsServerUtil.getDatanodeIdFilePath(conf);
|
||||
if (idFilePath == null || idFilePath.isEmpty()) {
|
||||
LOG.error("A valid file path is needed for config setting {}",
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID);
|
||||
throw new IllegalArgumentException(ScmConfigKeys.OZONE_SCM_DATANODE_ID +
|
||||
LOG.error("A valid path is needed for config setting {}",
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR);
|
||||
throw new IllegalArgumentException(
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR +
|
||||
" must be defined. See" +
|
||||
" https://wiki.apache.org/hadoop/Ozone#Configuration" +
|
||||
" for details on configuring Ozone.");
|
||||
@ -350,9 +351,10 @@ private void persistDatanodeDetails(DatanodeDetails dnDetails)
|
||||
throws IOException {
|
||||
String idFilePath = HddsServerUtil.getDatanodeIdFilePath(conf);
|
||||
if (idFilePath == null || idFilePath.isEmpty()) {
|
||||
LOG.error("A valid file path is needed for config setting {}",
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID);
|
||||
throw new IllegalArgumentException(ScmConfigKeys.OZONE_SCM_DATANODE_ID +
|
||||
LOG.error("A valid path is needed for config setting {}",
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR);
|
||||
throw new IllegalArgumentException(
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR +
|
||||
" must be defined. See" +
|
||||
" https://wiki.apache.org/hadoop/Ozone#Configuration" +
|
||||
" for details on configuring Ozone.");
|
||||
|
@ -119,8 +119,8 @@ public DatanodeStateMachine.DatanodeStates call() throws Exception {
|
||||
private void persistContainerDatanodeDetails() {
|
||||
String dataNodeIDPath = HddsServerUtil.getDatanodeIdFilePath(conf);
|
||||
if (Strings.isNullOrEmpty(dataNodeIDPath)) {
|
||||
LOG.error("A valid file path is needed for config setting {}",
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID);
|
||||
LOG.error("A valid path is needed for config setting {}",
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR);
|
||||
this.context.setState(DatanodeStateMachine.DatanodeStates.SHUTDOWN);
|
||||
return;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
|
||||
import org.apache.hadoop.ipc.RPC;
|
||||
import org.apache.hadoop.ozone.OzoneConfigKeys;
|
||||
import org.apache.hadoop.ozone.OzoneConsts;
|
||||
import org.apache.hadoop.ozone.container.common.helpers.ContainerUtils;
|
||||
import org.apache.hadoop.ozone.container.common.statemachine
|
||||
.DatanodeStateMachine;
|
||||
@ -49,7 +50,6 @@
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -117,9 +117,8 @@ public void setUp() throws Exception {
|
||||
}
|
||||
conf.set(HddsConfigKeys.OZONE_METADATA_DIRS,
|
||||
new File(testRoot, "scm").getAbsolutePath());
|
||||
path = Paths.get(path.toString(),
|
||||
TestDatanodeStateMachine.class.getSimpleName() + ".id").toString();
|
||||
conf.set(ScmConfigKeys.OZONE_SCM_DATANODE_ID, path);
|
||||
path = new File(testRoot, "datanodeID").getAbsolutePath();
|
||||
conf.set(ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR, path);
|
||||
executorService = HadoopExecutors.newCachedThreadPool(
|
||||
new ThreadFactoryBuilder().setDaemon(true)
|
||||
.setNameFormat("Test Data Node State Machine Thread - %d").build());
|
||||
@ -212,7 +211,8 @@ public void testDatanodeStateContext() throws IOException,
|
||||
// There is no mini cluster started in this test,
|
||||
// create a ID file so that state machine could load a fake datanode ID.
|
||||
File idPath = new File(
|
||||
conf.get(ScmConfigKeys.OZONE_SCM_DATANODE_ID));
|
||||
conf.get(ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR),
|
||||
OzoneConsts.OZONE_SCM_DATANODE_ID_FILE_DEFAULT);
|
||||
idPath.delete();
|
||||
DatanodeDetails datanodeDetails = getNewDatanodeDetails();
|
||||
DatanodeDetails.Port port = DatanodeDetails.newPort(
|
||||
@ -334,7 +334,8 @@ public void testDatanodeStateContext() throws IOException,
|
||||
public void testDatanodeStateMachineWithIdWriteFail() throws Exception {
|
||||
|
||||
File idPath = new File(
|
||||
conf.get(ScmConfigKeys.OZONE_SCM_DATANODE_ID));
|
||||
conf.get(ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR),
|
||||
OzoneConsts.OZONE_SCM_DATANODE_ID_FILE_DEFAULT);
|
||||
idPath.delete();
|
||||
DatanodeDetails datanodeDetails = getNewDatanodeDetails();
|
||||
DatanodeDetails.Port port = DatanodeDetails.newPort(
|
||||
@ -396,10 +397,10 @@ public void testDatanodeStateMachineWithInvalidConfiguration()
|
||||
/** Port out of range **/
|
||||
confList.add(Maps.immutableEntry(
|
||||
ScmConfigKeys.OZONE_SCM_NAMES, "scm:123456"));
|
||||
// Invalid ozone.scm.datanode.id
|
||||
// Invalid ozone.scm.datanode.id.dir
|
||||
/** Empty **/
|
||||
confList.add(Maps.immutableEntry(
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID, ""));
|
||||
ScmConfigKeys.OZONE_SCM_DATANODE_ID_DIR, ""));
|
||||
|
||||
confList.forEach((entry) -> {
|
||||
Configuration perTestConf = new Configuration(conf);
|
||||
|
@ -105,14 +105,14 @@ Here is an example,
|
||||
</property>
|
||||
{{< /highlight >}}
|
||||
|
||||
* **ozone.scm.datanode.id** Data nodes generate a Unique ID called Datanode
|
||||
ID. This identity is written to the file specified by this path. *Data nodes
|
||||
* **ozone.scm.datanode.id.dir** Data nodes generate a Unique ID called Datanode
|
||||
ID. This identity is written to the file datanode.id in a directory specified by this path. *Data nodes
|
||||
will create this path if it doesn't exist already.*
|
||||
|
||||
Here is an example,
|
||||
{{< highlight xml >}}
|
||||
<property>
|
||||
<name>ozone.scm.datanode.id</name>
|
||||
<name>ozone.scm.datanode.id.dir</name>
|
||||
<value>/data/disk1/meta/node/datanode.id</value>
|
||||
</property>
|
||||
{{< /highlight >}}
|
||||
|
@ -18,7 +18,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=true
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.scm.client.address=scm
|
||||
|
@ -21,7 +21,7 @@ OZONE-SITE.XML_ozone.om.address.om3=om3
|
||||
OZONE-SITE.XML_ozone.om.ratis.enable=true
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=True
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.handler.type=distributed
|
||||
|
@ -18,7 +18,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=True
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.recon.db.dir=/data/metadata/recon
|
||||
|
@ -18,7 +18,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=True
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.handler.type=distributed
|
||||
|
@ -18,7 +18,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=True
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.handler.type=distributed
|
||||
|
@ -19,7 +19,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=True
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.handler.type=distributed
|
||||
|
@ -18,7 +18,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=true
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.scm.client.address=scm
|
||||
|
@ -17,7 +17,7 @@
|
||||
OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=true
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.scm.client.address=scm
|
||||
|
@ -19,7 +19,7 @@ CORE-SITE.XML_fs.defaultFS=hdfs://namenode:9000
|
||||
OZONE-SITE.XML_ozone.ksm.address=ksm
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=true
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
|
@ -18,7 +18,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=True
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.handler.type=distributed
|
||||
|
@ -20,7 +20,7 @@ OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.om.http-address=om:9874
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=True
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.handler.type=distributed
|
||||
|
@ -17,7 +17,7 @@
|
||||
OZONE-SITE.XML_ozone.om.address=om
|
||||
OZONE-SITE.XML_ozone.scm.names=scm
|
||||
OZONE-SITE.XML_ozone.enabled=true
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id=/data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir=/data
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address=scm
|
||||
OZONE-SITE.XML_ozone.metadata.dirs=/data/metadata
|
||||
OZONE-SITE.XML_ozone.scm.client.address=scm
|
||||
|
@ -18,8 +18,9 @@ kind: ConfigMap
|
||||
metadata:
|
||||
name: config
|
||||
data:
|
||||
|
||||
OZONE-SITE.XML_hdds.datanode.dir: "/data/storage"
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id: "/data/datanode.id"
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir: "/data"
|
||||
OZONE-SITE.XML_ozone.metadata.dirs: "/data/metadata"
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address: "scm-0.scm"
|
||||
OZONE-SITE.XML_ozone.om.address: "om-0.om"
|
||||
|
@ -20,7 +20,7 @@ metadata:
|
||||
name: config
|
||||
data:
|
||||
OZONE-SITE.XML_hdds.datanode.dir: /data/storage
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id: /data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data
|
||||
OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
|
||||
OZONE-SITE.XML_ozone.om.address: om-0.om
|
||||
|
@ -20,7 +20,7 @@ metadata:
|
||||
name: config
|
||||
data:
|
||||
OZONE-SITE.XML_hdds.datanode.dir: /data/storage
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id: /data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data
|
||||
OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
|
||||
OZONE-SITE.XML_ozone.om.address: om-0.om
|
||||
|
@ -20,7 +20,7 @@ metadata:
|
||||
name: config
|
||||
data:
|
||||
OZONE-SITE.XML_hdds.datanode.dir: /data/storage
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id: /data/datanode.id
|
||||
OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data
|
||||
OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
|
||||
OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
|
||||
OZONE-SITE.XML_ozone.om.address: om-0.om
|
||||
|
Loading…
Reference in New Issue
Block a user