client: obey restart policy when attempts == 0

This commit is contained in:
Ryan Uber
2016-02-02 14:17:39 -08:00
parent f3e798fc45
commit d924de9bd0
2 changed files with 15 additions and 1 deletions

View File

@@ -26,6 +26,11 @@ type RestartTracker struct {
}
func (r *RestartTracker) NextRestart(exitCode int) (bool, time.Duration) {
// Hot path if no attempts are expected
if r.policy.Attempts == 0 {
return false, 0
}
// Check if we have entered a new interval.
end := r.startTime.Add(r.policy.Interval)
now := time.Now()

View File

@@ -77,5 +77,14 @@ func TestClient_RestartTracker_NoRestartOnSuccess(t *testing.T) {
if shouldRestart, _ := rt.NextRestart(0); shouldRestart {
t.Fatalf("NextRestart() returned %v, expected: %v", shouldRestart, false)
}
}
func TestClient_RestartTracker_ZeroAttempts(t *testing.T) {
t.Parallel()
p := testPolicy(true, structs.RestartPolicyModeFail)
p.Attempts = 0
rt := newRestartTracker(p)
if actual, when := rt.NextRestart(1); actual {
t.Fatalf("expect no restart, got restart/delay: %v", when)
}
}