Attila Doroszlai created HDDS-8914:
--------------------------------------

             Summary: Datanode may fail to start due to duplicate 
VolumeInfoMetrics
                 Key: HDDS-8914
                 URL: https://issues.apache.org/jira/browse/HDDS-8914
             Project: Apache Ozone
          Issue Type: Bug
          Components: Ozone Datanode
            Reporter: Attila Doroszlai
            Assignee: Attila Doroszlai


{code:title=https://github.com/apache/ozone/blob/d66d15fbea56b1e1d3c9dd5c2c55707bb34dd24d/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/MutableVolumeSet.java#L169-L190}
      try {
        StorageLocation location = StorageLocation.parse(locationString);


        StorageVolume volume = volumeFactory.createVolume(
            location.getUri().getPath(), location.getStorageType());


        LOG.info("Added Volume : {} to VolumeSet",
            volume.getStorageDir().getPath());


        if (!volume.getStorageDir().mkdirs() &&
            !volume.getStorageDir().exists()) {
          throw new IOException("Failed to create storage dir " +
              volume.getStorageDir());
        }
        volumeMap.put(volume.getStorageDir().getPath(), volume);
        volumeStateMap.get(volume.getStorageType()).add(volume);
      } catch (IOException e) {
        StorageVolume volume =
            volumeFactory.createFailedVolume(locationString);
        failedVolumeMap.put(locationString, volume);
        LOG.error("Failed to parse the storage location: " + locationString, e);
      }
{code}

Any {{IOException}} thrown after {{volumeFactory.createVolume}} results in the 
creation of another, failed volume for the same dir 
({{volumeFactory.createFailedVolume}}).

Metrics is registered for each {{HddsVolume}} in its constructor.  The metrics 
for the original volume should be unregistered, otherwise we get:

{code}
MetricsException: Metrics source VolumeInfoMetrics-/data/hdds/... already exists
{code}

and datanode fails to start.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to