diff --git a/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/ProviderHealthTracker.java b/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/ProviderHealthTracker.java index 6f66180f3..c8ffc2fb4 100644 --- a/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/ProviderHealthTracker.java +++ b/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/ProviderHealthTracker.java @@ -29,7 +29,6 @@ public class ProviderHealthTracker { private final long maximumStalenessTimeMs; private AtomicLong lastSuccessfulUpdateTimeMs = new AtomicLong(-1); - @Autowired public ProviderHealthTracker(long maximumStalenessTimeMs) { this.maximumStalenessTimeMs = maximumStalenessTimeMs; } diff --git a/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/internal/ClouddriverService.java b/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/internal/ClouddriverService.java index 169ca3426..277422229 100644 --- a/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/internal/ClouddriverService.java +++ b/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/internal/ClouddriverService.java @@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import java.util.List; import java.util.concurrent.atomic.AtomicReference; @@ -36,9 +37,6 @@ */ @Slf4j public class ClouddriverService implements HealthTrackable, InitializingBean { - - private static final String GROUP_KEY = "clouddriverService"; - private final ClouddriverApi clouddriverApi; @Autowired @@ -53,52 +51,37 @@ public ClouddriverService(ClouddriverApi clouddriverApi) { } @Override - public void afterPropertiesSet() throws Exception { + public void afterPropertiesSet() { try { - getAccounts(); - getApplications(); + refreshAccounts(); + refreshApplications(); } catch (Exception e) { log.warn("Cache initialization failed: ", e); } } public List getAccounts() { - return new SimpleJava8HystrixCommand<>( - GROUP_KEY, - "getAccounts", - () -> { - accountCache.set(clouddriverApi.getAccounts()); - healthTracker.success(); - return accountCache.get(); - }, - (Throwable cause) -> { - logFallback("account", cause); - List accounts = accountCache.get(); - if (accounts == null) { - throw new HystrixBadRequestException("Clouddriver is unavailable", cause); - } - return accounts; - }).execute(); + return accountCache.get(); } public List getApplications() { - return new SimpleJava8HystrixCommand<>( - GROUP_KEY, - "getApplications", - () -> { - applicationCache.set(clouddriverApi.getApplications()); - healthTracker.success(); - return applicationCache.get(); - }, - (Throwable cause) -> { - logFallback("application", cause); - List applications = applicationCache.get(); - if (applications == null) { - throw new HystrixBadRequestException("Clouddriver is unavailable", cause); - } - return applications; - }) - .execute(); + return applicationCache.get(); + } + + @Scheduled(fixedDelayString = "${fiat.clouddriverRefreshMs:30000}") + public void refreshAccounts() { + accountCache.set( + clouddriverApi.getAccounts() + ); + healthTracker.success(); + } + + @Scheduled(fixedDelayString = "${fiat.clouddriverRefreshMs:30000}") + public void refreshApplications() { + applicationCache.set( + clouddriverApi.getApplications() + ); + healthTracker.success(); } private static void logFallback(String resource, Throwable cause) {