You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2018/11/21 15:01:32 UTC

[ignite-teamcity-bot] branch ignite-10336 updated: IGNITE-10336 Fix of chain collection to avoid missing builds

This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch ignite-10336
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/ignite-10336 by this push:
     new 5c432d2  IGNITE-10336 Fix of chain collection to avoid missing builds
5c432d2 is described below

commit 5c432d2a1b17ef492aa34a9af962aa2736f30880
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Wed Nov 21 18:01:30 2018 +0300

    IGNITE-10336 Fix of chain collection to avoid missing builds
---
 .../ignite/ci/tcbot/chain/BuildChainProcessor.java | 36 ++++++++++++++--------
 .../org/apache/ignite/ci/web/model/Version.java    |  2 +-
 .../ci/tcbot/chain/BuildChainProcessorTest.java    |  2 +-
 3 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
index d1b0c89..f2199a5 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
@@ -30,7 +30,6 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -96,7 +95,7 @@ public class BuildChainProcessor {
         if (entryPoints.isEmpty())
             return res;
 
-        Map<Integer, Future<FatBuildCompacted>> builds = loadChain(entryPoints, mode, teamcityIgnited);
+        Map<Integer, Future<FatBuildCompacted>> builds = loadAllBuildsInChains(entryPoints, mode, teamcityIgnited);
 
         builds.values().stream().map(FutureUtil::getResult)
             .filter(b -> !b.isComposite() && b.getTestsCount() > 0)
@@ -169,7 +168,7 @@ public class BuildChainProcessor {
         if (entryPoints.isEmpty())
             return new FullChainRunCtx(Build.createFakeStub());
 
-        Map<Integer, Future<FatBuildCompacted>> builds = loadChain(entryPoints, mode, tcIgn);
+        Map<Integer, Future<FatBuildCompacted>> builds = loadAllBuildsInChains(entryPoints, mode, tcIgn);
 
         Map<String, List<Future<FatBuildCompacted>>> freshRebuilds = new ConcurrentHashMap<>();
 
@@ -237,7 +236,7 @@ public class BuildChainProcessor {
     }
 
     @NotNull
-    public Map<Integer, Future<FatBuildCompacted>> loadChain(Collection<Integer> entryPoints,
+    public Map<Integer, Future<FatBuildCompacted>> loadAllBuildsInChains(Collection<Integer> entryPoints,
         SyncMode mode,
         ITeamcityIgnited tcIgn) {
         Map<Integer, Future<FatBuildCompacted>> builds = new ConcurrentHashMap<>();
@@ -246,15 +245,24 @@ public class BuildChainProcessor {
             .filter(Objects::nonNull)
             .map(id -> getOrLoadBuild(id, mode, builds, tcIgn));
 
-        Stream<Integer> dependenciesFirstLevel = entryPointsFatBuilds
-            .flatMap(ref -> dependencies(ref, mode, builds, tcIgn).stream());
+        Set<Integer> remainedUnloadedDeps = entryPointsFatBuilds
+            .flatMap(ref -> dependencies(ref, mode, builds, tcIgn).stream()).collect(Collectors.toSet());
 
-        Stream<Integer> depsSecondLevel = dependenciesFirstLevel.map(builds::get)
-            .peek(val -> Preconditions.checkNotNull(val, "Build future should be in context"))
-            .flatMap(ref -> dependencies(ref, mode, builds, tcIgn).stream());
+        for (int level = 1; level < 5; level++) {
+            if (remainedUnloadedDeps.isEmpty())
+                break;
+
+            Set<Integer> depsNextLevel = remainedUnloadedDeps
+                .stream()
+                .map(builds::get)
+                .peek(val -> Preconditions.checkNotNull(val, "Build future should be in context"))
+                .flatMap(ref -> dependencies(ref, mode, builds, tcIgn).stream()).collect(Collectors.toSet());
+
+            logger.info("Level [" + level + "] dependencies:" + depsNextLevel);
+
+            remainedUnloadedDeps = depsNextLevel;
+        }
 
-        Set<Integer> collect = depsSecondLevel.collect(Collectors.toSet());
-        System.err.println("New deps of second level:" + collect);
         return builds;
     }
 
@@ -264,7 +272,11 @@ public class BuildChainProcessor {
         builds.values().forEach(bFut -> {
             FatBuildCompacted b = FutureUtil.getResult(bFut);
 
-            buildsByBt.computeIfAbsent(b.buildTypeId(compactor), k -> new ArrayList<>()).add(b);
+            String buildTypeId = b.buildTypeId(compactor);
+            if (buildTypeId == null)
+                logger.error("Invalid build type ID for build " + b.getId());
+            else
+                buildsByBt.computeIfAbsent(buildTypeId, k -> new ArrayList<>()).add(b);
         });
         return buildsByBt;
     }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index 51ce92e..c406e7f 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -23,7 +23,7 @@ package org.apache.ignite.ci.web.model;
     public static final String GITHUB_REF = "https://github.com/apache/ignite-teamcity-bot";
 
     /** TC Bot Version. */
-    public static final String VERSION = "20181120";
+    public static final String VERSION = "20181121";
 
     /** TC Bot Version. */
     public String version = VERSION;
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java
index 23c735e..be5d683 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java
@@ -136,7 +136,7 @@ public class BuildChainProcessorTest {
 
         assertTrue(!suites2.isEmpty());
 
-        for (MultBuildRunCtx suite : suites) {
+        for (MultBuildRunCtx suite : suites2) {
             System.out.println(suite.getFailedTestsNames().collect(Collectors.toList()));
 
             if (suite.suiteName() != null && suite.suiteName().startsWith(UNIQUE_FAILED_TEST)) {