mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-01 19:17:58 +00:00
fix incorrect use of loop variable (#16872)
This fixes a couple of references to loop variables in parallel tests and deferred functions. When running a parallel test (calling `t.Parallel()`) combined with the table-driven pattern, it's necessary to copy the test case loop variable, otherwise only the last test case is exercised. This is documented in the `testing` package: https://pkg.go.dev/testing#hdr-Subtests_and_Sub_benchmarks `defer` statements that invoke a closure should also not reference a loop variable directly as the referenced value will change in each iteration of the loop. Issues were automatically found with the `loopvarcapture` linter.
This commit is contained in:
@@ -447,26 +447,25 @@ func (c *OperatorDiagnoseCommand) offlineDiagnostics(ctx context.Context) error
|
||||
goto SEALFAIL
|
||||
}
|
||||
|
||||
if seals != nil {
|
||||
for _, seal := range seals {
|
||||
// There is always one nil seal. We need to skip it so we don't start an empty Finalize-Seal-Shamir
|
||||
// section.
|
||||
if seal == nil {
|
||||
continue
|
||||
}
|
||||
// Ensure that the seal finalizer is called, even if using verify-only
|
||||
defer func(seal *vault.Seal) {
|
||||
sealType := diagnose.CapitalizeFirstLetter((*seal).BarrierType().String())
|
||||
finalizeSealContext, finalizeSealSpan := diagnose.StartSpan(ctx, "Finalize "+sealType+" Seal")
|
||||
err = (*seal).Finalize(finalizeSealContext)
|
||||
if err != nil {
|
||||
diagnose.Fail(finalizeSealContext, "Error finalizing seal.")
|
||||
diagnose.Advise(finalizeSealContext, "This likely means that the barrier is still in use; therefore, finalizing the seal timed out.")
|
||||
finalizeSealSpan.End()
|
||||
}
|
||||
finalizeSealSpan.End()
|
||||
}(&seal)
|
||||
for _, seal := range seals {
|
||||
// There is always one nil seal. We need to skip it so we don't start an empty Finalize-Seal-Shamir
|
||||
// section.
|
||||
if seal == nil {
|
||||
continue
|
||||
}
|
||||
seal := seal // capture range variable
|
||||
// Ensure that the seal finalizer is called, even if using verify-only
|
||||
defer func(seal *vault.Seal) {
|
||||
sealType := diagnose.CapitalizeFirstLetter((*seal).BarrierType().String())
|
||||
finalizeSealContext, finalizeSealSpan := diagnose.StartSpan(ctx, "Finalize "+sealType+" Seal")
|
||||
err = (*seal).Finalize(finalizeSealContext)
|
||||
if err != nil {
|
||||
diagnose.Fail(finalizeSealContext, "Error finalizing seal.")
|
||||
diagnose.Advise(finalizeSealContext, "This likely means that the barrier is still in use; therefore, finalizing the seal timed out.")
|
||||
finalizeSealSpan.End()
|
||||
}
|
||||
finalizeSealSpan.End()
|
||||
}(&seal)
|
||||
}
|
||||
|
||||
if barrierSeal == nil {
|
||||
|
||||
Reference in New Issue
Block a user