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/01/21 19:13:45 UTC

[ignite-teamcity-bot] branch ignite-10989-remove-old-rest updated: IGNITE-10989: Triggering information checking by fat build implemented

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

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


The following commit(s) were added to refs/heads/ignite-10989-remove-old-rest by this push:
     new efd8570  IGNITE-10989: Triggering information checking by fat build implemented
efd8570 is described below

commit efd8570a4b64738238456e5efc44af23670d8846
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Jan 21 22:13:42 2019 +0300

    IGNITE-10989: Triggering information checking by fat build implemented
---
 .../main/java/org/apache/ignite/ci/ITeamcity.java  |  9 -----
 .../org/apache/ignite/ci/jobs/CheckQueueJob.java   | 46 +++++++++++++---------
 .../ci/teamcity/ignited/ITeamcityIgnited.java      | 11 ++++++
 .../ci/teamcity/ignited/TeamcityIgnitedImpl.java   |  6 +++
 .../ignite/ci/teamcity/pure/ITeamcityConn.java     | 10 +++++
 5 files changed, 54 insertions(+), 28 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
index dce65df..0575373 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITeamcity.java
@@ -92,15 +92,6 @@ public interface ITeamcity extends ITeamcityConn {
                 Base64Util.encodeUtf8String(user + ":" + pwd));
     }
 
-    /**
-     * Get list of teamcity agents.
-     *
-     * @param connected Connected flag.
-     * @param authorized Authorized flag.
-     * @return List of teamcity agents.
-     */
-    List<Agent> agents(boolean connected, boolean authorized);
-
     void init(String serverId);
 
     User getUserByUsername(String username);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java
index 5b1b584..0b54c5b 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jobs/CheckQueueJob.java
@@ -17,34 +17,31 @@
 
 package org.apache.ignite.ci.jobs;
 
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-import javax.inject.Inject;
 import jersey.repackaged.com.google.common.base.Throwables;
 import org.apache.ignite.ci.HelperConfig;
-import org.apache.ignite.ci.ITeamcity;
 import org.apache.ignite.ci.conf.BranchTracked;
 import org.apache.ignite.ci.conf.ChainAtServerTracked;
 import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.di.MonitoredTask;
 import org.apache.ignite.ci.tcmodel.agent.Agent;
 import org.apache.ignite.ci.tcmodel.result.Build;
+import org.apache.ignite.ci.tcmodel.result.Triggered;
 import org.apache.ignite.ci.tcmodel.user.User;
 import org.apache.ignite.ci.teamcity.ignited.BuildRefCompacted;
+import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
-import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
+import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.inject.Inject;
+import java.text.MessageFormat;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
 /**
  * Trigger build if half of agents are available and there is no self-triggered builds in build queue.
  */
@@ -66,7 +63,7 @@ public class CheckQueueJob implements Runnable {
     @Inject private ITeamcityIgnitedProvider tcIgnitedProv;
 
     /** */
-    @Inject private ITcServerProvider tcPureProv;
+    @Inject private IStringCompactor compactor;
 
     /** */
     private final Map<ChainAtServerTracked, Long> startTimes = new HashMap<>();
@@ -151,9 +148,7 @@ public class CheckQueueJob implements Runnable {
 
         ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvId, creds);
 
-        ITeamcity teamcity = tcPureProv.server(srvId, creds);
-
-        List<Agent> agents = teamcity.agents(true, true);
+        List<Agent> agents = tcIgn.agents(true, true);
 
         int total = agents.size();
         int running = 0;
@@ -184,10 +179,23 @@ public class CheckQueueJob implements Runnable {
                 continue;
 
             boolean trigger = true;
+
             List<BuildRefCompacted> buildsForBr = tcIgn.getQueuedBuildsCompacted(chain.branchForRest);
+
             for (BuildRefCompacted refComp : buildsForBr) {
-                Integer buildId= refComp.getId();
-                Build build = teamcity.getBuild(buildId);
+                Integer buildId = refComp.getId();
+                if (buildId == null)
+                    continue; // should not occur;
+
+                final FatBuildCompacted fatBuild = tcIgn.getFatBuild(buildId);
+                final Build build = fatBuild.toBuild(compactor);
+                final Triggered triggered = build.getTriggered();
+
+                if (triggered == null) {
+                    logger.info("Unable to get triggering info for queued build {} (type={}).", buildId, build.buildTypeId);
+
+                    continue;
+                }
 
                 User user = build.getTriggered().getUser();
 
@@ -203,7 +211,7 @@ public class CheckQueueJob implements Runnable {
                     final String msg
                             = MessageFormat.format("Queued build {0} was early triggered " +
                             "(user {1}, branch {2}, suite {3})." +
-                            " Will not startIgnite build.", buildId, login, chain.branchForRest, build.buildTypeId);
+                            " Will not start Ignite build.", buildId, login, chain.branchForRest, build.buildTypeId);
 
                     logger.info(msg);
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
index 4bd2fe6..fee1537 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
@@ -23,6 +23,7 @@ import java.util.Set;
 import javax.annotation.Nullable;
 import org.apache.ignite.ci.analysis.SuiteInBranch;
 import org.apache.ignite.ci.analysis.TestInBranch;
+import org.apache.ignite.ci.tcmodel.agent.Agent;
 import org.apache.ignite.ci.tcmodel.mute.MuteInfo;
 import org.apache.ignite.ci.tcmodel.result.Build;
 import org.apache.ignite.ci.teamcity.ignited.buildcondition.BuildCondition;
@@ -189,4 +190,14 @@ public interface ITeamcityIgnited {
     List<String> getAllProjectsIds();
 
     String gitBranchPrefix();
+
+
+    /**
+     * Get list of teamcity agents. Never cached, request goes directly to pure TC.
+     *
+     * @param connected Connected flag.
+     * @param authorized Authorized flag.
+     * @return List of teamcity agents.
+     */
+    List<Agent> agents(boolean connected, boolean authorized);
 }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
index a8eb8f4..1fa6d70 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
@@ -43,6 +43,7 @@ import org.apache.ignite.ci.di.MonitoredTask;
 import org.apache.ignite.ci.di.cache.GuavaCached;
 import org.apache.ignite.ci.di.scheduler.IScheduler;
 import org.apache.ignite.ci.tcbot.trends.MasterTrendsService;
+import org.apache.ignite.ci.tcmodel.agent.Agent;
 import org.apache.ignite.ci.tcmodel.conf.Project;
 import org.apache.ignite.ci.tcmodel.hist.BuildRef;
 import org.apache.ignite.ci.tcmodel.mute.MuteInfo;
@@ -423,6 +424,11 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         return conn.gitBranchPrefix();
     }
 
+    @Override
+    public List<Agent> agents(boolean connected, boolean authorized) {
+        return conn.agents(connected, authorized);
+    }
+
     /** {@inheritDoc} */
     @Override public List<String> getCompositeBuildTypesIdsSortedByBuildNumberCounter(String projectId) {
         return buildTypeSync.getCompositeBuildTypesIdsSortedByBuildNumberCounter(srvIdMaskHigh, projectId, conn);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITeamcityConn.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITeamcityConn.java
index ce7f304..b740adf 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITeamcityConn.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/pure/ITeamcityConn.java
@@ -23,6 +23,7 @@ import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.apache.ignite.ci.tcmodel.agent.Agent;
 import org.apache.ignite.ci.tcmodel.changes.Change;
 import org.apache.ignite.ci.tcmodel.changes.ChangesList;
 import org.apache.ignite.ci.tcmodel.conf.BuildType;
@@ -116,4 +117,13 @@ public interface ITeamcityConn {
      * @return Branch name mandatory prefix for all PR-less contributions, e.g. "ignite-".
      */
     public String gitBranchPrefix();
+
+    /**
+     * Get list of teamcity agents.
+     *
+     * @param connected Connected flag.
+     * @param authorized Authorized flag.
+     * @return List of teamcity agents.
+     */
+    List<Agent> agents(boolean connected, boolean authorized);
 }