提交 7871cb19 编写于 作者: C CloudBees DEV@Cloud

Merge commit 'fd97a2f5'

......@@ -192,6 +192,7 @@ public class BuildTrigger extends Recorder implements DependencyDeclarer {
public static boolean execute(AbstractBuild build, BuildListener listener) {
PrintStream logger = listener.getLogger();
// Check all downstream Project of the project, not just those defined by BuildTrigger
// TODO this may not yet be up to date if rebuildDependencyGraphAsync has been used; need a method to wait for the last call made before now to finish
final DependencyGraph graph = Jenkins.getInstance().getDependencyGraph();
List<Dependency> downstreamProjects = new ArrayList<Dependency>(
graph.getDownstreamDependencies(build.getProject()));
......
......@@ -3625,7 +3625,7 @@ public class Jenkins extends AbstractCIBase implements ModifiableTopLevelItemGro
*/
public Future<DependencyGraph> rebuildDependencyGraphAsync() {
dependencyGraphDirty.set(true);
return Timer.get().submit(new java.util.concurrent.Callable<DependencyGraph>() {
return Timer.get().schedule(new java.util.concurrent.Callable<DependencyGraph>() {
@Override
public DependencyGraph call() throws Exception {
if (dependencyGraphDirty.get()) {
......@@ -3633,7 +3633,7 @@ public class Jenkins extends AbstractCIBase implements ModifiableTopLevelItemGro
}
return dependencyGraph;
}
});
}, 500, TimeUnit.MILLISECONDS);
}
public DependencyGraph getDependencyGraph() {
......
......@@ -100,6 +100,8 @@ public class FingerprinterTest {
j.assertBuildStatusSuccess(upstream.scheduleBuild2(0).get());
j.assertBuildStatusSuccess(downstream.scheduleBuild2(0).get());
j.jenkins.rebuildDependencyGraph();
List<AbstractProject> downstreamProjects = upstream.getDownstreamProjects();
List<AbstractProject> upstreamProjects = downstream.getUpstreamProjects();
......@@ -118,6 +120,8 @@ public class FingerprinterTest {
j.assertBuildStatusSuccess(upstream2.scheduleBuild2(0).get());
j.assertBuildStatusSuccess(downstream.scheduleBuild2(0).get());
j.jenkins.rebuildDependencyGraph();
List<AbstractProject> downstreamProjects = upstream.getDownstreamProjects();
List<AbstractProject> downstreamProjects2 = upstream2.getDownstreamProjects();
List<AbstractProject> upstreamProjects = downstream.getUpstreamProjects();
......@@ -139,6 +143,8 @@ public class FingerprinterTest {
j.assertBuildStatusSuccess(downstream.scheduleBuild2(0).get());
j.assertBuildStatusSuccess(downstream2.scheduleBuild2(0).get());
j.jenkins.rebuildDependencyGraph();
List<AbstractProject> downstreamProjects = upstream.getDownstreamProjects();
List<AbstractProject> upstreamProjects = downstream.getUpstreamProjects();
List<AbstractProject> upstreamProjects2 = downstream2.getUpstreamProjects();
......@@ -176,6 +182,8 @@ public class FingerprinterTest {
j.assertBuildStatusSuccess(p.scheduleBuild2(0).get());
j.assertBuildStatusSuccess(p.scheduleBuild2(0).get());
Jenkins.getInstance().rebuildDependencyGraph();
List<AbstractProject> upstreamProjects = p.getUpstreamProjects();
List<AbstractProject> downstreamProjects = p.getDownstreamProjects();
......@@ -195,6 +203,8 @@ public class FingerprinterTest {
j.buildAndAssertSuccess(freestyleProject);
j.waitUntilNoActivity();
j.jenkins.rebuildDependencyGraph();
RunList<FreeStyleBuild> builds = freestyleProject.getBuilds();
assertEquals("There should only be one FreestyleBuild", 1, builds.size());
FreeStyleBuild build = builds.iterator().next();
......@@ -300,6 +310,8 @@ public class FingerprinterTest {
Fingerprint f = j.jenkins._getFingerprint(Util.getDigestOf(singleContents[0]+"\n"));
assertEquals(3,f.getUsages().size());
j.jenkins.rebuildDependencyGraph();
assertEquals(Arrays.asList(p1), p2.getUpstreamProjects());
assertEquals(Arrays.asList(p1), p3.getUpstreamProjects());
assertEquals(new HashSet(Arrays.asList(p2,p3)), new HashSet(p1.getDownstreamProjects()));
......@@ -308,6 +320,8 @@ public class FingerprinterTest {
p3.delete();
new FingerprintCleanupThread().execute(StreamTaskListener.fromStdout());
j.jenkins.rebuildDependencyGraph();
// records for p3 should have been deleted now
assertEquals(2,f.getUsages().size());
assertEquals(Arrays.asList(p1), p2.getUpstreamProjects());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册