}
context.setDirToTaskMap(newbigKeysDirToTaskMap);
conditionalTask.setResolverCtx(context);
} else if (resolver instanceof ConditionalResolverCommonJoin) {
// get bigKeysDirToTaskMap
ConditionalResolverCommonJoinCtx context = (ConditionalResolverCommonJoinCtx) conditionalTask
.getResolverCtx();
HashMap<Task<? extends Serializable>, Set<String>> taskToAliases = context.getTaskToAliases();
// to avoid concurrent modify the hashmap
HashMap<Task<? extends Serializable>, Set<String>> newTaskToAliases =
new HashMap<Task<? extends Serializable>, Set<String>>();
// reset the resolver
for (Map.Entry<Task<? extends Serializable>, Set<String>> entry : taskToAliases.entrySet()) {
Task<? extends Serializable> task = entry.getKey();
Set<String> key = new HashSet<String>(entry.getValue());
if (task.equals(currTask)) {
newTaskToAliases.put(localTask, key);
} else {
newTaskToAliases.put(task, key);
}
}
context.setTaskToAliases(newTaskToAliases);
conditionalTask.setResolverCtx(context);
}
}
}
// make current task depends on this new generated localMapJoinTask