variables: limit rekey eval to half the nack timeout (#15102)
In order to limit how much the rekey job can monopolize a scheduler worker, we limit how long it can run to 1min before stopping work and emitting a new eval. But this exactly matches the default nack timeout, so it'll fail the eval rather than getting a chance to emit a new one. Set the timeout for the rekey eval to half the configured nack timeout.
This commit is contained in:
parent
903b5baaa4
commit
38542f256e
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
variables: Fixed a bug where a long-running rekey could hit the nack timeout
|
||||||
|
```
|
|
@ -1053,7 +1053,7 @@ func (c *CoreScheduler) rotateVariables(iter memdb.ResultIterator, eval *structs
|
||||||
//
|
//
|
||||||
// Instead, we'll rate limit RPC requests and have a timeout. If we still
|
// Instead, we'll rate limit RPC requests and have a timeout. If we still
|
||||||
// haven't finished the set by the timeout, emit a new eval.
|
// haven't finished the set by the timeout, emit a new eval.
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
|
ctx, cancel := context.WithTimeout(context.Background(), c.srv.GetConfig().EvalNackTimeout/2)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
limiter := rate.NewLimiter(rate.Limit(100), 100)
|
limiter := rate.NewLimiter(rate.Limit(100), 100)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue