mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-10-29 17:52:32 +00:00
Audit: check if context is already cancelled when assessing viability for audit (#27531)
* check if context is already cancelled when assessing viability for audit * changelog
This commit is contained in:
@@ -462,6 +462,8 @@ func (b *Broker) IsRegistered(name string) bool {
|
|||||||
|
|
||||||
// isContextViable examines the supplied context to see if its own deadline would
|
// isContextViable examines the supplied context to see if its own deadline would
|
||||||
// occur later than a newly created context with a specific timeout.
|
// occur later than a newly created context with a specific timeout.
|
||||||
|
// Additionally, whether the supplied context is already cancelled, thus making it
|
||||||
|
// unviable.
|
||||||
// If the existing context is viable it can be used 'as-is', if not, the caller
|
// If the existing context is viable it can be used 'as-is', if not, the caller
|
||||||
// should consider creating a new context with the relevant deadline and associated
|
// should consider creating a new context with the relevant deadline and associated
|
||||||
// context values (e.g. namespace) in order to reduce the likelihood that the
|
// context values (e.g. namespace) in order to reduce the likelihood that the
|
||||||
@@ -472,6 +474,12 @@ func isContextViable(ctx context.Context) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
deadline, hasDeadline := ctx.Deadline()
|
deadline, hasDeadline := ctx.Deadline()
|
||||||
|
|
||||||
// If there's no deadline on the context then we don't need to worry about
|
// If there's no deadline on the context then we don't need to worry about
|
||||||
|
|||||||
@@ -160,11 +160,14 @@ func BenchmarkAuditBroker_File_Request_DevNull(b *testing.B) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TestBroker_isContextViable_basics checks the expected result of isContextViable
|
// TestBroker_isContextViable_basics checks the expected result of isContextViable
|
||||||
// for basic inputs such as nil and a never-ending context.
|
// for basic inputs such as nil, cancelled context and a never-ending context.
|
||||||
func TestBroker_isContextViable_basics(t *testing.T) {
|
func TestBroker_isContextViable_basics(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
require.False(t, isContextViable(nil))
|
require.False(t, isContextViable(nil))
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
cancel()
|
||||||
|
require.False(t, isContextViable(ctx))
|
||||||
require.True(t, isContextViable(context.Background()))
|
require.True(t, isContextViable(context.Background()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
5
changelog/27531.txt
Normal file
5
changelog/27531.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
```release-note:bug
|
||||||
|
core/audit: Audit logging a Vault request/response checks if the existing context
|
||||||
|
is cancelled and will now use a new context with a 5 second timeout.
|
||||||
|
If the existing context is cancelled a new context, will be used.
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user