Skip to content

Commit

Permalink
fix(cfn): Add retries when force cache refreshing (#3200)
Browse files Browse the repository at this point in the history
For cache refreshing can fail for some reason (e.g. read
timeout), but should generally succeed. This patch makes
this task more reliable by retrying if there was a failure
for 5 minutes.

Signed-off-by: Xavi León <xavi.leon@adevinta.com>
  • Loading branch information
xavileon authored and marchello2000 committed Oct 1, 2019
1 parent 62d85df commit 3bad6ca
Showing 1 changed file with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,29 @@

package com.netflix.spinnaker.orca.clouddriver.tasks.providers.aws.cloudformation;

import com.netflix.spinnaker.orca.Task;
import com.netflix.spinnaker.orca.OverridableTimeoutRetryableTask;
import com.netflix.spinnaker.orca.TaskResult;
import com.netflix.spinnaker.orca.clouddriver.CloudDriverCacheService;
import com.netflix.spinnaker.orca.clouddriver.tasks.AbstractCloudProviderAwareTask;
import com.netflix.spinnaker.orca.pipeline.model.Stage;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class CloudFormationForceCacheRefreshTask extends AbstractCloudProviderAwareTask
implements Task {
implements OverridableTimeoutRetryableTask {
static final String REFRESH_TYPE = "CloudFormation";

@Autowired CloudDriverCacheService cacheService;

private final long backoffPeriod = TimeUnit.SECONDS.toMillis(10);
private final long timeout = TimeUnit.MINUTES.toMillis(5);

@Override
public TaskResult execute(@Nonnull Stage stage) {
String cloudProvider = getCloudProvider(stage);
Expand All @@ -60,4 +64,14 @@ public TaskResult execute(@Nonnull Stage stage) {

return TaskResult.SUCCEEDED;
}

@Override
public long getBackoffPeriod() {
return backoffPeriod;
}

@Override
public long getTimeout() {
return timeout;
}
}

0 comments on commit 3bad6ca

Please sign in to comment.