Netflix/chaosmonkey · error

not terminating: check for min time between terminations fai

Error message

not terminating: check for min time between terminations failed

What it means

Returned by doTerminate when the min-time-between-terminations checker rejects the would-be termination (e.g. another termination happened too recently for this app); the wrapped error preserves the checker's reason for the violation.

Source

Thrown at term/term.go:159

		log.Printf("No eligible instances in group, nothing to terminate: %+v", group)
		return nil
	}

	log.Printf("Picked: %s", instance)

	loc, err := d.MonkeyCfg.Location()
	if err != nil {
		return errors.Wrap(err, "not terminating: could not retrieve location")
	}

	trm := chaosmonkey.Termination{Instance: instance, Time: d.Cl.Now(), Leashed: leashed}

	//
	// Check that we don't violate min time between terminations
	//
	err = d.Checker.Check(trm, *appCfg, d.MonkeyCfg.EndHour(), loc)
	if err != nil {
		return errors.Wrap(err, "not terminating: check for min time between terminations failed")
	}

	//
	// Record the termination with configured trackers
	//
	for _, tracker := range d.Trackers {
		err = tracker.Track(trm)
		if err != nil {
			return errors.Wrap(err, "not terminating: recording termination event failed")
		}
	}

	//
	// Actual instance termination happens here
	//
	err = killer.Execute(trm)
	if err != nil {
		return errors.Wrap(err, "termination failed")

View on GitHub (pinned to eaa28fb761)

Solutions

  1. Schedule the next run respecting the app's minimum interval config
  2. Inspect the wrapped checker error to see the elapsed-vs-required timing
  3. Do not force termination; this guard protects app stability
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at term/term.go:159 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Netflix/chaosmonkey@eaa28fb761 (2026-09-03). Data as JSON: /api/errors/e08ec7aa767d51d7. Report an issue: GitHub.