From 871bf52c618a143c05b79f7ed90944ac8756497b Mon Sep 17 00:00:00 2001 From: Alexander Scheel Date: Mon, 10 Apr 2023 13:24:03 -0400 Subject: [PATCH] Only log stopping rollback manager once (#20041) When testing the Rollback Manager's one-time invocation in Enterprise, it was noticed that due to the channel being closed, we'd always hit this case and thus spam logs rather quickly with this message. Switch to a boolean flip to log this once, as it is not executed in parallel and thus doesn't need a sync.Once. This only affected anyone calling the test core's StopAutomaticRollbacks() helper. Signed-off-by: Alexander Scheel --- vault/rollback.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/vault/rollback.go b/vault/rollback.go index 844ea563a403..3dd11d61078e 100644 --- a/vault/rollback.go +++ b/vault/rollback.go @@ -96,6 +96,12 @@ func (m *RollbackManager) Stop() { m.inflightAll.Wait() } +// StopTicker stops the automatic Rollback manager's ticker, causing us +// to not do automatic rollbacks. This is useful for testing plugin's +// periodic function's behavior, without trying to race against the +// rollback manager proper. +// +// THIS SHOULD ONLY BE CALLED FROM TEST HELPERS. func (m *RollbackManager) StopTicker() { close(m.stopTicker) } @@ -104,6 +110,7 @@ func (m *RollbackManager) StopTicker() { func (m *RollbackManager) run() { m.logger.Info("starting rollback manager") tick := time.NewTicker(m.period) + logTestStopOnce := false defer tick.Stop() defer close(m.doneCh) for { @@ -116,7 +123,10 @@ func (m *RollbackManager) run() { return case <-m.stopTicker: - m.logger.Info("stopping rollback manager ticker for tests") + if !logTestStopOnce { + m.logger.Info("stopping rollback manager ticker for tests") + logTestStopOnce = true + } tick.Stop() } }