This is an automated email from the ASF dual-hosted git repository.
avijayan pushed a commit to branch HDDS-3698-upgrade
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-3698-upgrade by this push:
new 81c1dee HDDS-4219. Revisit 'static' nature of OM Layout Version
Manager. (#1773)
81c1dee is described below
commit 81c1deef79a490a4ca40fd0a6ee7e40af87d6ff5
Author: avijayanhwx <[email protected]>
AuthorDate: Thu Jan 14 23:03:29 2021 +0530
HDDS-4219. Revisit 'static' nature of OM Layout Version Manager. (#1773)
---
.../hadoop/hdds/upgrade/HDDSLayoutFeature.java | 73 ++++++++++++++++++
.../hdds/upgrade/HDDSLayoutFeatureCatalog.java | 87 ----------------------
.../hdds/upgrade/HDDSLayoutVersionManager.java | 45 +----------
.../hadoop/ozone/upgrade/LayoutVersionManager.java | 10 +++
.../common/statemachine/DatanodeStateMachine.java | 12 +--
.../states/endpoint/HeartbeatEndpointTask.java | 13 ++--
.../states/endpoint/RegisterEndpointTask.java | 13 ++--
...pgradeAction.java => DataNodeLayoutAction.java} | 29 +++++++-
.../upgrade/DataNodeLayoutActionCatalog.java | 58 ---------------
.../upgrade/DataNodeLayoutVersionManager.java | 82 --------------------
.../DataNodeUpgradeActionFirstUpgradeVersion.java | 3 +-
.../upgrade/DataNodeUpgradeFinalizer.java | 7 +-
.../states/endpoint/TestHeartbeatEndpointTask.java | 6 +-
.../upgrade/TestDataNodeStartupSlvLessThanMlv.java | 5 +-
.../hdds/scm/server/StorageContainerManager.java | 6 +-
...youtActionCatalog.java => SCMLayoutAction.java} | 41 +++++-----
.../hdds/scm/server/upgrade/SCMUpgradeAction.java | 29 --------
.../SCMUpgradeActionFirstUpgradeVersion.java | 3 +-
.../scm/server/upgrade/SCMUpgradeFinalizer.java | 3 +-
.../hadoop/hdds/scm/node/TestSCMNodeManager.java | 2 +-
.../scm/upgrade/TestScmStartupSlvLessThanMlv.java | 4 +-
.../ozone/container/common/TestEndPoint.java | 6 +-
.../org/apache/hadoop/ozone/om/OzoneManager.java | 9 +--
.../om/ratis/utils/OzoneManagerRatisUtils.java | 6 +-
.../ozone/om/upgrade/OMLayoutFeatureAspect.java | 22 +++++-
.../ozone/om/upgrade/OMLayoutFeatureUtil.java | 18 +++++
...anagerImpl.java => OMLayoutVersionManager.java} | 51 +++----------
.../ozone/om/upgrade/OMUpgradeFinalizer.java | 4 +-
.../ozone/om/upgrade/OmLayoutVersionManager.java | 29 --------
.../protocolPB/OzoneManagerRequestHandler.java | 2 +-
.../ozone/om/request/bucket/TestBucketRequest.java | 4 +-
.../ozone/om/request/key/TestOMKeyRequest.java | 4 +-
.../om/request/volume/TestOMVolumeRequest.java | 4 +-
.../om/upgrade/TestOMLayoutFeatureAspect.java | 2 -
.../ozone/om/upgrade/TestOMUpgradeFinalizer.java | 2 +-
.../ozone/om/upgrade/TestOMVersionManager.java | 37 +++------
.../TestOmVersionManagerRequestFactory.java | 10 +--
.../scm/ReconStorageContainerManagerFacade.java | 4 +-
.../ozone/recon/scm/TestReconNodeManager.java | 2 +-
39 files changed, 253 insertions(+), 494 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java
new file mode 100644
index 0000000..672c3ff
--- /dev/null
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java
@@ -0,0 +1,73 @@
+/**
+ * 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.hdds.upgrade;
+
+import java.util.Optional;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+import org.apache.hadoop.ozone.upgrade.LayoutFeature;
+
+/**
+ * List of HDDS Features.
+ */
+public enum HDDSLayoutFeature implements LayoutFeature {
+ ////////////////////////////// //////////////////////////////
+ INITIAL_VERSION(0, "Initial Layout Version"),
+ FIRST_UPGRADE_VERSION(1, "First Layout Version After Upgrade");
+
+ ////////////////////////////// //////////////////////////////
+
+ private int layoutVersion;
+ private String description;
+ private HDDSUpgradeAction scmUpgradeAction;
+ private HDDSUpgradeAction datanodeUpgradeAction;
+
+ HDDSLayoutFeature(final int layoutVersion, String description) {
+ this.layoutVersion = layoutVersion;
+ this.description = description;
+ }
+
+ @SuppressFBWarnings("ME_ENUM_FIELD_SETTER")
+ public void setSCMUpgradeAction(HDDSUpgradeAction scmAction) {
+ this.scmUpgradeAction = scmAction;
+ }
+
+ @SuppressFBWarnings("ME_ENUM_FIELD_SETTER")
+ public void setDataNodeUpgradeAction(HDDSUpgradeAction datanodeAction) {
+ this.datanodeUpgradeAction = datanodeAction;
+ }
+
+ @Override
+ public int layoutVersion() {
+ return layoutVersion;
+ }
+
+ @Override
+ public String description() {
+ return description;
+ }
+
+ public Optional<? extends HDDSUpgradeAction> onFinalizeSCMAction() {
+ return Optional.ofNullable(scmUpgradeAction);
+ }
+
+ public Optional<? extends HDDSUpgradeAction> onFinalizeDataNodeAction() {
+ return Optional.ofNullable(datanodeUpgradeAction);
+ }
+}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeatureCatalog.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeatureCatalog.java
deleted file mode 100644
index 2c6760e..0000000
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeatureCatalog.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * 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.hdds.upgrade;
-
-import java.util.Optional;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
-import org.apache.hadoop.ozone.upgrade.LayoutFeature;
-
-/**
- * Catalog of HDDS features.
- */
-public class HDDSLayoutFeatureCatalog {
-
-
- /**
- * List of HDDS Features.
- */
- public enum HDDSLayoutFeature implements LayoutFeature {
- ////////////////////////////// //////////////////////////////
- INITIAL_VERSION(0, "Initial Layout Version"),
- FIRST_UPGRADE_VERSION(1, "First Layout Version After Upgrade");
-
- ////////////////////////////// //////////////////////////////
-
- private int layoutVersion;
- private String description;
-
- private Optional<? extends HDDSUpgradeAction> scmUpgradeAction =
- Optional.empty();
-
- private Optional<? extends HDDSUpgradeAction> datanodeUpgradeAction =
- Optional.empty();
-
- HDDSLayoutFeature(final int layoutVersion, String description) {
- this.layoutVersion = layoutVersion;
- this.description = description;
- }
-
- @SuppressFBWarnings("ME_ENUM_FIELD_SETTER")
- public void setSCMUpgradeAction(Optional<? extends HDDSUpgradeAction>
- scmAction) {
- this.scmUpgradeAction = scmAction;
- }
-
- @SuppressFBWarnings("ME_ENUM_FIELD_SETTER")
- public void setDataNodeUpgradeAction(Optional<? extends HDDSUpgradeAction>
- datanodeAction) {
- this.datanodeUpgradeAction = datanodeAction;
- }
-
- @Override
- public int layoutVersion() {
- return layoutVersion;
- }
-
- @Override
- public String description() {
- return description;
- }
-
- public Optional<? extends HDDSUpgradeAction> onFinalizeSCMAction() {
- return scmUpgradeAction;
- }
-
- public Optional<? extends HDDSUpgradeAction> onFinalizeDataNodeAction() {
- return datanodeUpgradeAction;
- }
- }
-}
-
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutVersionManager.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutVersionManager.java
index 8b8c250..92f230e 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutVersionManager.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutVersionManager.java
@@ -22,11 +22,7 @@ package org.apache.hadoop.hdds.upgrade;
import java.io.IOException;
import org.apache.hadoop.ozone.common.Storage;
-import
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature;
import org.apache.hadoop.ozone.upgrade.AbstractLayoutVersionManager;
-import org.apache.hadoop.ozone.upgrade.LayoutVersionManager;
-
-import com.google.common.annotations.VisibleForTesting;
/**
* Class to manage layout versions and features for Storage Container Manager
@@ -36,44 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
public class HDDSLayoutVersionManager extends
AbstractLayoutVersionManager<HDDSLayoutFeature> {
- private static HDDSLayoutVersionManager hddsLayoutVersionManager;
-
- private HDDSLayoutVersionManager() {
- }
-
- /**
- * Read only instance to HDDS Version Manager.
- * @return version manager instance.
- */
- public static synchronized LayoutVersionManager getInstance() {
- if (hddsLayoutVersionManager == null) {
- throw new RuntimeException("HDDS Layout Version Manager not yet " +
- "initialized.");
- }
- return hddsLayoutVersionManager;
- }
-
-
- /**
- * Initialize HDDS version manager from scmstorage.
- * @return version manager instance.
- */
- public static synchronized HDDSLayoutVersionManager initialize(
- Storage hddsStorage)
- throws IOException {
- if (hddsLayoutVersionManager == null) {
- hddsLayoutVersionManager = new HDDSLayoutVersionManager();
- hddsLayoutVersionManager.init(hddsStorage.getLayoutVersion(),
- HDDSLayoutFeature.values());
- }
- return hddsLayoutVersionManager;
- }
-
- @VisibleForTesting
- protected synchronized static void resetLayoutVersionManager() {
- if (hddsLayoutVersionManager != null) {
- hddsLayoutVersionManager.reset();
- hddsLayoutVersionManager = null;
- }
+ public HDDSLayoutVersionManager(Storage hddsStorage) throws IOException {
+ init(hddsStorage.getLayoutVersion(), HDDSLayoutFeature.values());
}
}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java
index 7714e80..dc7dffe 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java
@@ -63,4 +63,14 @@ public interface LayoutVersionManager {
LayoutFeature getFeature(String name);
Iterable<? extends LayoutFeature> unfinalizedFeatures();
+
+ /**
+ * Generic API for returning a registered handler for a given type.
+ * @param type String type
+ * @return
+ */
+ default Object getHandler(String type) {
+ return null;
+ }
+
}
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 28e34c7..98786a5 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
@@ -37,6 +37,7 @@ import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolPro
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.NodeReportProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.PipelineReportsProto;
import
org.apache.hadoop.hdds.security.x509.certificate.client.CertificateClient;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import org.apache.hadoop.hdds.utils.LegacyHadoopConfigurationSource;
import org.apache.hadoop.ozone.HddsDatanodeStopService;
import org.apache.hadoop.ozone.container.common.DataNodeStorageConfig;
@@ -56,8 +57,7 @@ import
org.apache.hadoop.ozone.container.replication.ContainerReplicator;
import
org.apache.hadoop.ozone.container.replication.DownloadAndImportReplicator;
import org.apache.hadoop.ozone.container.replication.ReplicationSupervisor;
import org.apache.hadoop.ozone.container.replication.SimpleContainerDownloader;
-import
org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutActionCatalog.DataNodeLayoutAction;
-import org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutVersionManager;
+import org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutAction;
import org.apache.hadoop.ozone.container.upgrade.DataNodeUpgradeFinalizer;
import org.apache.hadoop.ozone.protocol.commands.SCMCommand;
import org.apache.hadoop.ozone.upgrade.UpgradeFinalizer.StatusAndMessages;
@@ -95,7 +95,7 @@ public class DatanodeStateMachine implements Closeable {
private CertificateClient dnCertClient;
private final HddsDatanodeStopService hddsDatanodeStopService;
- private DataNodeLayoutVersionManager dataNodeVersionManager;
+ private HDDSLayoutVersionManager dataNodeVersionManager;
private DataNodeStorageConfig dataNodeStorageConfig;
private DataNodeUpgradeFinalizer upgradeFinalizer;
@@ -130,8 +130,8 @@ public class DatanodeStateMachine implements Closeable {
if (dataNodeStorageConfig.getState() != INITIALIZED) {
dataNodeStorageConfig.initialize();
}
- dataNodeVersionManager = DataNodeLayoutVersionManager
- .initialize(dataNodeStorageConfig);
+ dataNodeVersionManager =
+ new HDDSLayoutVersionManager(dataNodeStorageConfig);
upgradeFinalizer = new DataNodeUpgradeFinalizer(dataNodeVersionManager);
executorService = Executors.newFixedThreadPool(
@@ -582,7 +582,7 @@ public class DatanodeStateMachine implements Closeable {
}
@VisibleForTesting
- public DataNodeLayoutVersionManager getDataNodeVersionManager() {
+ public HDDSLayoutVersionManager getDataNodeVersionManager() {
return dataNodeVersionManager;
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
index 63ccff6..4a40496 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
@@ -40,6 +40,7 @@ import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.SCMCommandProto;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.SCMHeartbeatResponseProto;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import org.apache.hadoop.ozone.container.common.helpers
.DeletedContainerBlocksSummary;
import org.apache.hadoop.ozone.container.common.statemachine
@@ -47,7 +48,6 @@ import org.apache.hadoop.ozone.container.common.statemachine
import org.apache.hadoop.ozone.container.common.statemachine
.EndpointStateMachine.EndPointStates;
import org.apache.hadoop.ozone.container.common.statemachine.StateContext;
-import org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutVersionManager;
import org.apache.hadoop.ozone.protocol.commands.CloseContainerCommand;
import org.apache.hadoop.ozone.protocol.commands.ClosePipelineCommand;
import org.apache.hadoop.ozone.protocol.commands.CreatePipelineCommand;
@@ -87,7 +87,7 @@ public class HeartbeatEndpointTask
private StateContext context;
private int maxContainerActionsPerHB;
private int maxPipelineActionsPerHB;
- private DataNodeLayoutVersionManager layoutVersionManager;
+ private HDDSLayoutVersionManager layoutVersionManager;
/**
* Constructs a SCM heart beat.
@@ -112,7 +112,7 @@ public class HeartbeatEndpointTask
*/
public HeartbeatEndpointTask(EndpointStateMachine rpcEndpoint,
ConfigurationSource conf, StateContext context,
- DataNodeLayoutVersionManager versionManager) {
+ HDDSLayoutVersionManager versionManager) {
this.rpcEndpoint = rpcEndpoint;
this.conf = conf;
this.context = context;
@@ -392,7 +392,7 @@ public class HeartbeatEndpointTask
private ConfigurationSource conf;
private DatanodeDetails datanodeDetails;
private StateContext context;
- private DataNodeLayoutVersionManager versionManager;
+ private HDDSLayoutVersionManager versionManager;
/**
* Constructs the builder class.
@@ -417,9 +417,8 @@ public class HeartbeatEndpointTask
* @param versionMgr - config
* @return Builder
*/
- public Builder setLayoutVersionManager(
- DataNodeLayoutVersionManager versionMgr) {
- this.versionManager = versionMgr;
+ public Builder setLayoutVersionManager(HDDSLayoutVersionManager lvm) {
+ this.versionManager = lvm;
return this;
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/RegisterEndpointTask.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/RegisterEndpointTask.java
index 9f2476e..331ef0f 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/RegisterEndpointTask.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/RegisterEndpointTask.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.hdds.conf.ConfigurationSource;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.PipelineReportsProto;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import org.apache.hadoop.ozone.container.common.statemachine
.EndpointStateMachine;
import org.apache.hadoop.hdds.protocol.proto
@@ -37,7 +38,6 @@ import org.apache.hadoop.hdds.protocol.proto
.StorageContainerDatanodeProtocolProtos.LayoutVersionProto;
import org.apache.hadoop.ozone.container.common.statemachine.StateContext;
import org.apache.hadoop.ozone.container.ozoneimpl.OzoneContainer;
-import org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutVersionManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,7 +59,7 @@ public final class RegisterEndpointTask implements
private DatanodeDetails datanodeDetails;
private final OzoneContainer datanodeContainerManager;
private StateContext stateContext;
- private DataNodeLayoutVersionManager layoutVersionManager;
+ private HDDSLayoutVersionManager layoutVersionManager;
/**
* Creates a register endpoint task.
@@ -90,7 +90,7 @@ public final class RegisterEndpointTask implements
@VisibleForTesting
public RegisterEndpointTask(EndpointStateMachine rpcEndPoint,
ConfigurationSource conf, OzoneContainer ozoneContainer,
- StateContext context, DataNodeLayoutVersionManager versionManager) {
+ StateContext context, HDDSLayoutVersionManager versionManager) {
this.rpcEndPoint = rpcEndPoint;
this.conf = conf;
this.datanodeContainerManager = ozoneContainer;
@@ -205,7 +205,7 @@ public final class RegisterEndpointTask implements
private DatanodeDetails datanodeDetails;
private OzoneContainer container;
private StateContext context;
- private DataNodeLayoutVersionManager versionManager;
+ private HDDSLayoutVersionManager versionManager;
/**
* Constructs the builder class.
@@ -241,9 +241,8 @@ public final class RegisterEndpointTask implements
* @param versionMgr - config
* @return Builder.
*/
- public Builder setLayoutVersionManager(
- DataNodeLayoutVersionManager versionMgr) {
- this.versionManager = versionMgr;
+ public Builder setLayoutVersionManager(HDDSLayoutVersionManager lvm) {
+ this.versionManager = lvm;
return this;
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeAction.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutAction.java
similarity index 51%
rename from
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeAction.java
rename to
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutAction.java
index 9097043..f46b434 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeAction.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutAction.java
@@ -18,12 +18,35 @@
package org.apache.hadoop.ozone.container.upgrade;
+import static
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature.FIRST_UPGRADE_VERSION;
+
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature;
import org.apache.hadoop.hdds.upgrade.HDDSUpgradeAction;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine;
/**
- * Upgrade Action for DataNode which takes in a 'DataNodeStateMachine'
instance.
+ * Catalog of HDDS features and their corresponding DataNode action.
+ * It is OK to skip HDDS features from the catalog that do not have
+ * any specific DataNodeActions.
*/
-public interface DataNodeUpgradeAction extends
- HDDSUpgradeAction<DatanodeStateMachine> {
+public enum DataNodeLayoutAction {
+ DataNodeUpgradeFirstAction(FIRST_UPGRADE_VERSION,
+ new DataNodeUpgradeActionFirstUpgradeVersion());
+
+ ////////////////////////////// //////////////////////////////
+
+ private HDDSLayoutFeature hddsFeature;
+ private HDDSUpgradeAction<DatanodeStateMachine> action;
+
+ DataNodeLayoutAction(HDDSLayoutFeature feature,
+ HDDSUpgradeAction<DatanodeStateMachine> action) {
+ this.hddsFeature = feature;
+ this.action = action;
+ this.hddsFeature.setDataNodeUpgradeAction(action);
+ }
+
+ public HDDSLayoutFeature getHddsFeature() {
+ return hddsFeature;
+ }
}
+
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutActionCatalog.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutActionCatalog.java
deleted file mode 100644
index 48bfec2..0000000
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutActionCatalog.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * 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 static
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature.FIRST_UPGRADE_VERSION;
-
-import java.util.Optional;
-
-import
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature;
-
-/**
- * Catalog of HDDS features and their corresponding DataNode action.
- * It is OK to skip HDDS features from the catalog that do not have
- * any specific DataNodeActions.
- */
-public class DataNodeLayoutActionCatalog {
-
- /**
- * List of HDDS Features and corresponding DataNode actions.
- */
- public enum DataNodeLayoutAction {
- DataNodeAction1(FIRST_UPGRADE_VERSION,
- new DataNodeUpgradeActionFirstUpgradeVersion());
-
- ////////////////////////////// //////////////////////////////
-
- private HDDSLayoutFeature hddsFeature;
- private DataNodeUpgradeAction dataNodeAction;
-
- DataNodeLayoutAction(HDDSLayoutFeature feature,
- DataNodeUpgradeAction action) {
- this.hddsFeature = feature;
- this.dataNodeAction = action;
- this.hddsFeature.setDataNodeUpgradeAction(Optional.of(dataNodeAction));
- }
-
- public HDDSLayoutFeature getHddsFeature() {
- return hddsFeature;
- }
- }
-}
-
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutVersionManager.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutVersionManager.java
deleted file mode 100644
index 1f33a81..0000000
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeLayoutVersionManager.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * 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 java.io.IOException;
-
-import
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature;
-import org.apache.hadoop.ozone.common.Storage;
-import org.apache.hadoop.ozone.upgrade.AbstractLayoutVersionManager;
-import org.apache.hadoop.ozone.upgrade.LayoutVersionManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.VisibleForTesting;
-
-/**
- * Class to manage layout versions and features for Storage Container Manager
- * and DataNodes.
- */
-@SuppressWarnings("FinalClass")
-public class DataNodeLayoutVersionManager extends
- AbstractLayoutVersionManager<HDDSLayoutFeature> {
- private static final Logger LOG = LoggerFactory.getLogger(
- DataNodeLayoutVersionManager.class);
- private static DataNodeLayoutVersionManager dataNodeLayoutVersionManager;
-
- private DataNodeLayoutVersionManager() {
- }
-
- /**
- * Read only instance to DataNode Version Manager.
- * @return version manager instance.
- */
- public static synchronized LayoutVersionManager getInstance() {
- if (dataNodeLayoutVersionManager == null) {
- throw new RuntimeException("DataNode Layout Version Manager not yet " +
- "initialized.");
- }
- return dataNodeLayoutVersionManager;
- }
-
- /**
- * Initialize DataNode version manager from version file stored on the
- * DataNode.
- * @param dataNodeStorage - DataNode storage config
- * @return version manager instance.
- */
-
- public static synchronized DataNodeLayoutVersionManager initialize(
- Storage dataNodeStorage) throws IOException {
- if (dataNodeLayoutVersionManager == null) {
- dataNodeLayoutVersionManager = new DataNodeLayoutVersionManager();
- dataNodeLayoutVersionManager.init(dataNodeStorage.getLayoutVersion(),
- HDDSLayoutFeature.values());
- }
- return dataNodeLayoutVersionManager;
- }
-
- @VisibleForTesting
- protected synchronized static void resetLayoutVersionManager() {
- if (dataNodeLayoutVersionManager != null) {
- dataNodeLayoutVersionManager.reset();
- dataNodeLayoutVersionManager = null;
- }
- }
-}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeActionFirstUpgradeVersion.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeActionFirstUpgradeVersion.java
index 267af05..7e601f2 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeActionFirstUpgradeVersion.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeActionFirstUpgradeVersion.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.ozone.container.upgrade;
+import org.apache.hadoop.hdds.upgrade.HDDSUpgradeAction;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,7 +27,7 @@ import org.slf4j.LoggerFactory;
* Upgrade Action for DataNode for the very first first Upgrade Version.
*/
public class DataNodeUpgradeActionFirstUpgradeVersion
- implements DataNodeUpgradeAction {
+ implements HDDSUpgradeAction<DatanodeStateMachine> {
public static final Logger LOG =
LoggerFactory.getLogger(DataNodeUpgradeActionFirstUpgradeVersion.class);
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeFinalizer.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeFinalizer.java
index 6081f00..9b55fc5 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeFinalizer.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/upgrade/DataNodeUpgradeFinalizer.java
@@ -26,7 +26,8 @@ import java.io.IOException;
import java.util.Optional;
import java.util.concurrent.Callable;
-import
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine;
import org.apache.hadoop.ozone.upgrade.BasicUpgradeFinalizer;
import org.apache.hadoop.ozone.upgrade.LayoutFeature;
@@ -35,9 +36,9 @@ import org.apache.hadoop.ozone.upgrade.LayoutFeature;
* UpgradeFinalizer for the DataNode.
*/
public class DataNodeUpgradeFinalizer extends
- BasicUpgradeFinalizer<DatanodeStateMachine, DataNodeLayoutVersionManager> {
+ BasicUpgradeFinalizer<DatanodeStateMachine, HDDSLayoutVersionManager> {
- public DataNodeUpgradeFinalizer(DataNodeLayoutVersionManager versionManager)
{
+ public DataNodeUpgradeFinalizer(HDDSLayoutVersionManager versionManager) {
super(versionManager);
}
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/states/endpoint/TestHeartbeatEndpointTask.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/states/endpoint/TestHeartbeatEndpointTask.java
index 29d5ce3..2058c8e 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/states/endpoint/TestHeartbeatEndpointTask.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/states/endpoint/TestHeartbeatEndpointTask.java
@@ -30,11 +30,11 @@ import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolPro
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.NodeReportProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMHeartbeatRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMHeartbeatResponseProto;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine.DatanodeStates;
import
org.apache.hadoop.ozone.container.common.statemachine.EndpointStateMachine;
import org.apache.hadoop.ozone.container.common.statemachine.StateContext;
-import org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutVersionManager;
import
org.apache.hadoop.ozone.protocolPB.StorageContainerDatanodeProtocolClientSideTranslatorPB;
import org.junit.Assert;
@@ -280,8 +280,8 @@ public class TestHeartbeatEndpointTask {
Mockito.when(endpointStateMachine.getEndPoint()).thenReturn(proxy);
Mockito.when(endpointStateMachine.getAddress())
.thenReturn(TEST_SCM_ENDPOINT);
- DataNodeLayoutVersionManager layoutVersionManager =
- Mockito.mock(DataNodeLayoutVersionManager.class);
+ HDDSLayoutVersionManager layoutVersionManager =
+ Mockito.mock(HDDSLayoutVersionManager.class);
Mockito.when(layoutVersionManager.getSoftwareLayoutVersion())
.thenReturn(TEST_SOFTWARE_LAYOUT_VERSION);
Mockito.when(layoutVersionManager.getMetadataLayoutVersion())
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDataNodeStartupSlvLessThanMlv.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDataNodeStartupSlvLessThanMlv.java
index 35e7985..e075b13 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDataNodeStartupSlvLessThanMlv.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDataNodeStartupSlvLessThanMlv.java
@@ -25,7 +25,7 @@ import org.apache.hadoop.hdds.HddsConfigKeys;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
-import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine;
import org.apache.hadoop.ozone.upgrade.LayoutFeature;
import org.apache.hadoop.ozone.upgrade.TestUpgradeUtils;
@@ -57,8 +57,7 @@ public class TestDataNodeStartupSlvLessThanMlv {
// Set metadata layout version larger then software layout version.
int largestSlv = 0;
- for (LayoutFeature f :
- HDDSLayoutFeatureCatalog.HDDSLayoutFeature.values()) {
+ for (LayoutFeature f : HDDSLayoutFeature.values()) {
largestSlv = Math.max(largestSlv, f.layoutVersion());
}
int mlv = largestSlv + 1;
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
index 770b4db..d77524b 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
@@ -90,7 +90,7 @@ import
org.apache.hadoop.hdds.scm.pipeline.PipelineReportHandler;
import org.apache.hadoop.hdds.scm.pipeline.SCMPipelineManager;
import
org.apache.hadoop.hdds.scm.pipeline.choose.algorithms.PipelineChoosePolicyFactory;
import org.apache.hadoop.hdds.scm.safemode.SCMSafeModeManager;
-import
org.apache.hadoop.hdds.scm.server.upgrade.SCMLayoutActionCatalog.SCMLayoutAction;
+import org.apache.hadoop.hdds.scm.server.upgrade.SCMLayoutAction;
import org.apache.hadoop.hdds.scm.server.upgrade.SCMUpgradeFinalizer;
import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
import org.apache.hadoop.hdds.security.x509.SecurityConfig;
@@ -264,9 +264,7 @@ public final class StorageContainerManager extends
ServiceRuntimeInfoImpl
}
loadSCMUpgradeActions();
- scmLayoutVersionManager =
- HDDSLayoutVersionManager.initialize(scmStorageConfig);
-
+ scmLayoutVersionManager = new HDDSLayoutVersionManager(scmStorageConfig);
upgradeFinalizer = new SCMUpgradeFinalizer(scmLayoutVersionManager);
/**
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMLayoutActionCatalog.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMLayoutAction.java
similarity index 53%
rename from
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMLayoutActionCatalog.java
rename to
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMLayoutAction.java
index d8c9765..155c947 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMLayoutActionCatalog.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMLayoutAction.java
@@ -18,38 +18,35 @@
package org.apache.hadoop.hdds.scm.server.upgrade;
-import static
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature.FIRST_UPGRADE_VERSION;
-import java.util.Optional;
-import
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature;
+import static
org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature.FIRST_UPGRADE_VERSION;
+
+import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature;
+import org.apache.hadoop.hdds.upgrade.HDDSUpgradeAction;
/**
* Catalog of HDDS features and their corresponding SCM action.
* It is OK to skip HDDS features from the catalog that do not have
* any specific SCMActions.
*/
-public class SCMLayoutActionCatalog {
-
- /**
- * List of HDDS Features and corresponding SCM actions.
- */
- public enum SCMLayoutAction {
- SCMAction1(FIRST_UPGRADE_VERSION,
- new SCMUpgradeActionFirstUpgradeVersion());
+public enum SCMLayoutAction {
+ SCMUpgradeFirstAction(FIRST_UPGRADE_VERSION,
+ new SCMUpgradeActionFirstUpgradeVersion());
- ////////////////////////////// //////////////////////////////
+ ////////////////////////////// //////////////////////////////
- private HDDSLayoutFeature hddsFeature;
- private SCMUpgradeAction scmAction;
+ private HDDSLayoutFeature hddsFeature;
+ private HDDSUpgradeAction<StorageContainerManager> action;
- SCMLayoutAction(HDDSLayoutFeature feature, SCMUpgradeAction action) {
- this.hddsFeature = feature;
- this.scmAction = action;
- hddsFeature.setSCMUpgradeAction(Optional.of(scmAction));
- }
+ SCMLayoutAction(HDDSLayoutFeature feature,
+ HDDSUpgradeAction<StorageContainerManager> action) {
+ this.hddsFeature = feature;
+ this.action = action;
+ hddsFeature.setSCMUpgradeAction(action);
+ }
- public HDDSLayoutFeature getHddsFeature() {
- return hddsFeature;
- }
+ public HDDSLayoutFeature getHddsFeature() {
+ return hddsFeature;
}
}
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeAction.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeAction.java
deleted file mode 100644
index b3f31a2..0000000
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeAction.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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.hdds.scm.server.upgrade;
-
-import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
-import org.apache.hadoop.hdds.upgrade.HDDSUpgradeAction;
-
-/**
- * Upgrade Action for StorageContainerManager which takes in an 'SCM' instance.
- */
-public interface SCMUpgradeAction extends
- HDDSUpgradeAction<StorageContainerManager> {
-}
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeActionFirstUpgradeVersion.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeActionFirstUpgradeVersion.java
index 8e3f54c..01f54f5 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeActionFirstUpgradeVersion.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeActionFirstUpgradeVersion.java
@@ -19,6 +19,7 @@
package org.apache.hadoop.hdds.scm.server.upgrade;
import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
+import org.apache.hadoop.hdds.upgrade.HDDSUpgradeAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,7 +27,7 @@ import org.slf4j.LoggerFactory;
* SCM Upgrade Action for the very first Upgrade Version.
*/
public class SCMUpgradeActionFirstUpgradeVersion implements
- SCMUpgradeAction {
+ HDDSUpgradeAction<StorageContainerManager> {
public static final Logger LOG =
LoggerFactory.getLogger(SCMUpgradeActionFirstUpgradeVersion.class);
@Override
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeFinalizer.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeFinalizer.java
index f8c3f41..b220b18 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeFinalizer.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/SCMUpgradeFinalizer.java
@@ -27,8 +27,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
-import org.apache.hadoop.hdds
- .upgrade.HDDSLayoutFeatureCatalog.HDDSLayoutFeature;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature;
import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import org.apache.hadoop.ozone.upgrade.BasicUpgradeFinalizer;
import org.apache.hadoop.ozone.upgrade.LayoutFeature;
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 9f5a988..b3f1e8f 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
@@ -556,7 +556,7 @@ public class TestSCMNodeManager {
when(scmStorageConfig.getClusterID()).thenReturn("xyz111");
EventPublisher eventPublisher = mock(EventPublisher.class);
HDDSLayoutVersionManager lvm =
- HDDSLayoutVersionManager.initialize(scmStorageConfig);
+ new HDDSLayoutVersionManager(scmStorageConfig);
SCMNodeManager nodeManager = new SCMNodeManager(conf,
scmStorageConfig, eventPublisher, new NetworkTopologyImpl(conf), lvm);
DatanodeDetails node1 =
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupSlvLessThanMlv.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupSlvLessThanMlv.java
index 73dc612..18df61d 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupSlvLessThanMlv.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupSlvLessThanMlv.java
@@ -21,7 +21,7 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
-import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeatureCatalog;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutFeature;
import org.apache.hadoop.ozone.upgrade.LayoutFeature;
import org.apache.hadoop.ozone.upgrade.TestUpgradeUtils;
import org.apache.hadoop.test.GenericTestUtils;
@@ -54,7 +54,7 @@ public class TestScmStartupSlvLessThanMlv {
// Set metadata layout version larger then software layout version.
int largestSlv = 0;
- for (LayoutFeature f: HDDSLayoutFeatureCatalog.HDDSLayoutFeature.values())
{
+ for (LayoutFeature f: HDDSLayoutFeature.values()) {
largestSlv = Math.max(largestSlv, f.layoutVersion());
}
int mlv = largestSlv + 1;
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
index 0b2720d..a322d41 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
@@ -44,6 +44,7 @@ import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolPro
import org.apache.hadoop.hdds.scm.TestUtils;
import org.apache.hadoop.hdds.scm.VersionInfo;
import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
+import org.apache.hadoop.hdds.upgrade.HDDSLayoutVersionManager;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ozone.OzoneConfigKeys;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine;
@@ -55,7 +56,6 @@ import
org.apache.hadoop.ozone.container.common.states.endpoint.VersionEndpointT
import org.apache.hadoop.ozone.container.common.volume.HddsVolume;
import org.apache.hadoop.ozone.container.ozoneimpl.ContainerController;
import org.apache.hadoop.ozone.container.ozoneimpl.OzoneContainer;
-import org.apache.hadoop.ozone.container.upgrade.DataNodeLayoutVersionManager;
import org.apache.hadoop.ozone.protocol.commands.CommandStatus;
import org.apache.hadoop.test.GenericTestUtils;
import org.apache.hadoop.test.PathUtils;
@@ -314,8 +314,8 @@ public class TestEndPoint {
when(ozoneContainer.getController()).thenReturn(controller);
when(ozoneContainer.getPipelineReport()).thenReturn(
TestUtils.getRandomPipelineReports());
- DataNodeLayoutVersionManager versionManager =
- Mockito.mock(DataNodeLayoutVersionManager.class);
+ HDDSLayoutVersionManager versionManager =
+ Mockito.mock(HDDSLayoutVersionManager.class);
when(versionManager.getMetadataLayoutVersion())
.thenReturn(TEST_METADATA_LAYOUT_VERSION);
when(versionManager.getSoftwareLayoutVersion())
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 5f8f8aa..498d302 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
@@ -145,8 +145,7 @@ import
org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer;
import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils;
import org.apache.hadoop.ozone.om.request.OMClientRequest;
import org.apache.hadoop.ozone.om.snapshot.OzoneManagerSnapshotProvider;
-import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManagerImpl;
-import org.apache.hadoop.ozone.om.upgrade.OmLayoutVersionManager;
+import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager;
import org.apache.hadoop.ozone.om.upgrade.OMUpgradeFinalizer;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DBUpdatesRequest;
@@ -324,7 +323,7 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
private KeyProviderCryptoExtension kmsProvider = null;
private static String keyProviderUriKeyName =
CommonConfigurationKeysPublic.HADOOP_SECURITY_KEY_PROVIDER_PATH;
- private final OMLayoutVersionManagerImpl versionManager;
+ private final OMLayoutVersionManager versionManager;
private boolean allowListAllVolumes;
// Adding parameters needed for VolumeRequests here, so that during request
@@ -369,7 +368,7 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
omStorage = new OMStorage(conf);
omId = omStorage.getOmId();
- versionManager = OMLayoutVersionManagerImpl.initialize(omStorage);
+ versionManager = new OMLayoutVersionManager(omStorage);
upgradeFinalizer = new OMUpgradeFinalizer(versionManager);
// In case of single OM Node Service there will be no OM Node ID
@@ -3827,7 +3826,7 @@ public final class OzoneManager extends
ServiceRuntimeInfoImpl
return omVolumeArgs.build();
}
- public OmLayoutVersionManager getVersionManager() {
+ public OMLayoutVersionManager getVersionManager() {
return versionManager;
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
index f0117b5..8ea0a74 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
@@ -81,7 +81,7 @@ public final class OzoneManagerRatisUtils {
default:
Class<? extends OMClientRequest> requestClass =
om.getVersionManager()
- .getRequestHandler(omRequest.getCmdType().name());
+ .getHandler(omRequest.getCmdType().name());
return getClientRequest(requestClass, omRequest);
}
}
@@ -141,7 +141,7 @@ public final class OzoneManagerRatisUtils {
}
}
Class<? extends OMClientRequest> requestClass =
- om.getVersionManager().getRequestHandler(requestType);
+ om.getVersionManager().getHandler(requestType);
return getClientRequest(requestClass, omRequest);
}
@@ -161,7 +161,7 @@ public final class OzoneManagerRatisUtils {
String requestType = hasQuota ? OMVolumeSetQuotaRequest.getRequestType() :
OMVolumeSetOwnerRequest.getRequestType();
Class<? extends OMClientRequest> requestClass =
- om.getVersionManager().getRequestHandler(requestType);
+ om.getVersionManager().getHandler(requestType);
return getClientRequest(requestClass, omRequest);
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java
index dbc0259..ad0af55 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java
@@ -20,7 +20,11 @@ package org.apache.hadoop.ozone.om.upgrade;
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.NOT_SUPPORTED_OPERATION;
+import java.lang.reflect.Method;
+
+import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.protocolPB.OzoneManagerRequestHandler;
import org.apache.hadoop.ozone.upgrade.LayoutFeature;
import org.apache.hadoop.ozone.upgrade.LayoutVersionManager;
import org.aspectj.lang.JoinPoint;
@@ -37,12 +41,28 @@ import org.aspectj.lang.reflect.MethodSignature;
@Aspect
public class OMLayoutFeatureAspect {
+ public static final String GET_VERSION_MANAGER_METHOD_NAME =
+ "getOmVersionManager";
+
@Before("@annotation(DisallowedUntilLayoutVersion) && execution(* *(..))")
public void checkLayoutFeature(JoinPoint joinPoint) throws Throwable {
String featureName = ((MethodSignature) joinPoint.getSignature())
.getMethod().getAnnotation(DisallowedUntilLayoutVersion.class)
.value().name();
- LayoutVersionManager lvm = OMLayoutVersionManagerImpl.getInstance();
+ LayoutVersionManager lvm = null;
+ if (joinPoint.getTarget() instanceof OzoneManagerRequestHandler) {
+ OzoneManager ozoneManager = ((OzoneManagerRequestHandler)
+ joinPoint.getTarget()).getOzoneManager();
+ lvm = ozoneManager.getVersionManager();
+ } else {
+ try {
+ Method method = joinPoint.getTarget().getClass()
+ .getMethod(GET_VERSION_MANAGER_METHOD_NAME);
+ lvm = (LayoutVersionManager) method.invoke(joinPoint.getTarget());
+ } catch (Exception ex) {
+ lvm = new OMLayoutVersionManager();
+ }
+ }
if (!lvm.isAllowed(featureName)) {
LayoutFeature layoutFeature = lvm.getFeature(featureName);
throw new OMException(String.format("Operation %s cannot be invoked " +
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java
index 18e69cd..1f6d470 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java
@@ -20,6 +20,14 @@ package org.apache.hadoop.ozone.om.upgrade;
import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.ERASURE_CODING;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.ozone.om.OMStorage;
+import org.apache.hadoop.ozone.upgrade.LayoutVersionManager;
+
/**
* Test util class. To be removed.
*/
@@ -45,5 +53,15 @@ public class OMLayoutFeatureUtil {
// Blah Blah Basic Blah....
return "basic";
}
+
+ // Needed for the Aspect.
+ public LayoutVersionManager getOmVersionManager() throws IOException {
+ OzoneConfiguration configuration = new OzoneConfiguration();
+ Path tempDirWithPrefix = Files.createTempDirectory("TestAspect");
+ configuration.set("ozone.metadata.dirs",
+ tempDirWithPrefix.toAbsolutePath().toString());
+ return new OMLayoutVersionManager(new OMStorage(configuration));
+ }
+
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutVersionManagerImpl.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutVersionManager.java
similarity index 80%
rename from
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutVersionManagerImpl.java
rename to
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutVersionManager.java
index 4a25d50..e62c629 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutVersionManagerImpl.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutVersionManager.java
@@ -33,7 +33,6 @@ import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.request.OMClientRequest;
import org.apache.hadoop.ozone.upgrade.AbstractLayoutVersionManager;
import org.apache.hadoop.ozone.upgrade.LayoutVersionInstanceFactory;
-import org.apache.hadoop.ozone.upgrade.LayoutVersionManager;
import org.apache.hadoop.ozone.upgrade.VersionFactoryKey;
import org.reflections.Reflections;
import org.reflections.scanners.SubTypesScanner;
@@ -47,48 +46,26 @@ import com.google.common.annotations.VisibleForTesting;
/**
* Class to manage layout versions and features for Ozone Manager.
*/
-public final class OMLayoutVersionManagerImpl
- extends AbstractLayoutVersionManager<OMLayoutFeature>
- implements OmLayoutVersionManager {
+public final class OMLayoutVersionManager
+ extends AbstractLayoutVersionManager<OMLayoutFeature> {
private static final Logger LOG =
- LoggerFactory.getLogger(OMLayoutVersionManagerImpl.class);
+ LoggerFactory.getLogger(OMLayoutVersionManager.class);
private static final String OM_REQUEST_CLASS_PACKAGE =
"org.apache.hadoop.ozone.om.request";
- private static OMLayoutVersionManagerImpl omVersionManager;
private LayoutVersionInstanceFactory<Class<? extends OMClientRequest>>
requestFactory;
- private OMLayoutVersionManagerImpl() {
+ public OMLayoutVersionManager(OMStorage omStorage) throws OMException {
requestFactory = new LayoutVersionInstanceFactory<>();
+ init(omStorage);
}
- /**
- * Read only instance to OM Version Manager.
- * @return version manager instance.
- */
- public static synchronized LayoutVersionManager getInstance() {
- if (omVersionManager == null) {
- throw new RuntimeException("OM Layout Version Manager not yet " +
- "initialized.");
- }
- return omVersionManager;
- }
-
-
- /**
- * Initialize OM version manager from storage.
- * @return version manager instance.
- */
- public static synchronized OMLayoutVersionManagerImpl initialize(
- OMStorage omStorage)
- throws OMException {
- if (omVersionManager == null) {
- omVersionManager = new OMLayoutVersionManagerImpl();
- omVersionManager.init(omStorage);
- }
- return omVersionManager;
+ public OMLayoutVersionManager() throws IOException {
+ requestFactory = new LayoutVersionInstanceFactory<>();
+ OMLayoutFeature[] features = OMLayoutFeature.values();
+ init(features[features.length - 1].layoutVersion(), features);
}
/**
@@ -110,14 +87,6 @@ public final class OMLayoutVersionManagerImpl
registerOzoneManagerRequests();
}
- @VisibleForTesting
- protected synchronized static void resetLayoutVersionManager() {
- if (omVersionManager != null) {
- omVersionManager.reset();
- omVersionManager = null;
- }
- }
-
public void reset() {
requestFactory = null;
super.reset();
@@ -182,7 +151,7 @@ public final class OMLayoutVersionManagerImpl
* @return class type.
*/
@Override
- public Class<? extends OMClientRequest> getRequestHandler(String type) {
+ public Class<? extends OMClientRequest> getHandler(String type) {
VersionFactoryKey versionFactoryKey = new VersionFactoryKey.Builder()
.key(type).build();
return requestFactory.get(this, versionFactoryKey);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMUpgradeFinalizer.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMUpgradeFinalizer.java
index 0850cf1..2e634fd 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMUpgradeFinalizer.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMUpgradeFinalizer.java
@@ -32,10 +32,10 @@ import
org.apache.hadoop.ozone.upgrade.BasicUpgradeFinalizer;
* UpgradeFinalizer implementation for the Ozone Manager service.
*/
public class OMUpgradeFinalizer extends BasicUpgradeFinalizer<OzoneManager,
- OMLayoutVersionManagerImpl> {
+ OMLayoutVersionManager> {
private static final OmUpgradeAction NOOP = a -> {};
- public OMUpgradeFinalizer(OMLayoutVersionManagerImpl versionManager) {
+ public OMUpgradeFinalizer(OMLayoutVersionManager versionManager) {
super(versionManager);
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OmLayoutVersionManager.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OmLayoutVersionManager.java
deleted file mode 100644
index 51b5c6c..0000000
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OmLayoutVersionManager.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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.om.upgrade;
-
-import org.apache.hadoop.ozone.om.request.OMClientRequest;
-import org.apache.hadoop.ozone.upgrade.LayoutVersionManager;
-
-/**
- * Read only Interface for OM Layout Version Management.
- */
-public interface OmLayoutVersionManager extends LayoutVersionManager {
- Class<? extends OMClientRequest> getRequestHandler(String requestType);
-}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
index eb5c1c7..10e23ed 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
@@ -637,7 +637,7 @@ public class OzoneManagerRequestHandler implements
RequestHandler {
.setCurrentTxnIndex(prepareState.getIndex()).build();
}
- protected OzoneManager getOzoneManager() {
+ public OzoneManager getOzoneManager() {
return impl;
}
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestBucketRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestBucketRequest.java
index 012f2c9..c4b1923 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestBucketRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestBucketRequest.java
@@ -19,7 +19,7 @@
package org.apache.hadoop.ozone.om.request.bucket;
-import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManagerImpl;
+import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -73,7 +73,7 @@ public class TestBucketRequest {
when(ozoneManager.getMetrics()).thenReturn(omMetrics);
when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager);
when(ozoneManager.isRatisEnabled()).thenReturn(true);
- OMLayoutVersionManagerImpl lvm = mock(OMLayoutVersionManagerImpl.class);
+ OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class);
when(lvm.getMetadataLayoutVersion()).thenReturn(0);
when(ozoneManager.getVersionManager()).thenReturn(lvm);
auditLogger = Mockito.mock(AuditLogger.class);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
index 9c2ad92..a099e3e 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
@@ -30,7 +30,7 @@ import org.apache.hadoop.ozone.om.KeyManager;
import org.apache.hadoop.ozone.om.KeyManagerImpl;
import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
import org.apache.hadoop.ozone.om.request.OMClientRequest;
-import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManagerImpl;
+import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
import org.junit.After;
import org.junit.Before;
@@ -115,7 +115,7 @@ public class TestOMKeyRequest {
when(ozoneManager.getMetrics()).thenReturn(omMetrics);
when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager);
when(ozoneManager.getConfiguration()).thenReturn(ozoneConfiguration);
- OMLayoutVersionManagerImpl lvm = mock(OMLayoutVersionManagerImpl.class);
+ OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class);
when(lvm.getMetadataLayoutVersion()).thenReturn(0);
when(ozoneManager.getVersionManager()).thenReturn(lvm);
when(ozoneManager.isRatisEnabled()).thenReturn(true);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/volume/TestOMVolumeRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/volume/TestOMVolumeRequest.java
index c2486db..bdec623 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/volume/TestOMVolumeRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/volume/TestOMVolumeRequest.java
@@ -29,7 +29,7 @@ import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerDoubleBufferHelper;
-import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManagerImpl;
+import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos
.CreateVolumeRequest;
@@ -78,7 +78,7 @@ public class TestOMVolumeRequest {
when(ozoneManager.getMetrics()).thenReturn(omMetrics);
when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager);
when(ozoneManager.getMaxUserVolumeCount()).thenReturn(10L);
- OMLayoutVersionManagerImpl lvm = mock(OMLayoutVersionManagerImpl.class);
+ OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class);
when(lvm.getMetadataLayoutVersion()).thenReturn(0);
when(ozoneManager.getVersionManager()).thenReturn(lvm);
when(ozoneManager.isRatisEnabled()).thenReturn(true);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java
index d37d0e7..eedb896 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.ozone.om.OMStorage;
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.junit.Assert;
import org.junit.Before;
@@ -56,7 +55,6 @@ public class TestOMLayoutFeatureAspect {
*/
@Test
public void testCheckLayoutFeature() throws Exception {
- OMLayoutVersionManagerImpl.initialize(new OMStorage(configuration));
OMLayoutFeatureUtil testObj = new OMLayoutFeatureUtil();
try {
testObj.ecMethod();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java
index f185f8c..2a33004 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java
@@ -67,7 +67,7 @@ public class TestOMUpgradeFinalizer {
private static final String OTHER_CLIENT_ID = "otherClientID";
@Mock
- private OMLayoutVersionManagerImpl versionManager;
+ private OMLayoutVersionManager versionManager;
@Rule
public ExpectedException exception = ExpectedException.none();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMVersionManager.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMVersionManager.java
index 3829ead..1411caf 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMVersionManager.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMVersionManager.java
@@ -21,7 +21,7 @@ package org.apache.hadoop.ozone.om.upgrade;
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.NOT_SUPPORTED_OPERATION;
import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.ERASURE_CODING;
import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.INITIAL_VERSION;
-import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManagerImpl.getRequestClasses;
+import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager.getRequestClasses;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -40,7 +40,6 @@ import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.request.OMClientRequest;
import org.apache.hadoop.ozone.om.request.UnsupportedMockNewOMRequest;
import org.apache.hadoop.test.GenericTestUtils;
-import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
@@ -49,17 +48,12 @@ import org.junit.Test;
*/
public class TestOMVersionManager {
- @After
- public void cleanup() {
- OMLayoutVersionManagerImpl.resetLayoutVersionManager();
- }
-
@Test
public void testOMLayoutVersionManager() throws IOException {
OMStorage omStorage = mock(OMStorage.class);
when(omStorage.getLayoutVersion()).thenReturn(0);
- OMLayoutVersionManagerImpl omVersionManager =
- OMLayoutVersionManagerImpl.initialize(omStorage);
+ OMLayoutVersionManager omVersionManager =
+ new OMLayoutVersionManager(omStorage);
OzoneManager om = mock(OzoneManager.class);
when(om.getOmStorage()).thenReturn(omStorage);
@@ -82,7 +76,8 @@ public class TestOMVersionManager {
OMLayoutFeature.values()[OMLayoutFeature.values().length - 1]
.layoutVersion() + 1);
try {
- OMLayoutVersionManagerImpl.initialize(omStorage);
+ OMLayoutVersionManager omVersionManager =
+ new OMLayoutVersionManager(omStorage);
Assert.fail();
} catch (OMException ex) {
assertEquals(NOT_SUPPORTED_OPERATION, ex.getResult());
@@ -90,20 +85,6 @@ public class TestOMVersionManager {
}
@Test
- public void testOMLayoutVersionManagerReset() throws IOException {
- OMStorage omStorage = mock(OMStorage.class);
- when(omStorage.getLayoutVersion()).thenReturn(0);
- OMLayoutVersionManagerImpl omVersionManager =
- OMLayoutVersionManagerImpl.initialize(omStorage);
- int numLayoutVersions = OMLayoutFeature.values().length;
- assertEquals(
- OMLayoutFeature.values()[numLayoutVersions - 1].layoutVersion(),
- omVersionManager.getSoftwareLayoutVersion());
- OMLayoutVersionManagerImpl.resetLayoutVersionManager();
- assertEquals(0, omVersionManager.getSoftwareLayoutVersion());
- }
-
- @Test
public void testOMLayoutFeatureCatalog() {
OMLayoutFeature[] values = OMLayoutFeature.values();
int currVersion = Integer.MIN_VALUE;
@@ -148,14 +129,14 @@ public class TestOMVersionManager {
public void testCannotGetUnsupportedOmRequest() throws OMException {
OMStorage omStorage = mock(OMStorage.class);
when(omStorage.getLayoutVersion()).thenReturn(0);
- OMLayoutVersionManagerImpl omVersionManager =
- OMLayoutVersionManagerImpl.initialize(omStorage);
+ OMLayoutVersionManager omVersionManager =
+ new OMLayoutVersionManager(omStorage);
OzoneManager om = mock(OzoneManager.class);
when(om.getOmStorage()).thenReturn(omStorage);
Class<? extends OMClientRequest> requestHandler;
try {
- requestHandler = omVersionManager.getRequestHandler(
+ requestHandler = omVersionManager.getHandler(
UnsupportedMockNewOMRequest.class.getSimpleName());
Assert.fail();
} catch (IllegalArgumentException ex) {
@@ -164,7 +145,7 @@ public class TestOMVersionManager {
}
omVersionManager.unfinalizedFeatures().forEach(omVersionManager::finalized);
- requestHandler = omVersionManager.getRequestHandler(
+ requestHandler = omVersionManager.getHandler(
UnsupportedMockNewOMRequest.class.getSimpleName());
Assert.assertNotNull(requestHandler);
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOmVersionManagerRequestFactory.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOmVersionManagerRequestFactory.java
index 5117a4c..40d14d7 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOmVersionManagerRequestFactory.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOmVersionManagerRequestFactory.java
@@ -47,14 +47,14 @@ import org.reflections.Reflections;
*/
public class TestOmVersionManagerRequestFactory {
- private static OMLayoutVersionManagerImpl omVersionManager;
+ private static OMLayoutVersionManager omVersionManager;
private static OzoneManager om;
@BeforeClass
public static void setup() throws OMException {
OMStorage omStorage = mock(OMStorage.class);
when(omStorage.getLayoutVersion()).thenReturn(0);
- omVersionManager = OMLayoutVersionManagerImpl.initialize(omStorage);
+ omVersionManager = new OMLayoutVersionManager(omStorage);
om = mock(OzoneManager.class);
when(om.getOmStorage()).thenReturn(omStorage);
}
@@ -64,7 +64,7 @@ public class TestOmVersionManagerRequestFactory {
// Try getting v1 of 'CreateKey'.
Class<? extends OMClientRequest> requestType =
- omVersionManager.getRequestHandler(CreateKey.name());
+ omVersionManager.getHandler(CreateKey.name());
Assert.assertEquals(requestType, OMKeyCreateRequest.class);
// Finalize the version manager.
@@ -72,7 +72,7 @@ public class TestOmVersionManagerRequestFactory {
f.finalize("random", om);
// Try getting 'CreateKey' again. Should return CreateECKey.
- requestType = omVersionManager.getRequestHandler(CreateKey.name());
+ requestType = omVersionManager.getHandler(CreateKey.name());
Assert.assertEquals(requestType, OMMockECKeyCreateRequest.class);
}
@@ -102,7 +102,7 @@ public class TestOmVersionManagerRequestFactory {
}
String type = (String) getRequestTypeMethod.invoke(null);
Assert.assertNotNull(String.format("Cannot get handler for %s", type),
- omVersionManager.getRequestHandler(type));
+ omVersionManager.getHandler(type));
}
}
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 15ac8e6..f413ec3 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
@@ -104,8 +104,8 @@ public class ReconStorageContainerManagerFacade
dbStore = DBStoreBuilder
.createDBStore(ozoneConfiguration, new ReconSCMDBDefinition());
- this.scmLayoutVersionManager = HDDSLayoutVersionManager
- .initialize(this.scmStorageConfig);
+ this.scmLayoutVersionManager =
+ new HDDSLayoutVersionManager(scmStorageConfig);
this.nodeManager =
new ReconNodeManager(conf, scmStorageConfig, eventQueue, clusterMap,
ReconSCMDBDefinition.NODES.getTable(dbStore),
diff --git
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconNodeManager.java
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconNodeManager.java
index c0c973b..c39b714 100644
---
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconNodeManager.java
+++
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/scm/TestReconNodeManager.java
@@ -63,7 +63,7 @@ public class TestReconNodeManager {
temporaryFolder.newFolder().getAbsolutePath());
conf.set(OZONE_SCM_NAMES, "localhost");
reconStorageConfig = new ReconStorageConfig(conf);
- versionManager = HDDSLayoutVersionManager.initialize(reconStorageConfig);
+ versionManager = new HDDSLayoutVersionManager(reconStorageConfig);
store = DBStoreBuilder.createDBStore(conf, new ReconSCMDBDefinition());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]