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 2edb375 HDDS-5546.OM Service ID change causes OM startup failure.
(#2512)
2edb375 is described below
commit 2edb3753d75d177953f30c74490557fd33921002
Author: Bharat Viswanadham <[email protected]>
AuthorDate: Tue Aug 10 12:11:13 2021 +0530
HDDS-5546.OM Service ID change causes OM startup failure. (#2512)
---
.../org/apache/hadoop/ozone/om/OzoneManager.java | 31 ++++++++++++++++++++++
.../ozone/om/ratis/OzoneManagerRatisServer.java | 2 +-
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index 393632e..b144371 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -251,10 +251,12 @@ import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.TOKEN_ERROR_OTHER;
import static
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.VOLUME_LOCK;
import static
org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer.RaftServerStatus.LEADER_AND_READY;
+import static
org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer.getRaftGroupIdFromOmServiceId;
import static
org.apache.hadoop.ozone.protocol.proto.OzoneManagerInterServiceProtocolProtos.OzoneManagerInterService;
import static
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OzoneManagerService;
import static
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareStatusResponse.PrepareStatus;
import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
+import org.apache.ratis.protocol.RaftGroupId;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.util.FileUtils;
import org.apache.ratis.util.LifeCycle;
@@ -1142,6 +1144,35 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
omRatisSnapshotDir.toPath());
}
+ File omRatisDir = new File(omRatisDirectory);
+ String groupIDfromServiceID = RaftGroupId.valueOf(
+
getRaftGroupIdFromOmServiceId(getOMServiceId())).getUuid().toString();
+
+ // If a directory exists in ratis storage dir
+ // Check the Ratis group Dir is same as the one generated from
+ // om service id.
+
+ // This will help to catch if some one has changed service id later on.
+ File[] ratisDirFiles = omRatisDir.listFiles();
+ if (ratisDirFiles != null) {
+ for (File ratisGroupDir : ratisDirFiles) {
+ if (ratisGroupDir.isDirectory()) {
+ if (!ratisGroupDir.getName().equals(groupIDfromServiceID)) {
+ throw new IOException("Ratis group Dir on disk "
+ + ratisGroupDir.getName() + " does not match with
RaftGroupID"
+ + groupIDfromServiceID + " generated from service id "
+ + getOMServiceId() + ". Looks like there is a change to " +
+ OMConfigKeys.OZONE_OM_SERVICE_IDS_KEY + " value after the " +
+ "cluster is setup. Currently change to this value is not " +
+ "supported.");
+ }
+ } else {
+ LOG.warn("Unknown file {} exists in ratis storage dir {}",
+ ratisGroupDir, omRatisDir);
+ }
+ }
+ }
+
if (peerNodesMap != null && !peerNodesMap.isEmpty()) {
this.omSnapshotProvider = new OzoneManagerSnapshotProvider(
configuration, omRatisSnapshotDir, peerNodesMap);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
index c187d6d..56610be 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
@@ -755,7 +755,7 @@ public final class OzoneManagerRatisServer {
return this.raftPeerId;
}
- private UUID getRaftGroupIdFromOmServiceId(String omServiceId) {
+ public static UUID getRaftGroupIdFromOmServiceId(String omServiceId) {
return
UUID.nameUUIDFromBytes(omServiceId.getBytes(StandardCharsets.UTF_8));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]