TAJO-690: infinite loop occurs when rack task is assigning. (jinho)
diff --git a/CHANGES.txt b/CHANGES.txt
index bc8f299..d51dfcb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -276,6 +276,8 @@
BUG FIXES
+ TAJO-690: infinite loop occurs when rack task is assigning. (jinho)
+
TAJO-689: NoSuchElementException occurs during assigning the leaf tasks. (jinho)
TAJO-651: HcatalogStore should support (de)serialization of RCFile. (jinho)
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/DefaultTaskScheduler.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/DefaultTaskScheduler.java
index 91f9cea..28015d5 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/DefaultTaskScheduler.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/DefaultTaskScheduler.java
@@ -639,7 +639,6 @@
//find remaining local task
if (leafTasks.contains(attemptId)) {
leafTasks.remove(attemptId);
- leafTasksRackMapping.get(hostVolumeMapping.getRack()).remove(attemptId);
//LOG.info(attemptId + " Assigned based on host match " + hostName);
hostLocalAssigned++;
totalAssigned++;
@@ -669,9 +668,11 @@
for (HostVolumeMapping tasks : remainingTasks) {
while (tasks.getRemainingLocalTaskSize() > 0){
QueryUnitAttemptId tId = tasks.getQueryUnitAttemptIdByRack(rack);
+
+ if (tId == null) break;
+
if (leafTasks.contains(tId)) {
leafTasks.remove(tId);
- leafTasksRackMapping.get(rack).remove(tId);
attemptId = tId;
break;
}