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/10/30 18:26:35 UTC

[ignite-teamcity-bot] branch ignite-10071 updated: IGNITE-10071 Background upload of a build and simultaneous bot restart may result in a queued build persisted but actually build is finished

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

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


The following commit(s) were added to refs/heads/ignite-10071 by this push:
     new a49be4d  IGNITE-10071 Background upload of a build and simultaneous bot restart may result in a queued build persisted but actually build is finished
a49be4d is described below

commit a49be4dd72d25f9a3a07de8c9c271c8ecc86fcbf
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Tue Oct 30 21:26:34 2018 +0300

    IGNITE-10071 Background upload of a build and simultaneous bot restart may result in a queued build persisted but actually build is finished
---
 .../ignite/ci/tcbot/chain/BuildChainProcessor.java       |  7 +++----
 .../ignite/ci/teamcity/ignited/ITeamcityIgnited.java     | 11 ++++++++++-
 .../ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java  | 16 ++++++++++++----
 3 files changed, 25 insertions(+), 9 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 1295510..1e8adb6 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
@@ -155,7 +155,6 @@ public class BuildChainProcessor {
         return fullChainRunCtx;
     }
 
-
     @SuppressWarnings("WeakerAccess")
     @AutoProfiling
     protected void createCxt(ITeamcityIgnited teamcityIgnited, Map<String, MultBuildRunCtx> buildsCtxMap,
@@ -200,13 +199,13 @@ public class BuildChainProcessor {
         final String branch = getBranchOrDefault(buildCompacted.branchName(compactor));
 
         final String buildTypeId = buildCompacted.buildTypeId(compactor);
-        Stream<BuildRefCompacted> history = teamcityIgnited.getBuildHistoryCompacted(buildTypeId, branch)
+        Stream<BuildRefCompacted> hist = teamcityIgnited.getBuildHistoryCompacted(buildTypeId, branch)
             .stream()
             .filter(t -> t.isNotCancelled(compactor))
             .filter(t -> t.isFinished(compactor));
 
         if (includeLatestRebuild == LatestRebuildMode.LATEST) {
-            BuildRefCompacted recentRef = history.max(Comparator.comparing(BuildRefCompacted::id))
+            BuildRefCompacted recentRef = hist.max(Comparator.comparing(BuildRefCompacted::id))
                     .orElse(buildCompacted);
 
             return Stream.of(recentRef)
@@ -214,7 +213,7 @@ public class BuildChainProcessor {
         }
 
         if (includeLatestRebuild == LatestRebuildMode.ALL) {
-            return history
+            return hist
                     .sorted(Comparator.comparing(BuildRefCompacted::id).reversed())
                     .limit(cntLimit)
                     .map(b -> builds.computeIfAbsent(b.id(), teamcityIgnited::getFatBuild));
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 5fea687..cfdaa2e 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
@@ -97,7 +97,16 @@ public interface ITeamcityIgnited {
     /**
      * @param id Id.
      */
-    public FatBuildCompacted getFatBuild(int id);
+    public default FatBuildCompacted getFatBuild(int id) {
+        return getFatBuild(id, false);
+    }
+
+
+
+    /**
+     * @param id Id.
+     */
+    public FatBuildCompacted getFatBuild(int id, boolean acceptQueued);
 
     public Collection<ChangeCompacted> getAllChanges(int[] changeIds);
 }
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 67ea0c2..ce05e93 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
@@ -83,6 +83,9 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
     /** Changes DAO. */
     @Inject private ChangeSync changeSync;
 
+    /** Changes DAO. */
+    @Inject private IStringCompactor compactor;
+
     /** Server ID mask for cache Entries. */
     private int srvIdMaskHigh;
 
@@ -172,13 +175,17 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         return buildConditionDao.setBuildCondition(srvIdMaskHigh, cond);
     }
 
-    @Override public FatBuildCompacted getFatBuild(int buildId) {
+    /** {@inheritDoc} */
+    @Override public FatBuildCompacted getFatBuild(int buildId, boolean acceptQueued) {
         ensureActualizeRequested();
         FatBuildCompacted existingBuild = fatBuildDao.getFatBuild(srvIdMaskHigh, buildId);
 
-        //todo additionally check queued and running builds, refesh builds if they are queued.
-        if (existingBuild != null && !existingBuild.isOutdatedEntityVersion())
-            return existingBuild;
+        if (existingBuild != null && !existingBuild.isOutdatedEntityVersion()) {
+            boolean finished = !existingBuild.isRunning(compactor) && !existingBuild.isQueued(compactor);
+
+            if(finished || acceptQueued)
+                return existingBuild;
+        }
 
         FatBuildCompacted savedVer = buildSync.reloadBuild(conn, buildId, existingBuild);
 
@@ -189,6 +196,7 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         return savedVer == null ? existingBuild : savedVer;
     }
 
+    /** {@inheritDoc} */
     @AutoProfiling
     @Override public Collection<ChangeCompacted> getAllChanges(int[] changeIds) {
         final Map<Long, ChangeCompacted> all = changesDao.getAll(srvIdMaskHigh, changeIds);