Skip to content

Commit cea9b16

Browse files
theghost5800mheath
authored andcommitted
Fix waitForCompletion polling
Later in v3 job object was added state POLLING related with async operations with service brokers. The check of job state doesn't handle properly POLLING status and doesn't wait at all.
1 parent d9fd30a commit cea9b16

File tree

1 file changed

+5
-1
lines changed
  • cloudfoundry-util/src/main/java/org/cloudfoundry/util

1 file changed

+5
-1
lines changed

cloudfoundry-util/src/main/java/org/cloudfoundry/util/JobUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
import reactor.core.publisher.Mono;
3131

3232
import java.time.Duration;
33+
import java.util.EnumSet;
3334
import java.util.List;
35+
import java.util.Set;
3436

3537
import static org.cloudfoundry.util.DelayUtils.exponentialBackOff;
3638

@@ -39,6 +41,8 @@
3941
*/
4042
public final class JobUtils {
4143

44+
private static final Set<JobState> FINAL_STATES = EnumSet.of(JobState.COMPLETE, JobState.FAILED);
45+
4246
private static final Integer STATUS_OK = 200;
4347

4448
private JobUtils() {
@@ -92,7 +96,7 @@ public static Mono<Void> waitForCompletion(CloudFoundryClient cloudFoundryClient
9296
*/
9397
public static Mono<Void> waitForCompletion(CloudFoundryClient cloudFoundryClient, Duration completionTimeout, String jobId) {
9498
return requestJobV3(cloudFoundryClient, jobId)
95-
.filter(job -> JobState.PROCESSING != job.getState())
99+
.filter(job -> FINAL_STATES.contains(job.getState()))
96100
.repeatWhenEmpty(exponentialBackOff(Duration.ofSeconds(1), Duration.ofSeconds(15), completionTimeout))
97101
.filter(job -> JobState.FAILED == job.getState())
98102
.flatMap(JobUtils::getError);

0 commit comments

Comments
 (0)