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