You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by av...@apache.org on 2021/02/11 18:56:42 UTC
[ozone] branch HDDS-3698-nonrolling-upgrade updated: HDDS-4182.
Onboard HDDS-3869 into Layout version management. (#1913)
This is an automated email from the ASF dual-hosted git repository.
avijayan pushed a commit to branch HDDS-3698-nonrolling-upgrade
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-3698-nonrolling-upgrade by this push:
new 5720ebf HDDS-4182. Onboard HDDS-3869 into Layout version management. (#1913)
5720ebf is described below
commit 5720ebfb079b2ca412962e7df0c8e3975751ec46
Author: Ethan Rose <33...@users.noreply.github.com>
AuthorDate: Thu Feb 11 13:55:02 2021 -0500
HDDS-4182. Onboard HDDS-3869 into Layout version management. (#1913)
---
.../common/statemachine/DatanodeStateMachine.java | 3 ++
.../container/keyvalue/KeyValueContainer.java | 4 +-
.../upgrade/DatanodeMetadataFeatures.java | 53 ++++++++++++++++++++++
3 files changed, 59 insertions(+), 1 deletion(-)
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 ff4c5c7..acaa8f8 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
@@ -61,6 +61,7 @@ import org.apache.hadoop.ozone.container.replication.ReplicationSupervisor;
import org.apache.hadoop.ozone.container.replication.SimpleContainerDownloader;
import org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutAction;
import org.apache.hadoop.ozone.container.upgrade.DataNodeUpgradeFinalizer;
+import org.apache.hadoop.ozone.container.upgrade.DatanodeMetadataFeatures;
import org.apache.hadoop.ozone.protocol.commands.SCMCommand;
import org.apache.hadoop.ozone.upgrade.UpgradeFinalizer.StatusAndMessages;
import org.apache.hadoop.util.JvmPauseMonitor;
@@ -138,6 +139,8 @@ public class DatanodeStateMachine implements Closeable {
new HDDSLayoutVersionManager(dataNodeStorageConfig);
upgradeFinalizer = new DataNodeUpgradeFinalizer(dataNodeVersionManager,
datanodeDetails.getUuidString());
+ DatanodeMetadataFeatures.
+ initialize(dataNodeVersionManager);
executorService = Executors.newFixedThreadPool(
getEndPointTaskThreadPoolSize(),
diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java
index 5079811..7fe9a7a 100644
--- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java
+++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java
@@ -51,6 +51,7 @@ import org.apache.hadoop.ozone.container.common.volume.VolumeSet;
import org.apache.hadoop.ozone.container.keyvalue.helpers.BlockUtils;
import org.apache.hadoop.ozone.container.keyvalue.helpers.KeyValueContainerLocationUtil;
import org.apache.hadoop.ozone.container.keyvalue.helpers.KeyValueContainerUtil;
+import org.apache.hadoop.ozone.container.upgrade.DatanodeMetadataFeatures;
import org.apache.hadoop.util.DiskChecker.DiskOutOfSpaceException;
import com.google.common.base.Preconditions;
@@ -129,7 +130,8 @@ public class KeyValueContainer implements Container<KeyValueContainerData> {
// This method is only called when creating new containers.
// Therefore, always use the newest schema version.
- containerData.setSchemaVersion(OzoneConsts.SCHEMA_LATEST);
+ containerData.setSchemaVersion(
+ DatanodeMetadataFeatures.getSchemaVersion());
KeyValueContainerUtil.createContainerMetaData(containerID,
containerMetaDataPath, chunksPath, dbFile,
containerData.getSchemaVersion(), config);
diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DatanodeMetadataFeatures.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DatanodeMetadataFeatures.java
new file mode 100644
index 0000000..a61bd76
--- /dev/null
+++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DatanodeMetadataFeatures.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.ozone.container.upgrade;
+
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
+import org.apache.hadoop.ozone.OzoneConsts;
+
+import java.io.IOException;
+
+/**
+ * Utility class to retrieve the version of a feature that corresponds to the
+ * metadata layout version specified by the provided
+ * {@link HDDSLayoutVersionManager}.
+ */
+public final class DatanodeMetadataFeatures {
+ private static HDDSLayoutVersionManager versionManager;
+
+ private DatanodeMetadataFeatures() { }
+
+ public static synchronized void initialize(
+ HDDSLayoutVersionManager manager) {
+ versionManager = manager;
+ }
+
+ public static synchronized String getSchemaVersion() throws IOException {
+ if (versionManager == null) {
+ // version manager can be null for testing. Use the latest version in
+ // this case.
+ return OzoneConsts.SCHEMA_V2;
+ } else if (versionManager.getMetadataLayoutVersion() <
+ HDDSLayoutFeature.FIRST_UPGRADE_VERSION.layoutVersion()) {
+ return OzoneConsts.SCHEMA_V1;
+ } else {
+ return OzoneConsts.SCHEMA_V2;
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org