The issue is reproducable with Jenkins 1.461/Parameterized Trigger Plugin 2.13:
- Create a matrix job A.
- Create a freestyle job B.
- Configure a parameterized trigger in A that triggers B.
- Build A.
- The console log of the build of A shows:
The reason seems to be that hudson.plugins.parameterizedtrigger.BuildTrigger implements MatrixAggregatable and calls hudson.tasks.BuildTrigger.execute within the method endBuild. As triggering downstream projects is also implemented by using the dependency graph, downstream projects are effectively triggered twice.
The solution might be simply not to implement MatrixAggregatable in hudson.plugins.parameterizedtrigger.BuildTrigger at all, because the dependency graph already handles the downstream project dependencies.
at hudson.plugins.parameterizedtrigger.ParameterizedDependency.shouldTriggerBuild(ParameterizedDependency.java:59)
at hudson.model.DependencyGraph$DependencyGroup.shouldTriggerBuild(DependencyGraph.java:495)
at hudson.tasks.BuildTrigger.execute(BuildTrigger.java:186)
at hudson.plugins.parameterizedtrigger.BuildTrigger$1.endBuild(BuildTrigger.java:95)
at hudson.matrix.MatrixBuild$RunnerImpl.post2(MatrixBuild.java:324)
at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:550)
at hudson.model.Run.run(Run.java:1386)
at hudson.matrix.MatrixBuild.run(MatrixBuild.java:152)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:145)
at hudson.model.OneOffExecutor.run(OneOffExecutor.java:61)
at hudson.plugins.parameterizedtrigger.ParameterizedDependency.shouldTriggerBuild(ParameterizedDependency.java:59)
at hudson.model.DependencyGraph$DependencyGroup.shouldTriggerBuild(DependencyGraph.java:495)
at hudson.tasks.BuildTrigger.execute(BuildTrigger.java:186)
at hudson.model.AbstractBuild$AbstractRunner.cleanUp(AbstractBuild.java:568)
at hudson.model.Run.run(Run.java:1405)
at hudson.matrix.MatrixBuild.run(MatrixBuild.java:152)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:145)
at hudson.model.OneOffExecutor.run(OneOffExecutor.java:61)