Skip to content

Commit

Permalink
database plugin: Invalidate queue should cancel context first (#15933)
Browse files Browse the repository at this point in the history
To signal to any credentials rotating goroutines that they should cancel
pending operations, which reduces lock contention.
  • Loading branch information
swenson committed Jun 10, 2022
1 parent 2a638cd commit 28119df
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions builtin/logical/database/backend.go
Expand Up @@ -286,12 +286,15 @@ func (b *databaseBackend) GetConnectionWithConfig(ctx context.Context, name stri

// invalidateQueue cancels any background queue loading and destroys the queue.
func (b *databaseBackend) invalidateQueue() {
b.Lock()
defer b.Unlock()

// cancel context before grabbing lock to start closing any open connections
// this is safe to do without the lock since it is only written to once in initialization
// and can be canceled multiple times safely
if b.cancelQueue != nil {
b.cancelQueue()
}
b.Lock()
defer b.Unlock()

b.credRotationQueue = nil
}

Expand Down

0 comments on commit 28119df

Please sign in to comment.