private Result runMultiConfigbuildRunner(final DynamicBuild dynamicBuild, final BuildConfiguration buildConfiguration, final BuildListener listener, Launcher launcher) throws IOException, InterruptedException { SubBuildScheduler subBuildScheduler = new SubBuildScheduler(dynamicBuild, this, new SubBuildScheduler.SubBuildFinishListener() { @Override public void runFinished(DynamicSubBuild subBuild) throws IOException { for (DotCiPluginAdapter plugin : buildConfiguration.getPlugins()) { plugin.runFinished(subBuild, dynamicBuild, listener); } } }); try { Iterable<Combination> axisList = buildConfiguration.getAxisList().list(); Result combinedResult = subBuildScheduler.runSubBuilds(axisList, listener); dynamicBuild.setResult(combinedResult); return combinedResult; } finally { try { subBuildScheduler.cancelSubBuilds(listener.getLogger()); } catch (Exception e) { // There is nothing much we can do at this point } } }