You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ha...@apache.org on 2019/04/16 20:51:45 UTC
[hadoop] branch trunk updated: HDDS-1376. Datanode exits while
executing client command when scmId is null (#724)
This is an automated email from the ASF dual-hosted git repository.
hanishakoneru pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new e543c3b HDDS-1376. Datanode exits while executing client command when scmId is null (#724)
e543c3b is described below
commit e543c3b31aa607e62b7bd718d9cb7f17e6b03072
Author: Hanisha Koneru <ko...@gmail.com>
AuthorDate: Tue Apr 16 13:51:39 2019 -0700
HDDS-1376. Datanode exits while executing client command when scmId is null (#724)
---
.../common/statemachine/DatanodeStateMachine.java | 1 -
.../common/states/endpoint/VersionEndpointTask.java | 3 ++-
.../hadoop/ozone/container/ozoneimpl/OzoneContainer.java | 3 ++-
.../ozone/container/common/TestDatanodeStateMachine.java | 15 +++++++++++++++
.../commandhandler/TestCloseContainerCommandHandler.java | 11 +++++------
.../ozone/container/ozoneimpl/TestOzoneContainer.java | 5 ++---
.../container/ozoneimpl/TestOzoneContainerWithTLS.java | 5 ++---
.../container/ozoneimpl/TestSecureOzoneContainer.java | 5 ++---
8 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
index ff39103..69782ef 100644
--- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
+++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
@@ -166,7 +166,6 @@ public class DatanodeStateMachine implements Closeable {
private void start() throws IOException {
long now = 0;
- container.start();
reportManager.init();
initCommandHandlerThread(conf);
diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java
index e4c0eb1..04eaa05 100644
--- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java
+++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/VersionEndpointTask.java
@@ -106,7 +106,8 @@ public class VersionEndpointTask implements
volumeSet.writeUnlock();
}
- ozoneContainer.getDispatcher().setScmId(scmId);
+ // Start the container services after getting the version information
+ ozoneContainer.start(scmId);
EndpointStateMachine.EndPointStates nextState =
rpcEndPoint.getState().getNextState();
diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java
index 87266a9..ed7c88c 100644
--- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java
+++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OzoneContainer.java
@@ -180,12 +180,13 @@ public class OzoneContainer {
*
* @throws IOException
*/
- public void start() throws IOException {
+ public void start(String scmId) throws IOException {
LOG.info("Attempting to start container services.");
startContainerScrub();
writeChannel.start();
readChannel.start();
hddsDispatcher.init();
+ hddsDispatcher.setScmId(scmId);
}
/**
diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java
index 29160ee..47438dc 100644
--- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java
+++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java
@@ -258,6 +258,21 @@ public class TestDatanodeStateMachine {
task.execute(executorService);
newState = task.await(10, TimeUnit.SECONDS);
+
+ // Wait for GetVersion call (called by task.execute) to finish. After
+ // Earlier task.execute called into GetVersion. Wait for the execution
+ // to finish and the endPointState to move to REGISTER state.
+ GenericTestUtils.waitFor(() -> {
+ for (EndpointStateMachine endpoint :
+ stateMachine.getConnectionManager().getValues()) {
+ if (endpoint.getState() !=
+ EndpointStateMachine.EndPointStates.REGISTER) {
+ return false;
+ }
+ }
+ return true;
+ }, 1000, 50000);
+
// If we are in running state, we should be in running.
Assert.assertEquals(DatanodeStateMachine.DatanodeStates.RUNNING,
newState);
diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestCloseContainerCommandHandler.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestCloseContainerCommandHandler.java
index 7962cb2..6356d0b 100644
--- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestCloseContainerCommandHandler.java
+++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestCloseContainerCommandHandler.java
@@ -68,7 +68,7 @@ public class TestCloseContainerCommandHandler {
final DatanodeDetails datanodeDetails = randomDatanodeDetails();
final OzoneContainer ozoneContainer =
getOzoneContainer(conf, datanodeDetails);
- ozoneContainer.start();
+ ozoneContainer.start(UUID.randomUUID().toString());
try {
final Container container =
createContainer(conf, datanodeDetails, ozoneContainer);
@@ -105,7 +105,7 @@ public class TestCloseContainerCommandHandler {
final DatanodeDetails datanodeDetails = randomDatanodeDetails();
final OzoneContainer ozoneContainer =
getOzoneContainer(conf, datanodeDetails);
- ozoneContainer.start();
+ ozoneContainer.start(UUID.randomUUID().toString());
try {
final Container container =
createContainer(conf, datanodeDetails, ozoneContainer);
@@ -140,7 +140,7 @@ public class TestCloseContainerCommandHandler {
final DatanodeDetails datanodeDetails = randomDatanodeDetails();
final OzoneContainer ozoneContainer =
getOzoneContainer(conf, datanodeDetails);
- ozoneContainer.start();
+ ozoneContainer.start(UUID.randomUUID().toString());
try {
final Container container =
createContainer(conf, datanodeDetails, ozoneContainer);
@@ -188,7 +188,7 @@ public class TestCloseContainerCommandHandler {
final DatanodeDetails datanodeDetails = randomDatanodeDetails();
final OzoneContainer ozoneContainer =
getOzoneContainer(conf, datanodeDetails);
- ozoneContainer.start();
+ ozoneContainer.start(UUID.randomUUID().toString());
try {
final Container container =
createContainer(conf, datanodeDetails, ozoneContainer);
@@ -224,7 +224,7 @@ public class TestCloseContainerCommandHandler {
final DatanodeDetails datanodeDetails = randomDatanodeDetails();
final OzoneContainer ozoneContainer = getOzoneContainer(
conf, datanodeDetails);
- ozoneContainer.start();
+ ozoneContainer.start(UUID.randomUUID().toString());
try {
final Container container = createContainer(
conf, datanodeDetails, ozoneContainer);
@@ -277,7 +277,6 @@ public class TestCloseContainerCommandHandler {
Mockito.when(context.getParent()).thenReturn(datanodeStateMachine);
final OzoneContainer ozoneContainer = new OzoneContainer(
datanodeDetails, conf, context, null);
- ozoneContainer.getDispatcher().setScmId(UUID.randomUUID().toString());
return ozoneContainer;
}
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java
index eeb6c53..fbdfbed 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java
@@ -82,9 +82,8 @@ public class TestOzoneContainer {
Mockito.when(dsm.getDatanodeDetails()).thenReturn(datanodeDetails);
Mockito.when(context.getParent()).thenReturn(dsm);
container = new OzoneContainer(datanodeDetails, conf, context, null);
- //Setting scmId, as we start manually ozone container.
- container.getDispatcher().setScmId(UUID.randomUUID().toString());
- container.start();
+ //Set scmId and manually start ozone container.
+ container.start(UUID.randomUUID().toString());
XceiverClientGrpc client = new XceiverClientGrpc(pipeline, conf);
client.connect();
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainerWithTLS.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainerWithTLS.java
index a6e8dd0..c2937a8 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainerWithTLS.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainerWithTLS.java
@@ -155,9 +155,8 @@ public class TestOzoneContainerWithTLS {
OzoneConfigKeys.DFS_CONTAINER_IPC_RANDOM_PORT, false);
container = new OzoneContainer(dn, conf, getContext(dn), null);
- //Setting scmId, as we start manually ozone container.
- container.getDispatcher().setScmId(UUID.randomUUID().toString());
- container.start();
+ //Set scmId and manually start ozone container.
+ container.start(UUID.randomUUID().toString());
XceiverClientGrpc client = new XceiverClientGrpc(pipeline, conf);
client.connect();
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestSecureOzoneContainer.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestSecureOzoneContainer.java
index 07836ea..c086f31 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestSecureOzoneContainer.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestSecureOzoneContainer.java
@@ -143,9 +143,8 @@ public class TestSecureOzoneContainer {
DatanodeDetails dn = TestUtils.randomDatanodeDetails();
container = new OzoneContainer(dn, conf, getContext(dn), caClient);
- //Setting scmId, as we start manually ozone container.
- container.getDispatcher().setScmId(UUID.randomUUID().toString());
- container.start();
+ //Set scmId and manually start ozone container.
+ container.start(UUID.randomUUID().toString());
UserGroupInformation ugi = UserGroupInformation.createUserForTesting(
"user1", new String[] {"usergroup"});
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org