This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-9848-2
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/ignite-9848-2 by this push:
new 3db1e2d Standalone syncer class; Find missing builds by refs started
3db1e2d is described below
commit 3db1e2d2a0a941f3cb2149c3d10771331f2fd804
Author: Dmitriy Pavlov <[email protected]>
AuthorDate: Sat Oct 27 13:57:21 2018 +0300
Standalone syncer class; Find missing builds by refs started
---
.../ci/teamcity/ignited/TeamcityIgnitedImpl.java | 8 ++--
.../ignited/fatbuild/ProactiveFatBuildSync.java | 46 ++++++++++++++++------
.../org/apache/ignite/ci/web/model/Version.java | 2 +-
3 files changed, 39 insertions(+), 17 deletions(-)
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 08e1b5f..5203ac1 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
@@ -175,13 +175,13 @@ public class TeamcityIgnitedImpl implements
ITeamcityIgnited {
});
}
//schedule direct reload for Fat Builds for all queued too-old builds
- buildSync.scheduleBuildsLoad(srvNme, directUpload);
+ buildSync.scheduleBuildsLoad(conn, directUpload);
runActualizeBuildRefs(srvNme, false, paginateUntil);
if(!paginateUntil.isEmpty()) {
//some builds may stuck in the queued or running, enforce loading
as well
- buildSync.scheduleBuildsLoad(srvNme, paginateUntil);
+ buildSync.scheduleBuildsLoad(conn, paginateUntil);
}
// schedule full resync later
@@ -221,7 +221,7 @@ public class TeamcityIgnitedImpl implements
ITeamcityIgnited {
Set<Long> buildsUpdated = buildRefDao.saveChunk(srvIdMaskHigh,
tcDataFirstPage);
int totalUpdated = buildsUpdated.size();
- buildSync.scheduleBuildsLoad(srvNme,
cacheKeysToBuildIds(buildsUpdated));
+ buildSync.scheduleBuildsLoad(conn, cacheKeysToBuildIds(buildsUpdated));
int totalChecked = tcDataFirstPage.size();
int neededToFind = 0;
@@ -237,7 +237,7 @@ public class TeamcityIgnitedImpl implements
ITeamcityIgnited {
List<BuildRef> tcDataNextPage = conn.getBuildRefs(nextPageUrl,
outLinkNext);
Set<Long> curChunkBuildsSaved =
buildRefDao.saveChunk(srvIdMaskHigh, tcDataNextPage);
totalUpdated += curChunkBuildsSaved.size();
- buildSync.scheduleBuildsLoad(srvNme,
cacheKeysToBuildIds(curChunkBuildsSaved));
+ buildSync.scheduleBuildsLoad(conn,
cacheKeysToBuildIds(curChunkBuildsSaved));
int savedCurChunk = curChunkBuildsSaved.size();
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
index 2dd1757..9d83187 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
@@ -59,28 +59,35 @@ public class ProactiveFatBuildSync {
@Inject private IStringCompactor compactor;
-
@GuardedBy("this")
- private Set<Integer> buildToLoad = new HashSet<>();
+ private Map<String, SyncTask> buildToLoad = new HashMap<>();
+ private static class SyncTask {
+ ITeamcityConn conn;
+ Set<Integer> ids = new HashSet<>();
+ }
/**
* Invoke load fat builds later, re-load provided builds.
- * @param srvNme
+ * @param conn
* @param buildsToAskFromTc Builds to ask from tc.
*/
- public void scheduleBuildsLoad(String srvNme , Collection<Integer>
buildsToAskFromTc) {
+ public void scheduleBuildsLoad(ITeamcityConn conn, Collection<Integer>
buildsToAskFromTc) {
if (buildsToAskFromTc.isEmpty())
return;
+
synchronized (this) {
- buildToLoad.addAll(buildsToAskFromTc);
+ final String serverId = conn.serverId();
+ final SyncTask syncTask = buildToLoad.computeIfAbsent(serverId, s
-> new SyncTask());
+ syncTask.conn = conn;
+ syncTask.ids.addAll(buildsToAskFromTc);
}
int ldrToActivate =
ThreadLocalRandom.current().nextInt(FAT_BUILD_PROACTIVE_TASKS);
- scheduler.sheduleNamed(taskName("loadFatBuilds" + ldrToActivate,
srvNme),
- () -> loadFatBuilds(ldrToActivate, srvNme), 2,
TimeUnit.MINUTES);
+ scheduler.sheduleNamed(taskName("loadFatBuilds" + ldrToActivate,
conn.serverId()),
+ () -> loadFatBuilds(ldrToActivate, conn.serverId()), 2,
TimeUnit.MINUTES);
}
@@ -105,15 +112,30 @@ public class ProactiveFatBuildSync {
/** */
- private void loadFatBuilds(int ldrNo, String srvNme) {
+ private void loadFatBuilds(int ldrNo, String serverId) {
Set<Integer> load;
-
+ ITeamcityConn conn;
synchronized (this) {
- load = buildToLoad;
- buildToLoad = new HashSet<>();
+ final SyncTask syncTask = buildToLoad.get(serverId);
+ if (syncTask == null)
+ return;
+
+ if (syncTask.ids.isEmpty()) {
+ syncTask.conn = null;
+ return;
+ }
+
+ if (syncTask.conn == null)
+ return;
+
+ load = syncTask.ids;
+ syncTask.ids = new HashSet<>();
+
+ conn = syncTask.conn;
+ syncTask.conn = null;
}
- doLoadBuilds(ldrNo, srvNme, conn, load);
+ doLoadBuilds(ldrNo, serverId, conn, load);
}
@SuppressWarnings({"WeakerAccess", "UnusedReturnValue"})
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index b58b699..c082100 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -23,7 +23,7 @@ package org.apache.ignite.ci.web.model;
public static final String GITHUB_REF =
"https://github.com/apache/ignite-teamcity-bot";
/** TC Bot Version. */
- public static final String VERSION = "20181026";
+ public static final String VERSION = "20181027";
/** TC Bot Version. */
public String version = VERSION;