HDFS-12796. SCM should not start if Cluster Version file does not exist. Contributed by Shashikant Banerjee.

This commit is contained in:
Nanda kumar 2017-11-10 16:22:41 +05:30 committed by Owen O'Malley
parent 740a06cdd7
commit 446e84357d
2 changed files with 16 additions and 3 deletions

View File

@ -226,9 +226,8 @@ public class StorageContainerManager extends ServiceRuntimeInfoImpl
StorageContainerManager.initMetrics();
scmStorage = new SCMStorage(conf);
String clusterId = scmStorage.getClusterID();
if (clusterId == null) {
throw new SCMException("clusterId not found",
if (scmStorage.getState() != StorageState.INITIALIZED) {
throw new SCMException("SCM not initialized.",
ResultCodes.SCM_NOT_INITIALIZED);
}
scmNodeManager = new SCMNodeManager(conf, scmStorage.getClusterID());

View File

@ -34,6 +34,7 @@ import org.apache.hadoop.ozone.scm.StorageContainerManager;
import org.apache.hadoop.ozone.scm.StorageContainerManager.StartupOption;
import org.apache.hadoop.ozone.scm.block.DeletedBlockLog;
import org.apache.hadoop.ozone.scm.block.SCMBlockDeletingService;
import org.apache.hadoop.ozone.scm.exceptions.SCMException;
import org.apache.hadoop.ozone.scm.node.NodeManager;
import org.apache.hadoop.scm.XceiverClientManager;
import org.apache.hadoop.scm.container.common.helpers.Pipeline;
@ -396,4 +397,17 @@ public class TestStorageContainerManager {
Assert.assertEquals(OzoneConsts.NodeType.SCM, scmStore.getNodeType());
Assert.assertNotEquals("testClusterId", scmStore.getClusterID());
}
@Test
public void testSCMInitializationFailure() throws IOException {
OzoneConfiguration conf = new OzoneConfiguration();
final String path =
GenericTestUtils.getTempPath(UUID.randomUUID().toString());
Path scmPath = Paths.get(path, "scm-meta");
conf.set(OzoneConfigKeys.OZONE_METADATA_DIRS, scmPath.toString());
conf.setBoolean(OzoneConfigKeys.OZONE_ENABLED, true);
exception.expect(SCMException.class);
exception.expectMessage("SCM not initialized.");
StorageContainerManager.createSCM(null, conf);
}
}