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 2019/07/06 10:34:02 UTC

[ignite-teamcity-bot] 02/04: Build time collection callable: Build running time collection implemented, to be summarized and returned

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

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

commit a0f564bc7d2ff4413baddd73b6e5c36d305bf539
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Fri Jul 5 22:10:58 2019 +0300

    Build time collection callable: Build running time collection implemented, to be summarized and returned
---
 .../tcbot/engine/buildtime/BuildTimeService.java   | 13 +++++++---
 .../apache/ignite/tcignited/build/FatBuildDao.java | 29 ++++++++++++++++++----
 2 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/buildtime/BuildTimeService.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/buildtime/BuildTimeService.java
index 95dca93..512afc5 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/buildtime/BuildTimeService.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/buildtime/BuildTimeService.java
@@ -18,7 +18,9 @@
 package org.apache.ignite.tcbot.engine.buildtime;
 
 import java.time.Duration;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import javax.cache.Cache;
 import javax.inject.Inject;
 import org.apache.ignite.IgniteCache;
@@ -64,14 +66,14 @@ public class BuildTimeService {
 
         Collection<String> allServers = cfg.getServerIds();
 
-        forEachBuildRef(1, allServers);
+        List<Long> idsToCheck = forEachBuildRef(1, allServers);
 
-        fatBuildDao.forEachFatBuild();
+        fatBuildDao.forEachFatBuild(idsToCheck);
 
         return null;
     }
 
-    public void forEachBuildRef(int days, Collection<String> allServers) {
+    public List<Long> forEachBuildRef(int days, Collection<String> allServers) {
         IgniteCache<Long, BinaryObject> cacheBin = buildRefDao.buildRefsCache().withKeepBinary();
 
         // Ignite ignite = igniteProvider.get();
@@ -93,6 +95,7 @@ public class BuildTimeService {
                 }));
 
         int cnt = 0;
+        List<Long> idsToCheck = new ArrayList<>();
 
         try (QueryCursor<Cache.Entry<Long, BinaryObject>> cursor = query) {
             for (Cache.Entry<Long, BinaryObject> next : cursor) {
@@ -118,11 +121,15 @@ public class BuildTimeService {
                 System.err.println("Found build at srv [" + srvId + "]: [" + buildId + "] to analyze, ts="+ startTs);
 
                 cnt++;
+
+                idsToCheck.add(key);
             }
         }
 
         System.err.println("Total builds to load " + cnt);
 
         // serversCompute.call(new BuildTimeIgniteCallable(cacheBin, stateRunning, buildDurationId));
+
+        return idsToCheck;
     }
 }
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/FatBuildDao.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/FatBuildDao.java
index c8b46cf..11aa9ff 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/FatBuildDao.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/FatBuildDao.java
@@ -21,6 +21,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.Iterables;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -244,16 +245,34 @@ public class FatBuildDao {
         return res;
     }
 
-    public void forEachFatBuild() {
+    public void forEachFatBuild(List<Long> idsToCheck) {
         IgniteCache<Long, BinaryObject> cacheBin = buildsCache.withKeepBinary();
 
+        int stateRunning = compactor.getStringId(BuildRef.STATE_RUNNING);
+        Integer buildDurationId = compactor.getStringIdIfPresent(Statistics.BUILD_DURATION);
+
+        Iterables.partition(idsToCheck, 32 * 10).forEach(
+            chunk -> {
+                HashSet<Long> keys = new HashSet<>(chunk);
+                Map<Long, BinaryObject> all = cacheBin.getAll(keys);
+                all.forEach((key, buildBinary) -> {
+                    long runningTime = getBuildRunningTime(stateRunning, buildDurationId, buildBinary);
+                    if (runningTime > 0) {
+                        int buildTypeId = buildBinary.field("buildTypeId");
+                        System.err.println("Running " + runningTime + "BT: " + buildTypeId);
+                    }
+                });
+            }
+        );
+
+
+        if(0!=1)
+        return;
+
         Ignite ignite = igniteProvider.get();
 
         IgniteCompute serversCompute = ignite.compute(ignite.cluster().forServers());
 
-        int stateRunning = compactor.getStringId(BuildRef.STATE_RUNNING);
-        Integer buildDurationId = compactor.getStringIdIfPresent(Statistics.BUILD_DURATION);
-
         serversCompute.call(new BuiltTimeIgniteCallable(stateRunning, buildDurationId));
     }
 
@@ -264,7 +283,7 @@ public class FatBuildDao {
         if (startTs == null || startTs <= 0)
             return -1;
 
-        int buildTypeId = buildBinary.field("buildTypeId");
+
         int status = buildBinary.field("status");
         int state = buildBinary.field("state");