SLIDER-1156: outstanding request tracker edits a map while iterating over it. Fix had to turn off disk space checking in minidfs clusters...my laptop has run out of HDD space
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/OutstandingRequestTracker.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/OutstandingRequestTracker.java
index 64698f2..c16aa3c 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/OutstandingRequestTracker.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/OutstandingRequestTracker.java
@@ -402,16 +402,21 @@
List<AbstractRMOperation> operations = new ArrayList<>();
// first, all placed requests
+ List<RoleHostnamePair> requestsToRemove = new ArrayList<>(placedRequests.size());
for (Map.Entry<RoleHostnamePair, OutstandingRequest> entry : placedRequests.entrySet()) {
OutstandingRequest outstandingRequest = entry.getValue();
synchronized (outstandingRequest) {
if (outstandingRequest.isAntiAffine()) {
// time to escalate
operations.add(outstandingRequest.createCancelOperation());
- placedRequests.remove(entry.getKey());
+ requestsToRemove.add(entry.getKey());
}
}
}
+ for (RoleHostnamePair keys : requestsToRemove) {
+ placedRequests.remove(keys);
+ }
+
// second, all open requests
ListIterator<OutstandingRequest> orit = openRequests.listIterator();
while (orit.hasNext()) {
diff --git a/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy b/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
index faaf571..feac252 100644
--- a/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
@@ -303,6 +303,7 @@
YarnConfiguration.NM_MAX_PER_DISK_UTILIZATION_PERCENTAGE,
99.0f)
conf.setInt(SliderXmlConfKeys.DFS_NAMENODE_DU_RESERVED_KEY, 2 * 1024 * 1024)
+ conf.setBoolean("yarn.nodemanager.disk-health-checker.enable", false)
}
/**