This is an automated email from the ASF dual-hosted git repository.

weichiu 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 3201ca4e32 HDDS-12952. Make OmSnapshotManager#snapshotLimitCheck 
thread-safe and consistent (#8381)
3201ca4e32 is described below

commit 3201ca4e32b5f23b1ab41e72a3952ce6dac9b118
Author: Peter Lee <[email protected]>
AuthorDate: Sun May 4 02:44:46 2025 +0800

    HDDS-12952. Make OmSnapshotManager#snapshotLimitCheck thread-safe and 
consistent (#8381)
---
 .../java/org/apache/hadoop/ozone/om/OmSnapshotManager.java     | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
index 7882710422..7b6b9bab4f 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmSnapshotManager.java
@@ -872,10 +872,16 @@ private void validateSnapshotsExistAndActive(final String 
volumeName,
   public void snapshotLimitCheck() throws IOException, OMException {
     OmMetadataManagerImpl omMetadataManager = (OmMetadataManagerImpl) 
ozoneManager.getMetadataManager();
     SnapshotChainManager snapshotChainManager = 
omMetadataManager.getSnapshotChainManager();
-    int currentSnapshotNum = 
snapshotChainManager.getGlobalSnapshotChain().size();
 
-    AtomicReference<OMException> exceptionRef = new AtomicReference<>(null);
+    AtomicReference<IOException> exceptionRef = new AtomicReference<>(null);
     inFlightSnapshotCount.updateAndGet(count -> {
+      int currentSnapshotNum = 0;
+      try {
+        currentSnapshotNum = 
snapshotChainManager.getGlobalSnapshotChain().size();
+      } catch (IOException e) {
+        exceptionRef.set(e);
+        return count;
+      }
       if (currentSnapshotNum + count >= fsSnapshotMaxLimit) {
         exceptionRef.set(new OMException(
             String.format("Snapshot limit of %d reached. Cannot create more 
snapshots. " +


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

Reply via email to