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]