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} */