You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by bh...@apache.org on 2021/12/06 19:52:12 UTC
[ozone] branch master updated: HDDS-5973. Changed sequence of steps during pipeline close. (#2847)
This is an automated email from the ASF dual-hosted git repository.
bharat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 9c4bb72 HDDS-5973. Changed sequence of steps during pipeline close. (#2847)
9c4bb72 is described below
commit 9c4bb72b750d66beaf64001b731e564775235312
Author: Aswin Shakil Balasubramanian <as...@gmail.com>
AuthorDate: Mon Dec 6 11:51:56 2021 -0800
HDDS-5973. Changed sequence of steps during pipeline close. (#2847)
---
.../scm/container/CloseContainerEventHandler.java | 10 ++--
.../hdds/scm/container/ReplicationManager.java | 10 ++--
.../org/apache/hadoop/hdds/scm/ha/SCMContext.java | 23 ++++++---
.../hdds/scm/pipeline/PipelineManagerImpl.java | 25 +++++++--
.../hadoop/hdds/scm/node/TestDeadNodeHandler.java | 6 +++
.../hadoop/hdds/scm/node/TestSCMNodeManager.java | 8 +++
.../hdds/scm/pipeline/TestPipelineManagerImpl.java | 59 ++++++++++++++++++++--
.../scm/ReconStorageContainerManagerFacade.java | 5 +-
.../ozone/recon/scm/TestReconPipelineManager.java | 5 ++
9 files changed, 128 insertions(+), 23 deletions(-)
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/CloseContainerEventHandler.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/CloseContainerEventHandler.java
index f6f39cf..de8a12b 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/CloseContainerEventHandler.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/CloseContainerEventHandler.java
@@ -102,10 +102,12 @@ public class CloseContainerEventHandler implements EventHandler<ContainerID> {
}
private String getContainerToken(ContainerID containerID) {
- StorageContainerManager scm = scmContext.getScm();
- return scm != null
- ? scm.getContainerTokenGenerator().generateEncodedToken(containerID)
- : ""; // unit test
+ if (scmContext.getScm() instanceof StorageContainerManager) {
+ StorageContainerManager scm =
+ (StorageContainerManager) scmContext.getScm();
+ return scm.getContainerTokenGenerator().generateEncodedToken(containerID);
+ }
+ return ""; //Recon and unit test
}
/**
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
index 00409b7..47842c0 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ReplicationManager.java
@@ -1506,10 +1506,12 @@ public class ReplicationManager implements SCMService {
}
private String getContainerToken(ContainerID containerID) {
- StorageContainerManager scm = scmContext.getScm();
- return scm != null
- ? scm.getContainerTokenGenerator().generateEncodedToken(containerID)
- : ""; // unit test
+ if (scmContext.getScm() instanceof StorageContainerManager) {
+ StorageContainerManager scm =
+ (StorageContainerManager) scmContext.getScm();
+ return scm.getContainerTokenGenerator().generateEncodedToken(containerID);
+ }
+ return ""; // unit test
}
/**
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMContext.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMContext.java
index 9652345..bc71db6 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMContext.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMContext.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hdds.scm.ha;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import org.apache.hadoop.hdds.scm.safemode.SCMSafeModeManager.SafeModeStatus;
+import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager;
import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
import org.apache.ratis.protocol.exceptions.NotLeaderException;
import org.slf4j.Logger;
@@ -66,11 +67,12 @@ public final class SCMContext {
*/
private SafeModeStatus safeModeStatus;
- private final StorageContainerManager scm;
+ private final OzoneStorageContainerManager scm;
private final ReadWriteLock lock = new ReentrantReadWriteLock();
private SCMContext(boolean isLeader, long term,
- final SafeModeStatus safeModeStatus, final StorageContainerManager scm) {
+ final SafeModeStatus safeModeStatus,
+ final OzoneStorageContainerManager scm) {
this.isLeader = isLeader;
this.term = term;
this.safeModeStatus = safeModeStatus;
@@ -186,9 +188,13 @@ public final class SCMContext {
if (!isLeader) {
LOG.warn("getTerm is invoked when not leader.");
- throw scm.getScmHAManager()
- .getRatisServer()
- .triggerNotLeaderException();
+ if (scm instanceof StorageContainerManager) {
+ StorageContainerManager storageContainerManager =
+ (StorageContainerManager) scm;
+ throw storageContainerManager.getScmHAManager()
+ .getRatisServer()
+ .triggerNotLeaderException();
+ }
}
return term;
} finally {
@@ -230,7 +236,7 @@ public final class SCMContext {
/**
* @return StorageContainerManager
*/
- public StorageContainerManager getScm() {
+ public OzoneStorageContainerManager getScm() {
return scm;
}
@@ -246,7 +252,7 @@ public final class SCMContext {
private long term = INVALID_TERM;
private boolean isInSafeMode = false;
private boolean isPreCheckComplete = true;
- private StorageContainerManager scm = null;
+ private OzoneStorageContainerManager scm = null;
public Builder setLeader(boolean leader) {
this.isLeader = leader;
@@ -268,7 +274,8 @@ public final class SCMContext {
return this;
}
- public Builder setSCM(StorageContainerManager storageContainerManager) {
+ public Builder setSCM(
+ OzoneStorageContainerManager storageContainerManager) {
this.scm = storageContainerManager;
return this;
}
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerImpl.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerImpl.java
index bd59797..9b9e206 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerImpl.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineManagerImpl.java
@@ -30,6 +30,7 @@ import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationType;
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
import org.apache.hadoop.hdds.scm.container.ContainerID;
+import org.apache.hadoop.hdds.scm.container.ContainerManager;
import org.apache.hadoop.hdds.scm.events.SCMEvents;
import org.apache.hadoop.hdds.scm.ha.SCMContext;
import org.apache.hadoop.hdds.scm.ha.SCMHAManager;
@@ -39,6 +40,7 @@ import org.apache.hadoop.hdds.server.events.EventPublisher;
import org.apache.hadoop.hdds.utils.db.Table;
import org.apache.hadoop.metrics2.util.MBeans;
import org.apache.hadoop.ozone.ClientVersions;
+import org.apache.hadoop.ozone.common.statemachine.InvalidStateTransitionException;
import org.apache.hadoop.util.Time;
import org.apache.ratis.protocol.exceptions.NotLeaderException;
import org.slf4j.Logger;
@@ -79,7 +81,7 @@ public class PipelineManagerImpl implements PipelineManager {
private final SCMPipelineMetrics metrics;
private final long pipelineWaitDefaultTimeout;
private final SCMHAManager scmhaManager;
- private final SCMContext scmContext;
+ private SCMContext scmContext;
private final NodeManager nodeManager;
// This allows for freezing/resuming the new pipeline creation while the
// SCM is already out of SafeMode.
@@ -326,8 +328,20 @@ public class PipelineManagerImpl implements PipelineManager {
protected void closeContainersForPipeline(final PipelineID pipelineId)
throws IOException {
Set<ContainerID> containerIDs = stateManager.getContainers(pipelineId);
+ ContainerManager containerManager = scmContext.getScm()
+ .getContainerManager();
for (ContainerID containerID : containerIDs) {
+ if (containerManager.getContainer(containerID).getState()
+ == HddsProtos.LifeCycleState.OPEN) {
+ try {
+ containerManager.updateContainerState(containerID,
+ HddsProtos.LifeCycleEvent.FINALIZE);
+ } catch (InvalidStateTransitionException ex) {
+ throw new IOException(ex);
+ }
+ }
eventPublisher.fireEvent(SCMEvents.CLOSE_CONTAINER, containerID);
+ LOG.info("Container {} closed for pipeline={}", containerID, pipelineId);
}
}
@@ -341,6 +355,8 @@ public class PipelineManagerImpl implements PipelineManager {
public void closePipeline(Pipeline pipeline, boolean onTimeout)
throws IOException {
PipelineID pipelineID = pipeline.getId();
+ // close containers.
+ closeContainersForPipeline(pipelineID);
acquireWriteLock();
try {
if (!pipeline.isClosed()) {
@@ -352,8 +368,6 @@ public class PipelineManagerImpl implements PipelineManager {
} finally {
releaseWriteLock();
}
- // close containers.
- closeContainersForPipeline(pipelineID);
if (!onTimeout) {
// close pipeline right away.
removePipeline(pipeline);
@@ -600,6 +614,11 @@ public class PipelineManagerImpl implements PipelineManager {
return pipelineFactory;
}
+ @VisibleForTesting
+ public void setScmContext(SCMContext context) {
+ this.scmContext = context;
+ }
+
private void recordMetricsForPipeline(Pipeline pipeline) {
metrics.incNumPipelineAllocated();
if (pipeline.isOpen()) {
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDeadNodeHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDeadNodeHandler.java
index 1a3abe0..b25b1e1 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDeadNodeHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDeadNodeHandler.java
@@ -52,6 +52,7 @@ import org.apache.hadoop.hdds.scm.container.ContainerNotFoundException;
import org.apache.hadoop.hdds.scm.container.ContainerReplica;
import org.apache.hadoop.hdds.scm.container.ContainerInfo;
import org.apache.hadoop.hdds.scm.events.SCMEvents;
+import org.apache.hadoop.hdds.scm.ha.SCMContext;
import org.apache.hadoop.hdds.scm.node.states.NodeNotFoundException;
import org.apache.hadoop.hdds.scm.pipeline.PipelineManager;
import org.apache.hadoop.hdds.scm.pipeline.PipelineProvider;
@@ -86,6 +87,7 @@ public class TestDeadNodeHandler {
private EventPublisher publisher;
private EventQueue eventQueue;
private String storageDir;
+ private SCMContext scmContext;
@Before
public void setup() throws IOException, AuthenticationException {
@@ -101,8 +103,12 @@ public class TestDeadNodeHandler {
eventQueue = new EventQueue();
scm = TestUtils.getScm(conf);
nodeManager = (SCMNodeManager) scm.getScmNodeManager();
+ scmContext = new SCMContext.Builder().setIsInSafeMode(true)
+ .setLeader(true).setIsPreCheckComplete(true)
+ .setSCM(scm).build();
pipelineManager =
(PipelineManagerImpl)scm.getPipelineManager();
+ pipelineManager.setScmContext(scmContext);
PipelineProvider mockRatisProvider =
new MockRatisPipelineProvider(nodeManager,
pipelineManager.getStateManager(), conf);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java
index 327de8c..259b5d7 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java
@@ -46,6 +46,7 @@ import org.apache.hadoop.hdds.scm.exceptions.SCMException;
import org.apache.hadoop.hdds.scm.ha.SCMContext;
import org.apache.hadoop.hdds.scm.net.NetworkTopologyImpl;
import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
+import org.apache.hadoop.hdds.scm.pipeline.PipelineManagerImpl;
import org.apache.hadoop.hdds.scm.server.SCMDatanodeHeartbeatDispatcher.NodeReportFromDatanode;
import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.NodeReportProto;
import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.StorageReportProto;
@@ -130,6 +131,7 @@ public class TestSCMNodeManager {
private File testDir;
private StorageContainerManager scm;
+ private SCMContext scmContext;
private static final int MAX_LV = HDDSLayoutVersionManager.maxLayoutVersion();
private static final LayoutVersionProto LARGER_SLV_LAYOUT_PROTO =
@@ -194,6 +196,12 @@ public class TestSCMNodeManager {
SCMNodeManager createNodeManager(OzoneConfiguration config)
throws IOException, AuthenticationException {
scm = TestUtils.getScm(config);
+ scmContext = new SCMContext.Builder().setIsInSafeMode(true)
+ .setLeader(true).setIsPreCheckComplete(true)
+ .setSCM(scm).build();
+ PipelineManagerImpl pipelineManager =
+ (PipelineManagerImpl) scm.getPipelineManager();
+ pipelineManager.setScmContext(scmContext);
return (SCMNodeManager) scm.getScmNodeManager();
}
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 a2ec1cf..5133d58 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
@@ -27,6 +27,8 @@ import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
import org.apache.hadoop.hdds.scm.TestUtils;
import org.apache.hadoop.hdds.scm.container.ContainerID;
+import org.apache.hadoop.hdds.scm.container.ContainerInfo;
+import org.apache.hadoop.hdds.scm.container.ContainerManager;
import org.apache.hadoop.hdds.scm.container.MockNodeManager;
import org.apache.hadoop.hdds.scm.exceptions.SCMException;
import org.apache.hadoop.hdds.scm.ha.SCMHADBTransactionBuffer;
@@ -37,6 +39,7 @@ import org.apache.hadoop.hdds.scm.ha.SCMServiceManager;
import org.apache.hadoop.hdds.scm.metadata.SCMDBDefinition;
import org.apache.hadoop.hdds.scm.safemode.SCMSafeModeManager;
import org.apache.hadoop.hdds.scm.server.SCMDatanodeHeartbeatDispatcher;
+import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
import org.apache.hadoop.hdds.server.events.EventQueue;
import org.apache.hadoop.hdds.utils.db.DBStore;
import org.apache.hadoop.hdds.utils.db.DBStoreBuilder;
@@ -78,12 +81,16 @@ public class TestPipelineManagerImpl {
private int maxPipelineCount;
private SCMContext scmContext;
private SCMServiceManager serviceManager;
+ private StorageContainerManager scm;
@Before
public void init() throws Exception {
conf = SCMTestUtils.getConf();
testDir = GenericTestUtils.getTestDir(
TestPipelineManagerImpl.class.getSimpleName() + UUID.randomUUID());
+ conf.set(HddsConfigKeys.OZONE_METADATA_DIRS,
+ GenericTestUtils.getRandomizedTempPath());
+ scm = TestUtils.getScm(conf);
conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, testDir.getAbsolutePath());
dbStore = DBStoreBuilder.createDBStore(conf, new SCMDBDefinition());
nodeManager = new MockNodeManager(true, 20);
@@ -93,7 +100,9 @@ public class TestPipelineManagerImpl {
conf.getInt(OZONE_DATANODE_PIPELINE_LIMIT,
OZONE_DATANODE_PIPELINE_LIMIT_DEFAULT) /
HddsProtos.ReplicationFactor.THREE.getNumber();
- scmContext = SCMContext.emptyContext();
+ scmContext = new SCMContext.Builder().setIsInSafeMode(true)
+ .setLeader(true).setIsPreCheckComplete(true)
+ .setSCM(scm).build();
serviceManager = new SCMServiceManager();
}
@@ -287,6 +296,7 @@ public class TestPipelineManagerImpl {
@Test
public void testRemovePipeline() throws Exception {
PipelineManagerImpl pipelineManager = createPipelineManager(true);
+ pipelineManager.setScmContext(scmContext);
// Create a pipeline
Pipeline pipeline = pipelineManager.createPipeline(
new RatisReplicationConfig(ReplicationFactor.THREE));
@@ -296,8 +306,15 @@ public class TestPipelineManagerImpl {
// Open the pipeline
pipelineManager.openPipeline(pipeline.getId());
- pipelineManager
- .addContainerToPipeline(pipeline.getId(), ContainerID.valueOf(1));
+ ContainerManager containerManager = scm.getContainerManager();
+ ContainerInfo containerInfo = TestUtils.
+ getContainer(HddsProtos.LifeCycleState.CLOSED, pipeline.getId());
+ ContainerID containerID = containerInfo.containerID();
+ //Add Container to ContainerMap
+ containerManager.getContainerStateManager().
+ addContainer(containerInfo.getProtobuf());
+ //Add Container to PipelineStateMap
+ pipelineManager.addContainerToPipeline(pipeline.getId(), containerID);
Assert.assertTrue(pipelineManager
.getPipelines(new RatisReplicationConfig(ReplicationFactor.THREE),
Pipeline.PipelineState.OPEN).contains(pipeline));
@@ -328,6 +345,7 @@ public class TestPipelineManagerImpl {
@Test
public void testClosePipelineShouldFailOnFollower() throws Exception {
PipelineManagerImpl pipelineManager = createPipelineManager(true);
+ pipelineManager.setScmContext(scmContext);
Pipeline pipeline = pipelineManager.createPipeline(
new RatisReplicationConfig(ReplicationFactor.THREE));
Assert.assertEquals(1, pipelineManager.getPipelines().size());
@@ -349,6 +367,7 @@ public class TestPipelineManagerImpl {
@Test
public void testPipelineReport() throws Exception {
PipelineManagerImpl pipelineManager = createPipelineManager(true);
+ pipelineManager.setScmContext(scmContext);
SCMSafeModeManager scmSafeModeManager =
new SCMSafeModeManager(conf, new ArrayList<>(), null, pipelineManager,
new EventQueue(), serviceManager, scmContext);
@@ -502,6 +521,7 @@ public class TestPipelineManagerImpl {
TimeUnit.MILLISECONDS);
PipelineManagerImpl pipelineManager = createPipelineManager(true);
+ pipelineManager.setScmContext(scmContext);
Pipeline pipeline = pipelineManager
.createPipeline(new RatisReplicationConfig(ReplicationFactor.THREE));
// At this point, pipeline is not at OPEN stage.
@@ -531,6 +551,7 @@ public class TestPipelineManagerImpl {
TimeUnit.MILLISECONDS);
PipelineManagerImpl pipelineManager = createPipelineManager(true);
+ pipelineManager.setScmContext(scmContext);
Pipeline pipeline = pipelineManager
.createPipeline(new RatisReplicationConfig(ReplicationFactor.THREE));
// At this point, pipeline is not at OPEN stage.
@@ -650,6 +671,38 @@ public class TestPipelineManagerImpl {
pipelineID + " in closed state"));
}
+ @Test
+ public void testPipelineCloseFlow() throws IOException {
+ GenericTestUtils.LogCapturer logCapturer = GenericTestUtils.LogCapturer
+ .captureLogs(LoggerFactory.getLogger(PipelineManagerImpl.class));
+ PipelineManagerImpl pipelineManager = createPipelineManager(true);
+ pipelineManager.setScmContext(scmContext);
+ Pipeline pipeline = pipelineManager.createPipeline(
+ new RatisReplicationConfig(HddsProtos.ReplicationFactor.THREE));
+ PipelineID pipelineID = pipeline.getId();
+ ContainerManager containerManager = scm.getContainerManager();
+ ContainerInfo containerInfo = TestUtils.
+ getContainer(HddsProtos.LifeCycleState.CLOSED, pipelineID);
+ ContainerID containerID = containerInfo.containerID();
+ //Add Container to ContainerMap
+ containerManager.getContainerStateManager().
+ addContainer(containerInfo.getProtobuf());
+ //Add Container to PipelineStateMap
+ pipelineManager.addContainerToPipeline(pipelineID, containerID);
+ pipelineManager.closePipeline(pipeline, false);
+ String containerExpectedOutput = "Container " + containerID +
+ " closed for pipeline=" + pipelineID;
+ String pipelineExpectedOutput =
+ "Pipeline " + pipeline + " moved to CLOSED state";
+ String logOutput = logCapturer.getOutput();
+ assertTrue(logOutput.contains(containerExpectedOutput));
+ assertTrue(logOutput.contains(pipelineExpectedOutput));
+
+ int containerLogIdx = logOutput.indexOf(containerExpectedOutput);
+ int pipelineLogIdx = logOutput.indexOf(pipelineExpectedOutput);
+ assertTrue(containerLogIdx < pipelineLogIdx);
+ }
+
private void sendPipelineReport(
DatanodeDetails dn, Pipeline pipeline,
PipelineReportHandler pipelineReportHandler,
diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconStorageContainerManagerFacade.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconStorageContainerManagerFacade.java
index 5a39373..d0b0d81 100644
--- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconStorageContainerManagerFacade.java
+++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/scm/ReconStorageContainerManagerFacade.java
@@ -115,7 +115,10 @@ public class ReconStorageContainerManagerFacade
reconNodeDetails = getReconNodeDetails(conf);
this.eventQueue = new EventQueue();
eventQueue.setSilent(true);
- this.scmContext = SCMContext.emptyContext();
+ this.scmContext = new SCMContext.Builder()
+ .setIsPreCheckComplete(true)
+ .setSCM(this)
+ .build();
this.ozoneConfiguration = getReconScmConfiguration(conf);
this.scmStorageConfig = new ReconStorageConfig(conf);
this.clusterMap = new NetworkTopologyImpl(conf);
diff --git a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconPipelineManager.java b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconPipelineManager.java
index 1e27168..3acfbd5 100644
--- a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconPipelineManager.java
+++ b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconPipelineManager.java
@@ -40,6 +40,7 @@ import org.apache.hadoop.hdds.scm.pipeline.PipelineFactory;
import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
import org.apache.hadoop.hdds.scm.pipeline.PipelineProvider;
import org.apache.hadoop.hdds.scm.server.SCMStorageConfig;
+import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
import org.apache.hadoop.hdds.server.events.EventQueue;
import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import org.apache.hadoop.hdds.utils.db.DBStore;
@@ -142,6 +143,10 @@ public class TestReconPipelineManager {
eventQueue,
scmhaManager,
scmContext)) {
+ scmContext = new SCMContext.Builder().setIsInSafeMode(true)
+ .setLeader(true).setIsPreCheckComplete(true)
+ .setSCM(mock(StorageContainerManager.class)).build();
+ reconPipelineManager.setScmContext(scmContext);
reconPipelineManager.addPipeline(validPipeline);
reconPipelineManager.addPipeline(invalidPipeline);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org