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;

Reply via email to