This is an automated email from the ASF dual-hosted git repository.
adoroszlai 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 45eb9d4ba6 HDDS-8914. Datanode may fail to start due to duplicate
VolumeInfoMetrics (#4966)
45eb9d4ba6 is described below
commit 45eb9d4ba6124efa4776c48d402ecb268dcaaf9e
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Mon Jun 26 20:38:17 2023 +0200
HDDS-8914. Datanode may fail to start due to duplicate VolumeInfoMetrics
(#4966)
---
.../apache/hadoop/ozone/container/common/volume/DbVolume.java | 4 ++--
.../ozone/container/common/volume/MutableVolumeSet.java | 10 +++++++---
.../hadoop/ozone/container/common/volume/StorageVolume.java | 11 ++++++++++-
3 files changed, 19 insertions(+), 6 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/DbVolume.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/DbVolume.java
index 0a13069954..2a762b2387 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/DbVolume.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/DbVolume.java
@@ -66,8 +66,8 @@ public class DbVolume extends StorageVolume {
}
@Override
- protected void initialize() throws IOException {
- super.initialize();
+ protected void initializeImpl() throws IOException {
+ super.initializeImpl();
scanForDbStorePaths();
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/MutableVolumeSet.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/MutableVolumeSet.java
index 02f4c6f101..863f50de52 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/MutableVolumeSet.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/MutableVolumeSet.java
@@ -166,10 +166,11 @@ public class MutableVolumeSet implements VolumeSet {
}
for (String locationString : rawLocations) {
+ StorageVolume volume = null;
try {
StorageLocation location = StorageLocation.parse(locationString);
- StorageVolume volume = volumeFactory.createVolume(
+ volume = volumeFactory.createVolume(
location.getUri().getPath(), location.getStorageType());
LOG.info("Added Volume : {} to VolumeSet",
@@ -183,8 +184,11 @@ public class MutableVolumeSet implements VolumeSet {
volumeMap.put(volume.getStorageDir().getPath(), volume);
volumeStateMap.get(volume.getStorageType()).add(volume);
} catch (IOException e) {
- StorageVolume volume =
- volumeFactory.createFailedVolume(locationString);
+ if (volume != null) {
+ volume.shutdown();
+ }
+
+ volume = volumeFactory.createFailedVolume(locationString);
failedVolumeMap.put(locationString, volume);
LOG.error("Failed to parse the storage location: " + locationString,
e);
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/StorageVolume.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/StorageVolume.java
index bd79c740bd..8141c57055 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/StorageVolume.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/StorageVolume.java
@@ -153,7 +153,16 @@ public abstract class StorageVolume
* otherwise returns with IOException.
* @throws IOException
*/
- protected void initialize() throws IOException {
+ protected final void initialize() throws IOException {
+ try {
+ initializeImpl();
+ } catch (Exception e) {
+ shutdown();
+ throw e;
+ }
+ }
+
+ protected void initializeImpl() throws IOException {
VolumeState intialVolumeState = analyzeVolumeState();
switch (intialVolumeState) {
case NON_EXISTENT:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]