From 94302605a9a659d2264d6c42cd5f98b9619cd7be Mon Sep 17 00:00:00 2001 From: Donny Yung Date: Wed, 23 Oct 2019 14:52:30 -0400 Subject: [PATCH] fix(concourse): Fix caching of concourse build events (#525) Builds should be added to cache correctly now and the admin fastforward command should work https://github.com/spinnaker/spinnaker/issues/5047 --- .../igor/concourse/ConcourseBuildMonitor.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseBuildMonitor.java b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseBuildMonitor.java index dcc78d983..c8f1a9ebf 100644 --- a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseBuildMonitor.java +++ b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseBuildMonitor.java @@ -124,8 +124,14 @@ private JobDelta jobDelta(ConcourseProperties.Host host, Job job) { List genericBuilds = builds.stream() .map(build -> concourseService.getGenericBuild(jobPath, build, false)) + .filter(b -> !cache.getEventPosted(host, job, cursor, b.getNumber())) .collect(Collectors.toList()); + if (genericBuilds.size() == 0) { + cache.setLastPollCycleTimestamp(host, job, cursor); + return null; + } + return new JobDelta(host, job, cursor, lowerBound, upperBound, genericBuilds); } @@ -152,9 +158,14 @@ protected void commitDelta(JobPollingDelta delta, boolean sendEvents) { jobDelta.getHost(), jobDelta.getJob(), jobDelta.getCursor(), build.getNumber()); if (!eventPosted && sendEvents) { sendEventForBuild(jobDelta.getHost(), jobDelta.getJob(), build); - cache.setEventPosted( - jobDelta.getHost(), jobDelta.getJob(), jobDelta.getCursor(), build.getNumber()); } + log.info( + "({}) caching build {} for : {}", + jobDelta.getHost().getName(), + build.getNumber(), + build.getFullDisplayName()); + cache.setEventPosted( + jobDelta.getHost(), jobDelta.getJob(), jobDelta.getCursor(), build.getNumber()); } cache.setLastPollCycleTimestamp(jobDelta.getHost(), jobDelta.getJob(), jobDelta.getCursor()); } @@ -162,7 +173,11 @@ protected void commitDelta(JobPollingDelta delta, boolean sendEvents) { private void sendEventForBuild(ConcourseProperties.Host host, Job job, GenericBuild build) { if (echoService.isPresent()) { - log.info("({}) pushing event for : {}", host.getName(), build.getFullDisplayName()); + log.info( + "({}) pushing build {} for : {}", + host.getName(), + build.getNumber(), + build.getFullDisplayName()); GenericProject project = new GenericProject(