Skip to content

Commit c8a860c

Browse files
committed
new: more validation
1 parent 630bb4f commit c8a860c

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

src/main/java/com/ishland/flowsched/scheduler/ItemHolder.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,11 +345,27 @@ void validateCompletedFutures(ItemStatus<K, V, Ctx> current) {
345345
}
346346
}
347347

348+
void validateAllFutures() {
349+
synchronized (this) {
350+
for (int i = this.unloadedStatus.ordinal() + 1; i < this.futures.length; i++) {
351+
CompletableFuture<Void> future = this.futures[i];
352+
if (i <= this.getStatus().ordinal()) {
353+
Assertions.assertTrue(future.isDone(), "Future for loaded status must be completed");
354+
}
355+
if (i <= this.getTargetStatus().ordinal()) {
356+
Assertions.assertTrue(future != UNLOADED_FUTURE, "Future for requested status cannot be UNLOADED_FUTURE");
357+
} else {
358+
Assertions.assertTrue(future == UNLOADED_FUTURE, "Future for non-requested status must be UNLOADED_FUTURE");
359+
}
360+
}
361+
}
362+
}
363+
348364
void validateRequestedFutures(ItemStatus<K, V, Ctx> current) {
349365
synchronized (this) {
350366
for (int i = this.unloadedStatus.ordinal() + 1; i <= current.ordinal(); i++) {
351367
CompletableFuture<Void> future = this.futures[i];
352-
Assertions.assertTrue(future != UNLOADED_FUTURE, "Future for loaded status cannot be UNLOADED_FUTURE");
368+
Assertions.assertTrue(future != UNLOADED_FUTURE, "Future for requested status cannot be UNLOADED_FUTURE");
353369
}
354370
}
355371
}

src/main/java/com/ishland/flowsched/scheduler/StatusAdvancingScheduler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ void tickHolder0(ItemHolder<K, V, Ctx, UserData> holder) {
113113
// holder.sanitizeSetStatus = null;
114114
if (nextStatus == current) {
115115
holder.flushUnloadedStatus(current);
116-
holder.validateCompletedFutures(current);
116+
holder.validateAllFutures();
117117
if (current.equals(getUnloadedStatus())) {
118118
if (holder.isDependencyDirty()) {
119119
holder.executeCriticalSectionAndBusy(() -> holder.cleanupDependencies(this));

0 commit comments

Comments
 (0)