You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2012/01/27 21:35:28 UTC
svn commit: r1236873 -
/incubator/accumulo/branches/1.3/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
Author: ecn
Date: Fri Jan 27 20:35:27 2012
New Revision: 1236873
URL: http://svn.apache.org/viewvc?rev=1236873&view=rev
Log:
ACCUMULO-352 make copies of the migrations set whenever iterating over it
Modified:
incubator/accumulo/branches/1.3/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
Modified: incubator/accumulo/branches/1.3/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.3/src/server/src/main/java/org/apache/accumulo/server/master/Master.java?rev=1236873&r1=1236872&r2=1236873&view=diff
==============================================================================
--- incubator/accumulo/branches/1.3/src/server/src/main/java/org/apache/accumulo/server/master/Master.java (original)
+++ incubator/accumulo/branches/1.3/src/server/src/main/java/org/apache/accumulo/server/master/Master.java Fri Jan 27 20:35:27 2012
@@ -1246,7 +1246,10 @@ public class Master implements Listener,
found.add(extent);
}
}
- Set<KeyExtent> notFound = new HashSet<KeyExtent>(migrations.keySet());
+ Set<KeyExtent> notFound = new HashSet<KeyExtent>();
+ synchronized (migrations) {
+ notFound.addAll(migrations.keySet());
+ }
notFound.remove(found);
for (KeyExtent extent : notFound) {
log.info("Canceling migration of " + extent + " to " + migrations.get(extent) + ": tablet no longer exists (probably due to a split)");
@@ -1371,7 +1374,11 @@ public class Master implements Listener,
private long balanceTablets() {
List<TabletMigration> migrationsOut = new ArrayList<TabletMigration>();
- long wait = tabletBalancer.balance(Collections.unmodifiableSortedMap(tserverStatus), Collections.unmodifiableSet(migrations.keySet()), migrationsOut);
+ Set<KeyExtent> migrationsCopy = new HashSet<KeyExtent>();
+ synchronized (migrations) {
+ migrationsCopy.addAll(migrations.keySet());
+ }
+ long wait = tabletBalancer.balance(Collections.unmodifiableSortedMap(tserverStatus), Collections.unmodifiableSet(migrationsCopy), migrationsOut);
for (TabletMigration m : TabletBalancer.checkMigrationSanity(tserverStatus.keySet(), migrationsOut)) {
if (migrations.containsKey(m.tablet)) {