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/08/03 23:16:20 UTC

[ignite-teamcity-bot] branch filter-hist-by-tag updated: Filtering history by build tag selected at tracked page: filter for initial saving of build parameters into DB added

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

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


The following commit(s) were added to refs/heads/filter-hist-by-tag by this push:
     new 615e7ab  Filtering history by build tag selected at tracked page: filter for initial saving of build parameters into DB added
615e7ab is described below

commit 615e7ab743886ef53d94d05b181e25e60ae4ba0c
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Sun Aug 4 02:16:16 2019 +0300

    Filtering history by build tag selected at tracked page: filter for initial saving of build parameters into DB added
---
 .../ignite/ci/tcbot/issue/IssueDetector.java       |  2 +-
 .../IgnitedTcInMemoryIntegrationTest.java          |  3 -
 .../tcbot/engine/chain/BuildChainProcessor.java    |  4 +-
 .../ignite/tcbot/engine/pr/PrChainsProcessor.java  |  4 +-
 .../apache/ignite/tcbot/engine/ui/DsChainUi.java   |  2 +-
 .../apache/ignite/tcbot/engine/ui/DsSuiteUi.java   |  2 +-
 .../ignite/tcbot/engine/ui/DsTestFailureUi.java    |  2 +-
 .../ignite/tcignited/TeamcityIgnitedImpl.java      |  4 +-
 .../ignite/tcignited/TeamcityIgnitedModule.java    |  2 -
 .../tcignited/build/ProactiveFatBuildSync.java     |  4 --
 .../tcignited/buildref/BranchEquivalence.java      | 17 +++++
 .../ignite/tcignited/history/HistoryCollector.java | 62 +++++++++++------
 .../ignite/tcignited/history/RunHistSync.java      | 77 ----------------------
 13 files changed, 68 insertions(+), 117 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
index 2a33891..2feb8c9 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
@@ -67,7 +67,7 @@ import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.ignite.tcignited.history.RunHistSync.normalizeBranch;
+import static org.apache.ignite.tcignited.buildref.BranchEquivalence.normalizeBranch;
 
 /**
  *
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/tcignited/IgnitedTcInMemoryIntegrationTest.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/tcignited/IgnitedTcInMemoryIntegrationTest.java
index da0a89c..1b34e77 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/tcignited/IgnitedTcInMemoryIntegrationTest.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/tcignited/IgnitedTcInMemoryIntegrationTest.java
@@ -50,7 +50,6 @@ import org.apache.ignite.tcbot.persistence.scheduler.IScheduler;
 import org.apache.ignite.tcignited.history.IRunHistory;
 import org.apache.ignite.tcignited.history.ISuiteRunHistory;
 import org.apache.ignite.tcignited.history.BuildStartTimeStorage;
-import org.apache.ignite.tcignited.history.RunHistSync;
 import org.apache.ignite.tcservice.ITeamcity;
 import org.apache.ignite.tcservice.TeamcityServiceConnection;
 import org.apache.ignite.tcservice.http.ITeamcityHttpConnection;
@@ -623,8 +622,6 @@ public class IgnitedTcInMemoryIntegrationTest {
             buildRefDao.save(srvIdMaskHigh, new BuildRefCompacted(build));
         });
 
-        final RunHistSync histSync = injector.getInstance(RunHistSync.class);
-
         final IRunHistory testRunHist = srv.getTestRunHist(c.getStringId(PrChainsProcessorTest.TEST_FLAKY_IN_MASTER),
             c.getStringId(PrChainsProcessorTest.CACHE_1),
             c.getStringId(branch));
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java
index 300f272..09eb044 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java
@@ -51,8 +51,8 @@ import org.apache.ignite.tcbot.persistence.IStringCompactor;
 import org.apache.ignite.tcignited.ITeamcityIgnited;
 import org.apache.ignite.tcignited.SyncMode;
 import org.apache.ignite.tcignited.buildlog.IBuildLogProcessor;
+import org.apache.ignite.tcignited.buildref.BranchEquivalence;
 import org.apache.ignite.tcignited.history.IRunHistory;
-import org.apache.ignite.tcignited.history.RunHistSync;
 import org.apache.ignite.tcservice.model.hist.BuildRef;
 import org.apache.ignite.tcservice.model.result.Build;
 import org.slf4j.Logger;
@@ -156,7 +156,7 @@ public class BuildChainProcessor {
         if (entryPoints.isEmpty())
             return new FullChainRunCtx(Build.createFakeStub());
 
-        Integer failRateBranchId = compactor.getStringIdIfPresent(RunHistSync.normalizeBranch(failRateBranch));
+        Integer failRateBranchId = compactor.getStringIdIfPresent(BranchEquivalence.normalizeBranch(failRateBranch));
 
         Map<Integer, Future<FatBuildCompacted>> builds = loadAllBuildsInChains(entryPoints, mode, tcIgn);
 
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java
index a31a2a4..3781a27 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java
@@ -49,9 +49,9 @@ import org.apache.ignite.tcbot.persistence.IStringCompactor;
 import org.apache.ignite.tcignited.ITeamcityIgnited;
 import org.apache.ignite.tcignited.ITeamcityIgnitedProvider;
 import org.apache.ignite.tcignited.SyncMode;
+import org.apache.ignite.tcignited.buildref.BranchEquivalence;
 import org.apache.ignite.tcignited.creds.ICredentialsProv;
 import org.apache.ignite.tcignited.history.IRunHistory;
-import org.apache.ignite.tcignited.history.RunHistSync;
 import org.apache.ignite.tcservice.ITeamcity;
 
 /**
@@ -294,7 +294,7 @@ public class PrChainsProcessor {
     private List<ShortSuiteUi> findBlockerFailures(FullChainRunCtx fullChainRunCtx,
         ITeamcityIgnited tcIgnited,
         String baseBranch) {
-        String normalizedBaseBranch = RunHistSync.normalizeBranch(baseBranch);
+        String normalizedBaseBranch = BranchEquivalence.normalizeBranch(baseBranch);
         Integer baseBranchId = compactor.getStringIdIfPresent(normalizedBaseBranch);
 
         Predicate<MultBuildRunCtx> filter = suite ->
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java
index 3eabb2c..85f8cbb 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java
@@ -39,7 +39,7 @@ import org.apache.ignite.tcservice.model.conf.BuildType;
 
 import static org.apache.ignite.tcbot.engine.ui.DsSuiteUi.createOccurForLogConsumer;
 import static org.apache.ignite.tcbot.engine.ui.DsSuiteUi.createOrrucForLongRun;
-import static org.apache.ignite.tcignited.history.RunHistSync.normalizeBranch;
+import static org.apache.ignite.tcignited.buildref.BranchEquivalence.normalizeBranch;
 
 /**
  * Detailed status of PR or tracked branch for chain.
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java
index c4551af..0732627 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java
@@ -35,7 +35,7 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static org.apache.ignite.tcbot.common.util.TimeUtil.millisToDurationPrintable;
-import static org.apache.ignite.tcignited.history.RunHistSync.normalizeBranch;
+import static org.apache.ignite.tcignited.buildref.BranchEquivalence.normalizeBranch;
 
 
 /**
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java
index 333db5b..6e67244 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java
@@ -34,7 +34,7 @@ import org.apache.ignite.tcignited.buildlog.LogMsgToWarn;
 import org.apache.ignite.tcignited.history.IRunHistory;
 
 import static org.apache.ignite.tcbot.common.util.TimeUtil.millisToDurationPrintable;
-import static org.apache.ignite.tcignited.history.RunHistSync.normalizeBranch;
+import static org.apache.ignite.tcignited.buildref.BranchEquivalence.normalizeBranch;
 
 
 /**
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedImpl.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedImpl.java
index c6b10c4..e924558 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedImpl.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedImpl.java
@@ -427,7 +427,7 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         if (buildTypeId < 0 || normalizedBaseBranch < 0)
             return null;
 
-        return histCollector.getSuiteRunHist(srvIdMaskHigh, buildTypeId, normalizedBaseBranch);
+        return histCollector.getSuiteRunHist(srvCode, buildTypeId, normalizedBaseBranch);
     }
 
     /** {@inheritDoc} */
@@ -439,7 +439,7 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         if (testName < 0 || buildTypeId < 0 || normalizedBaseBranch < 0)
             return null;
 
-        return histCollector.getTestRunHist(srvIdMaskHigh, testName, buildTypeId, normalizedBaseBranch);
+        return histCollector.getTestRunHist(srvCode, testName, buildTypeId, normalizedBaseBranch);
     }
 
     /** {@inheritDoc} */
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedModule.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedModule.java
index cc4762b..0f39f7a 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedModule.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/TeamcityIgnitedModule.java
@@ -37,7 +37,6 @@ import org.apache.ignite.tcignited.mute.MuteDao;
 import org.apache.ignite.tcignited.mute.MuteSync;
 import org.apache.ignite.tcignited.buildlog.BuildLogProcessorModule;
 import org.apache.ignite.tcignited.history.BuildStartTimeStorage;
-import org.apache.ignite.tcignited.history.RunHistSync;
 import org.apache.ignite.tcservice.TcRealConnectionModule;
 import org.apache.ignite.tcservice.http.ITeamcityHttpConnection;
 
@@ -65,7 +64,6 @@ public class TeamcityIgnitedModule extends AbstractModule {
         bind(BuildTypeDao.class).in(new SingletonScope());
         bind(BuildTypeSync.class).in(new SingletonScope());
         bind(BuildStartTimeStorage.class).in(new SingletonScope());
-        bind(RunHistSync.class).in(new SingletonScope());
         bind(MuteDao.class).in(new SingletonScope());
         bind(MuteSync.class).in(new SingletonScope());
         bind(BuildLogCheckResultDao.class).in(new SingletonScope());
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/ProactiveFatBuildSync.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/ProactiveFatBuildSync.java
index 1702013..489ef59 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/ProactiveFatBuildSync.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/ProactiveFatBuildSync.java
@@ -50,7 +50,6 @@ import org.apache.ignite.tcbot.persistence.scheduler.IScheduler;
 import org.apache.ignite.tcignited.ITeamcityIgnited;
 import org.apache.ignite.tcignited.SyncMode;
 import org.apache.ignite.tcignited.buildref.BuildRefDao;
-import org.apache.ignite.tcignited.history.RunHistSync;
 import org.apache.ignite.tcservice.ITeamcityConn;
 import org.apache.ignite.tcservice.model.changes.ChangesList;
 import org.apache.ignite.tcservice.model.result.Build;
@@ -81,9 +80,6 @@ public class ProactiveFatBuildSync {
     /** Change sync. */
     @Inject private ChangeSync changeSync;
 
-    /** Run history sync. */
-    @Inject private RunHistSync runHistSync;
-
     @GuardedBy("this")
     private Map<String, SyncTask> buildToLoad = new HashMap<>();
 
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/buildref/BranchEquivalence.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/buildref/BranchEquivalence.java
index ab5f0b9..37eb8ca 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/buildref/BranchEquivalence.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/buildref/BranchEquivalence.java
@@ -19,6 +19,7 @@ package org.apache.ignite.tcignited.buildref;
 import com.google.common.collect.Lists;
 import java.util.Collections;
 import java.util.List;
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.apache.ignite.tcservice.ITeamcity;
 
@@ -28,6 +29,22 @@ public class BranchEquivalence {
         = Collections.unmodifiableList(
         Lists.newArrayList(ITeamcity.DEFAULT, ITeamcity.REFS_HEADS_MASTER, ITeamcity.MASTER));
 
+    /**
+     * @param branchName Branch name.
+     */
+    @Nonnull
+    public static String normalizeBranch(@Nullable String branchName) {
+        String branch = branchName == null ? ITeamcity.DEFAULT : branchName;
+
+        if (ITeamcity.REFS_HEADS_MASTER.equals(branch))
+            return ITeamcity.DEFAULT;
+
+        if (ITeamcity.MASTER.equals(branch))
+            return ITeamcity.DEFAULT;
+
+        return branch;
+    }
+
 
     public List<String> branchForQuery(@Nullable String branchName) {
         if (ITeamcity.DEFAULT.equals(branchName))
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java
index 681aa5a..0bdea46 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.function.BiPredicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import javax.annotation.Nonnull;
 import javax.cache.Cache;
 import javax.inject.Inject;
 import javax.inject.Provider;
@@ -43,6 +44,8 @@ import org.apache.ignite.ci.teamcity.ignited.BuildRefCompacted;
 import org.apache.ignite.ci.teamcity.ignited.runhist.Invocation;
 import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistKey;
 import org.apache.ignite.tcbot.common.TcBotConst;
+import org.apache.ignite.tcbot.common.conf.IBuildParameterSpec;
+import org.apache.ignite.tcbot.common.conf.IDataSourcesConfigSupplier;
 import org.apache.ignite.tcbot.common.conf.TcBotSystemProperties;
 import org.apache.ignite.tcbot.common.exeption.ExceptionUtil;
 import org.apache.ignite.tcbot.common.exeption.ServicesStartingException;
@@ -88,6 +91,8 @@ public class HistoryCollector {
     /** Run history DAO. */
     @Inject private BuildStartTimeStorage buildStartTimeStorage;
 
+    @Inject private IDataSourcesConfigSupplier cfg;
+
     /**
      * Non persistence cache for all suite RunHistory for particular branch. RunHistKey(ServerId||BranchId||suiteId)->
      * Build reference
@@ -100,28 +105,29 @@ public class HistoryCollector {
         .build();
 
     /**
-     * @param srvIdMaskHigh Server id mask to be placed at high bits in the key.
+     * @param srvCode Server id mask to be placed at high bits in the key.
      * @param testName Test name.
      * @param buildTypeId Suite (Build type) id.
      * @param normalizedBaseBranch Branch name.
      */
-    public IRunHistory getTestRunHist(int srvIdMaskHigh, int testName, int buildTypeId,
-        int normalizedBaseBranch) {
+    public IRunHistory getTestRunHist(String srvCode, int testName, int buildTypeId,
+                                      int normalizedBaseBranch) {
 
-        SuiteHistory hist = getSuiteHist(srvIdMaskHigh, buildTypeId, normalizedBaseBranch);
+        SuiteHistory hist = getSuiteHist(srvCode, buildTypeId, normalizedBaseBranch);
 
         return hist.getTestRunHist(testName);
     }
 
     @SuppressWarnings("WeakerAccess")
     @AutoProfiling
-    protected SuiteHistory getSuiteHist(int srvIdMaskHigh, int buildTypeId, int normalizedBaseBranch) {
-        RunHistKey runHistKey = new RunHistKey(srvIdMaskHigh, buildTypeId, normalizedBaseBranch);
+    protected SuiteHistory getSuiteHist(String srvCode, int buildTypeId, int normalizedBaseBranch) {
+        int srvId = ITeamcityIgnited.serverIdToInt(srvCode);
+        RunHistKey runHistKey = new RunHistKey(srvId, buildTypeId, normalizedBaseBranch);
 
         SuiteHistory hist;
         try {
             hist = runHistInMemCache.get(runHistKey,
-                () -> loadSuiteHistory(srvIdMaskHigh, buildTypeId, normalizedBaseBranch));
+                () -> loadSuiteHistory(srvCode, buildTypeId, normalizedBaseBranch));
         }
         catch (ExecutionException e) {
             throw ExceptionUtil.propagateException(e);
@@ -214,9 +220,10 @@ public class HistoryCollector {
     }
 
     @AutoProfiling
-    protected SuiteHistory loadSuiteHistory(int srvId,
-        int buildTypeId,
-        int normalizedBaseBranch) {
+    protected SuiteHistory loadSuiteHistory(String srvCode,
+                                            int buildTypeId,
+                                            int normalizedBaseBranch) {
+        int srvId = ITeamcityIgnited.serverIdToInt(srvCode);
         Map<Integer, SuiteInvocation> suiteRunHist = histDao.getSuiteRunHist(srvId, buildTypeId, normalizedBaseBranch);
 
         logger.info("***** Found history for suite "
@@ -230,7 +237,7 @@ public class HistoryCollector {
         missedBuildsIds.removeAll(suiteRunHist.keySet());
 
         if (!missedBuildsIds.isEmpty()) {
-            Map<Integer, SuiteInvocation> addl = addSuiteInvocationsToHistory(srvId, missedBuildsIds, normalizedBaseBranch);
+            Map<Integer, SuiteInvocation> addl = addSuiteInvocationsToHistory(srvCode, missedBuildsIds, normalizedBaseBranch);
 
             suiteRunHist.putAll(addl);
         }
@@ -257,26 +264,39 @@ public class HistoryCollector {
         runHistInMemCache.invalidate(inv);
     }
 
+    @Nonnull
+    private Set<Integer> getFilteringParameters(String srvCode) {
+        Set<String> importantParameters = new HashSet<>();
+
+        cfg.getTeamcityConfig(srvCode)
+                .filteringParameters()
+                .stream()
+                .map(IBuildParameterSpec::name)
+                .forEach(importantParameters::add);
+
+        return importantParameters.stream().map(k -> compactor.getStringId(k)).collect(Collectors.toSet());
+    }
 
     @AutoProfiling
-    protected Map<Integer, SuiteInvocation> addSuiteInvocationsToHistory(int srvId,
-        HashSet<Integer> missedBuildsIds, int normalizedBaseBranch) {
+    protected Map<Integer, SuiteInvocation> addSuiteInvocationsToHistory(String srvCode,
+                                                                         HashSet<Integer> missedBuildsIds,
+                                                                         int normalizedBaseBranch) {
+
+        Set<Integer> filteringParameters = getFilteringParameters(srvCode);
+        BiPredicate<Integer, Integer> paramsFilter = (k, v) -> filteringParameters.contains(k);
+
         Map<Integer, SuiteInvocation> suiteRunHist = new HashMap<>();
         int successStatusStrId = compactor.getStringId(TestOccurrence.STATUS_SUCCESS);
 
         logger.info(Thread.currentThread().getName() + "addSuiteInvocationsToHistory: getAll: " + missedBuildsIds.size());
 
+        int srvId = ITeamcityIgnited.serverIdToInt(srvCode);
         Iterables.partition(missedBuildsIds, 32 * 10).forEach(
             chunk -> {
                 fatBuildDao.getAllFatBuilds(srvId, chunk).forEach((buildCacheKey, fatBuildCompacted) -> {
                     if (!applicableForHistory(fatBuildCompacted))
                         return;
 
-
-                    //todo implement parameter filter based on TC Bot conf
-
-                    BiPredicate<Integer, Integer> paramsFilter = (k, v) -> false;
-
                     SuiteInvocation sinv = new SuiteInvocation(srvId, normalizedBaseBranch, fatBuildCompacted, compactor, paramsFilter);
 
                     Stream<ITest> tests = fatBuildCompacted.getAllTests();
@@ -305,12 +325,12 @@ public class HistoryCollector {
     }
 
     /**
-     * @param srvId Server id.
+     * @param srvCode Server code.
      * @param buildTypeId Build type id.
      * @param normalizedBaseBranch Normalized base branch.
      */
-    public ISuiteRunHistory getSuiteRunHist(int srvId, int buildTypeId,  int  normalizedBaseBranch) {
-        return getSuiteHist(srvId, buildTypeId, normalizedBaseBranch);
+    public ISuiteRunHistory getSuiteRunHist(String srvCode, int buildTypeId,  int  normalizedBaseBranch) {
+        return getSuiteHist(srvCode, buildTypeId, normalizedBaseBranch);
     }
 
 
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/RunHistSync.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/RunHistSync.java
deleted file mode 100644
index 3b3ed9c..0000000
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/RunHistSync.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.tcignited.history;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.annotation.concurrent.GuardedBy;
-import javax.inject.Inject;
-
-import org.apache.ignite.ci.teamcity.ignited.runhist.Invocation;
-import org.apache.ignite.ci.teamcity.ignited.runhist.RunHistKey;
-import org.apache.ignite.tcbot.common.conf.IDataSourcesConfigSupplier;
-import org.apache.ignite.tcservice.ITeamcity;
-import org.apache.ignite.tcbot.common.conf.IBuildParameterSpec;
-import org.apache.ignite.tcbot.persistence.IStringCompactor;
-
-/**
- * Calculate required statistic for build if was not already calculated.
- */
-public class RunHistSync {
-    /** Compactor. */
-    @Inject private IStringCompactor compactor;
-
-    /** Config. */
-    @Inject private IDataSourcesConfigSupplier cfg;
-
-    /**
-     * @param branchName Branch name.
-     */
-    @Nonnull
-    public static String normalizeBranch(@Nullable String branchName) {
-        String branch = branchName == null ? ITeamcity.DEFAULT : branchName;
-
-        if (ITeamcity.REFS_HEADS_MASTER.equals(branch))
-            return ITeamcity.DEFAULT;
-
-        if (ITeamcity.MASTER.equals(branch))
-            return ITeamcity.DEFAULT;
-
-        return branch;
-    }
-
-    @Nonnull public Set<Integer> getFilteringParameters(String srvCode) {
-        Set<String> importantParameters = new HashSet<>();
-
-        cfg.getTeamcityConfig(srvCode)
-            .filteringParameters()
-            .stream()
-            .map(IBuildParameterSpec::name)
-            .forEach(importantParameters::add);
-
-        return importantParameters.stream().map(k -> compactor.getStringId(k)).collect(Collectors.toSet());
-    }
-}