You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by sa...@apache.org on 2020/12/08 12:28:43 UTC
[ozone] branch HDDS-2823 updated: HDDS-4551: Remove checkLeader in
PipelineManager. (#1658)
This is an automated email from the ASF dual-hosted git repository.
sammichen pushed a commit to branch HDDS-2823
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-2823 by this push:
new 34c393c HDDS-4551: Remove checkLeader in PipelineManager. (#1658)
34c393c is described below
commit 34c393c000adda9f8bc232c03ec32d2f64b318de
Author: GlenGeng <gl...@tencent.com>
AuthorDate: Tue Dec 8 20:28:28 2020 +0800
HDDS-4551: Remove checkLeader in PipelineManager. (#1658)
---
.../hadoop/hdds/scm/ha/SCMHAManagerImpl.java | 2 +-
.../hdds/scm/pipeline/PipelineManagerV2Impl.java | 33 ++----------
.../java/org/apache/hadoop/hdds/scm/TestUtils.java | 4 +-
.../hadoop/hdds/scm/block/TestBlockManager.java | 2 +-
.../container/TestCloseContainerEventHandler.java | 2 +-
.../scm/container/TestContainerManagerImpl.java | 2 +-
.../scm/container/TestSCMContainerManager.java | 2 +-
.../hadoop/hdds/scm/ha/MockSCMHAManager.java | 63 +++++++++++-----------
.../hdds/scm/node/TestContainerPlacement.java | 2 +-
.../hdds/scm/pipeline/TestPipelineManagerImpl.java | 61 +++++++++++++++------
.../safemode/TestHealthyPipelineSafeModeRule.java | 6 +--
.../TestOneReplicaPipelineSafeModeRule.java | 2 +-
.../hdds/scm/safemode/TestSCMSafeModeManager.java | 12 ++---
.../scm/server/TestSCMBlockProtocolServer.java | 2 +-
.../apache/hadoop/ozone/om/TestKeyManagerImpl.java | 2 +-
15 files changed, 99 insertions(+), 98 deletions(-)
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAManagerImpl.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAManagerImpl.java
index 5271ac6..966db43 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAManagerImpl.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAManagerImpl.java
@@ -48,7 +48,7 @@ public class SCMHAManagerImpl implements SCMHAManager {
private static final Logger LOG =
LoggerFactory.getLogger(SCMHAManagerImpl.class);
- private final SCMRatisServerImpl ratisServer;
+ private final SCMRatisServer ratisServer;
private final ConfigurationSource conf;
/**
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerV2Impl.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerV2Impl.java
index 48fbdbf..3f2f6e2 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerV2Impl.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerV2Impl.java
@@ -49,7 +49,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NavigableSet;
-import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -144,7 +143,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public Pipeline createPipeline(ReplicationType type,
ReplicationFactor factor) throws IOException {
- checkLeader();
if (!isPipelineCreationAllowed() && factor != ReplicationFactor.ONE) {
LOG.debug("Pipeline creation is not allowed until safe mode prechecks " +
"complete");
@@ -275,7 +273,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public void addContainerToPipeline(
PipelineID pipelineID, ContainerID containerID) throws IOException {
- checkLeader();
lock.writeLock().lock();
try {
stateManager.addContainerToPipeline(pipelineID, containerID);
@@ -287,7 +284,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public void removeContainerFromPipeline(
PipelineID pipelineID, ContainerID containerID) throws IOException {
- checkLeader();
lock.writeLock().lock();
try {
stateManager.removeContainerFromPipeline(pipelineID, containerID);
@@ -299,7 +295,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public NavigableSet<ContainerID> getContainersInPipeline(
PipelineID pipelineID) throws IOException {
- checkLeader();
lock.readLock().lock();
try {
return stateManager.getContainers(pipelineID);
@@ -310,13 +305,11 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public int getNumberOfContainers(PipelineID pipelineID) throws IOException {
- checkLeader();
return stateManager.getNumberOfContainers(pipelineID);
}
@Override
public void openPipeline(PipelineID pipelineId) throws IOException {
- checkLeader();
lock.writeLock().lock();
try {
Pipeline pipeline = stateManager.getPipeline(pipelineId);
@@ -342,7 +335,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
* @throws IOException
*/
protected void removePipeline(Pipeline pipeline) throws IOException {
- checkLeader();
pipelineFactory.close(pipeline.getType(), pipeline);
PipelineID pipelineID = pipeline.getId();
lock.writeLock().lock();
@@ -364,7 +356,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
*/
protected void closeContainersForPipeline(final PipelineID pipelineId)
throws IOException {
- checkLeader();
Set<ContainerID> containerIDs = stateManager.getContainers(pipelineId);
for (ContainerID containerID : containerIDs) {
eventPublisher.fireEvent(SCMEvents.CLOSE_CONTAINER, containerID);
@@ -380,7 +371,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public void closePipeline(Pipeline pipeline, boolean onTimeout)
throws IOException {
- checkLeader();
PipelineID pipelineID = pipeline.getId();
lock.writeLock().lock();
try {
@@ -410,8 +400,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public void scrubPipeline(ReplicationType type, ReplicationFactor factor)
throws IOException {
- checkLeader();
-
Instant currentTime = Instant.now();
Long pipelineScrubTimeoutInMills = conf.getTimeDuration(
ScmConfigKeys.OZONE_SCM_PIPELINE_ALLOCATED_TIMEOUT,
@@ -484,7 +472,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public void activatePipeline(PipelineID pipelineID)
throws IOException {
- checkLeader();
stateManager.updatePipelineState(pipelineID.getProtobuf(),
HddsProtos.PipelineState.PIPELINE_OPEN);
}
@@ -498,7 +485,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public void deactivatePipeline(PipelineID pipelineID)
throws IOException {
- checkLeader();
stateManager.updatePipelineState(pipelineID.getProtobuf(),
HddsProtos.PipelineState.PIPELINE_DORMANT);
}
@@ -513,7 +499,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public void waitPipelineReady(PipelineID pipelineID, long timeout)
throws IOException {
- checkLeader();
long st = Time.monotonicNow();
if (timeout == 0) {
timeout = pipelineWaitDefaultTimeout;
@@ -546,7 +531,6 @@ public final class PipelineManagerV2Impl implements PipelineManager {
@Override
public Map<String, Integer> getPipelineInfo() throws NotLeaderException {
- checkLeader();
final Map<String, Integer> pipelineInfo = new HashMap<>();
for (Pipeline.PipelineState state : Pipeline.PipelineState.values()) {
pipelineInfo.put(state.toString(), 0);
@@ -632,21 +616,10 @@ public final class PipelineManagerV2Impl implements PipelineManager {
public StateManager getStateManager() {
return stateManager;
}
-
- public void setScmhaManager(SCMHAManager scmhaManager) {
- this.scmhaManager = scmhaManager;
- }
- /**
- * return term of underlying RaftServer if role of SCM is leader.
- * @throws NotLeaderException when it's not leader.
- */
- private long checkLeader() throws NotLeaderException {
- Optional<Long> termOpt = scmhaManager.isLeader();
- if (!termOpt.isPresent()) {
- throw scmhaManager.triggerNotLeaderException();
- }
- return termOpt.get();
+ @VisibleForTesting
+ public SCMHAManager getScmhaManager() {
+ return scmhaManager;
}
private void setBackgroundPipelineCreator(
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestUtils.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestUtils.java
index e589526..4852fa5 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestUtils.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestUtils.java
@@ -475,7 +475,7 @@ public final class TestUtils {
public static StorageContainerManager getScmSimple(OzoneConfiguration conf)
throws IOException, AuthenticationException {
SCMConfigurator configurator = new SCMConfigurator();
- configurator.setSCMHAManager(MockSCMHAManager.getInstance());
+ configurator.setSCMHAManager(MockSCMHAManager.getInstance(true));
return StorageContainerManager.createSCM(conf, configurator);
}
@@ -492,7 +492,7 @@ public final class TestUtils {
public static StorageContainerManager getScm(OzoneConfiguration conf)
throws IOException, AuthenticationException {
SCMConfigurator configurator = new SCMConfigurator();
- configurator.setSCMHAManager(MockSCMHAManager.getInstance());
+ configurator.setSCMHAManager(MockSCMHAManager.getInstance(true));
return getScm(conf, configurator);
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestBlockManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestBlockManager.java
index 9eea79f..ebe29fb 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestBlockManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/block/TestBlockManager.java
@@ -112,7 +112,7 @@ public class TestBlockManager {
// Override the default Node Manager and SCMHAManager
// in SCM with the Mock one.
nodeManager = new MockNodeManager(true, 10);
- scmHAManager = MockSCMHAManager.getInstance();
+ scmHAManager = MockSCMHAManager.getInstance(true);
eventQueue = new EventQueue();
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java
index fbe4d42..ff6ea6d 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java
@@ -80,7 +80,7 @@ public class TestCloseContainerEventHandler {
pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
configuration,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
nodeManager,
scmMetadataStore.getPipelineTable(),
eventQueue);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java
index 6492e0a..322b0c3 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java
@@ -60,7 +60,7 @@ public class TestContainerManagerImpl {
pipelineManager.createPipeline(HddsProtos.ReplicationType.RATIS,
HddsProtos.ReplicationFactor.THREE);
containerManager = new ContainerManagerImpl(conf,
- MockSCMHAManager.getInstance(), pipelineManager,
+ MockSCMHAManager.getInstance(true), pipelineManager,
SCMDBDefinition.CONTAINERS.getTable(dbStore));
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestSCMContainerManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestSCMContainerManager.java
index a45d637..b45f9c1 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestSCMContainerManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestSCMContainerManager.java
@@ -95,7 +95,7 @@ public class TestSCMContainerManager {
SCMMetadataStore scmMetadataStore = new SCMMetadataStoreImpl(conf);
pipelineManager = PipelineManagerV2Impl.newPipelineManager(
conf,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
nodeManager,
scmMetadataStore.getPipelineTable(),
new EventQueue());
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java
index ab329a5..a5fd748 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java
@@ -47,28 +47,16 @@ public final class MockSCMHAManager implements SCMHAManager {
private final SCMRatisServer ratisServer;
private boolean isLeader;
- public static SCMHAManager getInstance() {
- return new MockSCMHAManager();
- }
-
- public static SCMHAManager getLeaderInstance() {
- MockSCMHAManager mockSCMHAManager = new MockSCMHAManager();
- mockSCMHAManager.setIsLeader(true);
- return mockSCMHAManager;
- }
-
- public static SCMHAManager getFollowerInstance() {
- MockSCMHAManager mockSCMHAManager = new MockSCMHAManager();
- mockSCMHAManager.setIsLeader(false);
- return mockSCMHAManager;
+ public static SCMHAManager getInstance(boolean isLeader) {
+ return new MockSCMHAManager(isLeader);
}
/**
* Creates MockSCMHAManager instance.
*/
- private MockSCMHAManager() {
+ private MockSCMHAManager(boolean isLeader) {
this.ratisServer = new MockRatisServer();
- this.isLeader = true;
+ this.isLeader = isLeader;
}
@Override
@@ -127,7 +115,7 @@ public final class MockSCMHAManager implements SCMHAManager {
null, new ArrayList<>());
}
- private static class MockRatisServer implements SCMRatisServer {
+ private class MockRatisServer implements SCMRatisServer {
private Map<RequestType, Object> handlers =
new EnumMap<>(RequestType.class);
@@ -148,19 +136,32 @@ public final class MockSCMHAManager implements SCMHAManager {
final RaftGroupMemberId raftId = RaftGroupMemberId.valueOf(
RaftPeerId.valueOf("peer"), RaftGroupId.randomId());
RaftClientReply reply;
- try {
- final Message result = process(request);
- reply = RaftClientReply.newBuilder()
- .setClientId(ClientId.randomId())
- .setServerId(raftId)
- .setGroupId(RaftGroupId.emptyGroupId())
- .setCallId(1L)
- .setSuccess(true)
- .setMessage(result)
- .setException(null)
- .setLogIndex(1L)
- .build();
- } catch (Exception ex) {
+ if (isLeader().isPresent()) {
+ try {
+ final Message result = process(request);
+ reply = RaftClientReply.newBuilder()
+ .setClientId(ClientId.randomId())
+ .setServerId(raftId)
+ .setGroupId(RaftGroupId.emptyGroupId())
+ .setCallId(1L)
+ .setSuccess(true)
+ .setMessage(result)
+ .setException(null)
+ .setLogIndex(1L)
+ .build();
+ } catch (Exception ex) {
+ reply = RaftClientReply.newBuilder()
+ .setClientId(ClientId.randomId())
+ .setServerId(raftId)
+ .setGroupId(RaftGroupId.emptyGroupId())
+ .setCallId(1L)
+ .setSuccess(false)
+ .setMessage(Message.EMPTY)
+ .setException(new StateMachineException(raftId, ex))
+ .setLogIndex(1L)
+ .build();
+ }
+ } else {
reply = RaftClientReply.newBuilder()
.setClientId(ClientId.randomId())
.setServerId(raftId)
@@ -168,7 +169,7 @@ public final class MockSCMHAManager implements SCMHAManager {
.setCallId(1L)
.setSuccess(false)
.setMessage(Message.EMPTY)
- .setException(new StateMachineException(raftId, ex))
+ .setException(triggerNotLeaderException())
.setLogIndex(1L)
.build();
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestContainerPlacement.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestContainerPlacement.java
index 7fea0c5..26de4fb 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestContainerPlacement.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestContainerPlacement.java
@@ -118,7 +118,7 @@ public class TestContainerPlacement {
PipelineManager pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
config,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
scmNodeManager,
scmMetadataStore.getPipelineTable(),
eventQueue);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipelineManagerImpl.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipelineManagerImpl.java
index 51fff06..1bff1e7 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipelineManagerImpl.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipelineManagerImpl.java
@@ -28,7 +28,6 @@ import org.apache.hadoop.hdds.scm.container.ContainerID;
import org.apache.hadoop.hdds.scm.container.MockNodeManager;
import org.apache.hadoop.hdds.scm.exceptions.SCMException;
import org.apache.hadoop.hdds.scm.ha.MockSCMHAManager;
-import org.apache.hadoop.hdds.scm.ha.SCMHAManager;
import org.apache.hadoop.hdds.scm.metadata.SCMDBDefinition;
import org.apache.hadoop.hdds.scm.safemode.SCMSafeModeManager;
import org.apache.hadoop.hdds.scm.server.SCMDatanodeHeartbeatDispatcher;
@@ -91,15 +90,10 @@ public class TestPipelineManagerImpl {
FileUtil.fullyDelete(testDir);
}
- private PipelineManagerV2Impl createPipelineManager(boolean leader)
+ private PipelineManagerV2Impl createPipelineManager(boolean isLeader)
throws IOException {
- SCMHAManager scmhaManager;
- if (leader) {
- scmhaManager = MockSCMHAManager.getLeaderInstance();
- } else {
- scmhaManager = MockSCMHAManager.getFollowerInstance();
- }
- return PipelineManagerV2Impl.newPipelineManager(conf, scmhaManager,
+ return PipelineManagerV2Impl.newPipelineManager(conf,
+ MockSCMHAManager.getInstance(isLeader),
new MockNodeManager(true, 20),
SCMDBDefinition.PIPELINES.getTable(dbStore),
new EventQueue());
@@ -195,7 +189,8 @@ public class TestPipelineManagerImpl {
Assert.assertTrue(pipelineManager.containsPipeline(pipeline.getId()));
Assert.assertEquals(ALLOCATED, pipeline.getPipelineState());
// Change to follower
- pipelineManager.setScmhaManager(MockSCMHAManager.getFollowerInstance());
+ assert pipelineManager.getScmhaManager() instanceof MockSCMHAManager;
+ ((MockSCMHAManager) pipelineManager.getScmhaManager()).setIsLeader(false);
try {
pipelineManager.openPipeline(pipeline.getId());
} catch (NotLeaderException ex) {
@@ -216,7 +211,8 @@ public class TestPipelineManagerImpl {
Assert.assertTrue(pipelineManager.containsPipeline(pipeline.getId()));
Assert.assertEquals(ALLOCATED, pipeline.getPipelineState());
// Change to follower
- pipelineManager.setScmhaManager(MockSCMHAManager.getFollowerInstance());
+ assert pipelineManager.getScmhaManager() instanceof MockSCMHAManager;
+ ((MockSCMHAManager) pipelineManager.getScmhaManager()).setIsLeader(false);
try {
pipelineManager.activatePipeline(pipeline.getId());
} catch (NotLeaderException ex) {
@@ -237,7 +233,8 @@ public class TestPipelineManagerImpl {
Assert.assertTrue(pipelineManager.containsPipeline(pipeline.getId()));
Assert.assertEquals(ALLOCATED, pipeline.getPipelineState());
// Change to follower
- pipelineManager.setScmhaManager(MockSCMHAManager.getFollowerInstance());
+ assert pipelineManager.getScmhaManager() instanceof MockSCMHAManager;
+ ((MockSCMHAManager) pipelineManager.getScmhaManager()).setIsLeader(false);
try {
pipelineManager.deactivatePipeline(pipeline.getId());
} catch (NotLeaderException ex) {
@@ -301,7 +298,8 @@ public class TestPipelineManagerImpl {
Assert.assertTrue(pipelineManager.containsPipeline(pipeline.getId()));
Assert.assertEquals(ALLOCATED, pipeline.getPipelineState());
// Change to follower
- pipelineManager.setScmhaManager(MockSCMHAManager.getFollowerInstance());
+ assert pipelineManager.getScmhaManager() instanceof MockSCMHAManager;
+ ((MockSCMHAManager) pipelineManager.getScmhaManager()).setIsLeader(false);
try {
pipelineManager.closePipeline(pipeline, false);
} catch (NotLeaderException ex) {
@@ -494,12 +492,41 @@ public class TestPipelineManagerImpl {
pipelineManager.close();
}
- @Test (expected = NotLeaderException.class)
+ @Test
public void testScrubPipelineShouldFailOnFollower() throws Exception {
- PipelineManagerV2Impl pipelineManager = createPipelineManager(false);
+ // No timeout for pipeline scrubber.
+ conf.setTimeDuration(
+ OZONE_SCM_PIPELINE_ALLOCATED_TIMEOUT, -1,
+ TimeUnit.MILLISECONDS);
+
+ PipelineManagerV2Impl pipelineManager = createPipelineManager(true);
pipelineManager.allowPipelineCreation();
- pipelineManager.scrubPipeline(HddsProtos.ReplicationType.RATIS,
- HddsProtos.ReplicationFactor.THREE);
+ Pipeline pipeline = pipelineManager
+ .createPipeline(HddsProtos.ReplicationType.RATIS,
+ HddsProtos.ReplicationFactor.THREE);
+ // At this point, pipeline is not at OPEN stage.
+ Assert.assertEquals(Pipeline.PipelineState.ALLOCATED,
+ pipeline.getPipelineState());
+
+ // pipeline should be seen in pipelineManager as ALLOCATED.
+ Assert.assertTrue(pipelineManager
+ .getPipelines(HddsProtos.ReplicationType.RATIS,
+ HddsProtos.ReplicationFactor.THREE,
+ Pipeline.PipelineState.ALLOCATED).contains(pipeline));
+
+ // Change to follower
+ assert pipelineManager.getScmhaManager() instanceof MockSCMHAManager;
+ ((MockSCMHAManager) pipelineManager.getScmhaManager()).setIsLeader(false);
+
+ try {
+ pipelineManager.scrubPipeline(HddsProtos.ReplicationType.RATIS,
+ HddsProtos.ReplicationFactor.THREE);
+ } catch (NotLeaderException ex) {
+ pipelineManager.close();
+ return;
+ }
+ // Should not reach here.
+ Assert.fail();
}
@Test
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestHealthyPipelineSafeModeRule.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestHealthyPipelineSafeModeRule.java
index 8426084..ee1f06c 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestHealthyPipelineSafeModeRule.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestHealthyPipelineSafeModeRule.java
@@ -74,7 +74,7 @@ public class TestHealthyPipelineSafeModeRule {
PipelineManagerV2Impl pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
config,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
nodeManager,
scmMetadataStore.getPipelineTable(),
eventQueue);
@@ -123,7 +123,7 @@ public class TestHealthyPipelineSafeModeRule {
PipelineManagerV2Impl pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
config,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
nodeManager,
scmMetadataStore.getPipelineTable(),
eventQueue);
@@ -217,7 +217,7 @@ public class TestHealthyPipelineSafeModeRule {
PipelineManagerV2Impl pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
config,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
nodeManager,
scmMetadataStore.getPipelineTable(),
eventQueue);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestOneReplicaPipelineSafeModeRule.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestOneReplicaPipelineSafeModeRule.java
index 6860da2..5e41289 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestOneReplicaPipelineSafeModeRule.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestOneReplicaPipelineSafeModeRule.java
@@ -84,7 +84,7 @@ public class TestOneReplicaPipelineSafeModeRule {
pipelineManager = PipelineManagerV2Impl.newPipelineManager(
ozoneConfiguration,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
mockNodeManager,
scmMetadataStore.getPipelineTable(),
eventQueue);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java
index f081bac..7bbae4f 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java
@@ -303,7 +303,7 @@ public class TestSCMSafeModeManager {
PipelineManager pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
conf,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
mockNodeManager,
scmMetadataStore.getPipelineTable(),
queue);
@@ -326,7 +326,7 @@ public class TestSCMSafeModeManager {
PipelineManager pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
conf,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
mockNodeManager,
scmMetadataStore.getPipelineTable(),
queue);
@@ -348,7 +348,7 @@ public class TestSCMSafeModeManager {
PipelineManager pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
conf,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
mockNodeManager,
scmMetadataStore.getPipelineTable(),
queue);
@@ -377,7 +377,7 @@ public class TestSCMSafeModeManager {
PipelineManagerV2Impl pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
conf,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
mockNodeManager,
scmMetadataStore.getPipelineTable(),
queue);
@@ -627,7 +627,7 @@ public class TestSCMSafeModeManager {
PipelineManagerV2Impl pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
config,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
nodeManager,
scmMetadataStore.getPipelineTable(),
queue);
@@ -690,7 +690,7 @@ public class TestSCMSafeModeManager {
PipelineManagerV2Impl pipelineManager =
PipelineManagerV2Impl.newPipelineManager(
config,
- MockSCMHAManager.getInstance(),
+ MockSCMHAManager.getInstance(true),
nodeManager,
scmMetadataStore.getPipelineTable(),
queue);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMBlockProtocolServer.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMBlockProtocolServer.java
index f4553ab..a87dde9 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMBlockProtocolServer.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMBlockProtocolServer.java
@@ -59,7 +59,7 @@ public class TestSCMBlockProtocolServer {
File dir = GenericTestUtils.getRandomizedTestDir();
config.set(HddsConfigKeys.OZONE_METADATA_DIRS, dir.toString());
SCMConfigurator configurator = new SCMConfigurator();
- configurator.setSCMHAManager(MockSCMHAManager.getInstance());
+ configurator.setSCMHAManager(MockSCMHAManager.getInstance(true));
scm = TestUtils.getScm(config, configurator);
scm.start();
scm.exitSafeMode();
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java
index 0330b43..8c8ca72 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java
@@ -171,7 +171,7 @@ public class TestKeyManagerImpl {
SCMConfigurator configurator = new SCMConfigurator();
configurator.setScmNodeManager(nodeManager);
configurator.setNetworkTopology(clusterMap);
- configurator.setSCMHAManager(MockSCMHAManager.getInstance());
+ configurator.setSCMHAManager(MockSCMHAManager.getInstance(true));
scm = TestUtils.getScm(conf, configurator);
scm.start();
scm.exitSafeMode();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org