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

kturner pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/2.1 by this push:
     new 14b63d9312 fixes ConcurrentModificationExceptions in Migrations class 
(#5523)
14b63d9312 is described below

commit 14b63d93121a0733ee6aa4b50e8b49be57971bad
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Mon May 5 12:13:06 2025 -0400

    fixes ConcurrentModificationExceptions in Migrations class (#5523)
---
 .../src/main/java/org/apache/accumulo/manager/Migrations.java  | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/Migrations.java 
b/server/manager/src/main/java/org/apache/accumulo/manager/Migrations.java
index 68c7103960..55a2a4218e 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Migrations.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Migrations.java
@@ -100,13 +100,19 @@ public class Migrations {
   }
 
   public Set<KeyExtent> snapshot(DataLevel dl) {
-    return Set.copyOf(migrations.get(dl).keySet());
+    var migrationsForLevel = migrations.get(dl);
+    synchronized (migrationsForLevel) {
+      return Set.copyOf(migrationsForLevel.keySet());
+    }
   }
 
   public Map<DataLevel,Set<KeyExtent>> mutableCopy() {
     Map<DataLevel,Set<KeyExtent>> copy = new EnumMap<>(DataLevel.class);
     for (var dataLevel : DataLevel.values()) {
-      copy.put(dataLevel, new HashSet<>(migrations.get(dataLevel).keySet()));
+      var migrationsForLevel = migrations.get(dataLevel);
+      synchronized (migrationsForLevel) {
+        copy.put(dataLevel, new HashSet<>(migrationsForLevel.keySet()));
+      }
     }
     return copy;
   }

Reply via email to