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/11/22 12:47:15 UTC

[ignite-teamcity-bot] branch master updated: IGNITE-10372 Optimize master trends page - Fixes #79.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new ac05aad  IGNITE-10372  Optimize master trends page - Fixes #79.
ac05aad is described below

commit ac05aadd12bef3a5bee0b7dae86cb8a32bb264b8
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Thu Nov 22 15:47:07 2018 +0300

    IGNITE-10372  Optimize master trends page - Fixes #79.
    
    Signed-off-by: Dmitriy Pavlov <dp...@apache.org>
---
 .../ci/teamcity/ignited/TeamcityIgnitedImpl.java   | 60 +++++++++++++++-------
 .../ignited/fatbuild/FatBuildCompacted.java        | 10 ++--
 2 files changed, 48 insertions(+), 22 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 5e6e6b5..d37efe6 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
@@ -133,7 +133,10 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         final int unknownStatus = compactor.getStringId(STATUS_UNKNOWN);
 
         List<BuildRefCompacted> buildRefs = getAllBuildsCompacted(buildTypeId, branchName)
-            .stream().filter(b -> b.status() != unknownStatus).collect(Collectors.toList());
+            .stream()
+            .filter(b -> b.isFinished(compactor))
+            .filter(b -> b.status() != unknownStatus)
+            .collect(Collectors.toList());
 
         int idSince = 0;
         int idUntil = buildRefs.size() - 1;
@@ -158,13 +161,11 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
                     if (stopFilter.get())
                         return addBuild.get();
 
-                    FatBuildCompacted build = getFatBuild(b.id(), SyncMode.LOAD_NEW);
+                    Date date = getBuildStartDate(b.id());
 
-                    if (build == null || build.isFakeStub())
+                    if (date == null)
                         return false;
 
-                    Date date = build.getStartDate();
-
                     if (sinceDate != null && untilDate != null)
                         if ((date.after(sinceDate) || date.equals(sinceDate)) &&
                             (date.before(untilDate) || date.equals(untilDate)))
@@ -231,32 +232,32 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         int minDiffId = since ? low : high;
         long temp;
 
-        FatBuildCompacted highBuild = getFatBuild(buildRefs.get(high).id(), SyncMode.LOAD_NEW);
-        FatBuildCompacted lowBuild = getFatBuild(buildRefs.get(low).id(), SyncMode.LOAD_NEW);
+        Date highBuildStartDate = getBuildStartDate(buildRefs.get(high).id());
+        Date lowBuildStartDate = getBuildStartDate(buildRefs.get(low).id());
 
-        if (highBuild != null && !highBuild.isFakeStub()){
-            if (highBuild.getStartDate().before(key))
+        if (highBuildStartDate != null) {
+            if (highBuildStartDate.before(key))
                 return since ? allDatesOutOfBounds : someDatesOutOfBounds;
         }
 
-        if (lowBuild != null && !lowBuild.isFakeStub()){
-            if (lowBuild.getStartDate().after(key))
+        if (lowBuildStartDate != null) {
+            if (lowBuildStartDate.after(key))
                 return since ? someDatesOutOfBounds : allDatesOutOfBounds;
         }
 
         while (low <= high) {
             int mid = (low + high) >>> 1;
-            FatBuildCompacted midVal = getFatBuild(buildRefs.get(mid).id(), SyncMode.LOAD_NEW);
+            Date midValStartDate = getBuildStartDate(buildRefs.get(mid).id());
 
-            if (midVal != null && !midVal.isFakeStub()) {
-                if (midVal.getStartDate().after(key))
+            if (midValStartDate != null) {
+                if (midValStartDate.after(key))
                     high = mid - 1;
-                else if (midVal.getStartDate().before(key))
+                else if (midValStartDate.before(key))
                     low = mid + 1;
                 else
                     return mid;
 
-                temp = midVal.getStartDate().getTime() - key.getTime();
+                temp = midValStartDate.getTime() - key.getTime();
 
                 if ((temp > 0 == since) && (Math.abs(temp) < minDiff)) {
                     minDiff = Math.abs(temp);
@@ -339,6 +340,22 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         return buildConditionDao.setBuildCondition(srvIdMaskHigh, cond);
     }
 
+    /**
+     * @param buildId Build id.
+     * @return build start date or null if build is fake stub or start date is not specified.
+     */
+    @GuavaCached(maximumSize = 2000, cacheNullRval = false)
+    @AutoProfiling
+    @Nullable public Date getBuildStartDate(int buildId) {
+        logger.info("Loading build [" + buildId + "] start date");
+
+        FatBuildCompacted highBuild = getFatBuild(buildId, SyncMode.LOAD_NEW);
+        if (highBuild == null || highBuild.isFakeStub())
+            return null;
+
+        return highBuild.getStartDate();
+    }
+
     /** {@inheritDoc} */
     @GuavaCached(maximumSize = 200, expireAfterAccessSecs = 30, softValues = true)
     @Override public FatBuildCompacted getFatBuild(int buildId, SyncMode mode) {
@@ -347,8 +364,13 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         if (mode == SyncMode.NONE) {
             if (existingBuild != null)
                 return existingBuild;
-            else
-                return new FatBuildCompacted(); // providing fake builds
+            else {
+                FatBuildCompacted buildCompacted = new FatBuildCompacted();
+
+                buildCompacted.setFakeStub(true);
+
+                return buildCompacted; // providing fake builds
+            }
         }
 
         FatBuildCompacted savedVer = buildSync.loadBuild(conn, buildId, existingBuild, mode);
@@ -419,7 +441,7 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
 
         runActualizeBuildRefs(srvNme, false, paginateUntil);
 
-        if(!paginateUntil.isEmpty()) {
+        if (!paginateUntil.isEmpty()) {
             //some builds may stuck in the queued or running, enforce loading now
             buildSync.doLoadBuilds(-1, srvNme, conn, paginateUntil);
         }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
index 419de92..bd4ec17 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
@@ -153,7 +153,11 @@ public class FatBuildCompacted extends BuildRefCompacted implements IVersionedEn
             setFlag(FAILED_TO_START_F, true);
 
         if (build.isFakeStub())
-            setFlag(FAKE_BUILD_F, true);
+            setFakeStub(true);
+    }
+
+    public void setFakeStub(boolean val) {
+        setFlag(FAKE_BUILD_F, val);
     }
 
     public void buildTypeName(String btName, IStringCompactor compactor) {
@@ -284,8 +288,8 @@ public class FatBuildCompacted extends BuildRefCompacted implements IVersionedEn
     }
 
     /** Start date. */
-    public Date getStartDate() {
-        return new Date(startDate);
+    @Nullable public Date getStartDate() {
+        return startDate > 0 ? new Date(startDate) : null;
     }
 
     /** {@inheritDoc} */