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);
}