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