final R lastBuild = getLastBuild(); if (lastBuild != null) { return new BlockedBecauseOfBuildInProgress(lastBuild); } else {
@Override public CauseOfBlockage getCauseOfBlockage() { if (isLogUpdated() && !isConcurrentBuild()) { WorkflowRun lastBuild = getLastBuild(); if (lastBuild != null) { return new BlockedBecauseOfBuildInProgress(lastBuild); } // else race condition, cf. AbstractProject } return null; }
@Override public CauseOfBlockage getCauseOfBlockage() { // Block builds until they are done with post-production if (isLogUpdated() && !isConcurrentBuild()) { final R lastBuild = getLastBuild(); if (lastBuild != null) { return new BlockedBecauseOfBuildInProgress(lastBuild); } else { // The build has been likely deleted after the isLogUpdated() call. // Another cause may be an API implementation glitсh in the implementation for AbstractProject. // Anyway, we should let the code go then. LOGGER.log(Level.FINE, "The last build has been deleted during the non-concurrent cause creation. The build is not blocked anymore"); } } if (blockBuildWhenDownstreamBuilding()) { AbstractProject<?,?> bup = getBuildingDownstream(); if (bup!=null) return new BecauseOfDownstreamBuildInProgress(bup); } if (blockBuildWhenUpstreamBuilding()) { AbstractProject<?,?> bup = getBuildingUpstream(); if (bup!=null) return new BecauseOfUpstreamBuildInProgress(bup); } return null; }