in hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/Runnability.java [46:99]
public static Runnability getWorstCase(Runnability r1, Runnability r2) {
switch (r1.tag) {
case COMPLETED:
switch (r2.tag) {
case COMPLETED:
case NOT_RUNNABLE:
case RUNNABLE:
case RUNNING:
return r2;
}
break;
case NOT_RUNNABLE:
switch (r2.tag) {
case COMPLETED:
case NOT_RUNNABLE:
case RUNNABLE:
case RUNNING:
return r1;
}
break;
case RUNNABLE:
switch (r2.tag) {
case COMPLETED:
return r1;
case RUNNING:
return r1.priority > 0 ? r1 : new Runnability(Tag.RUNNABLE, 1);
case NOT_RUNNABLE:
return r2;
case RUNNABLE:
return r1.priority > r2.priority ? r1 : r2;
}
break;
case RUNNING:
switch (r2.tag) {
case COMPLETED:
case RUNNING:
return r1;
case NOT_RUNNABLE:
return r2;
case RUNNABLE:
return r2.priority > 0 ? r2 : new Runnability(Tag.RUNNABLE, 1);
}
break;
}
throw new IllegalArgumentException("Could not aggregate: " + r1 + " and " + r2);
}