mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-14 10:53:34 +00:00
rebase: bump the github-dependencies group with 3 updates
Bumps the github-dependencies group with 3 updates: [github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go), [github.com/aws/aws-sdk-go-v2/service/sts](https://github.com/aws/aws-sdk-go-v2) and [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang). Updates `github.com/Azure/azure-sdk-for-go/sdk/azidentity` from 1.8.2 to 1.9.0 - [Release notes](https://github.com/Azure/azure-sdk-for-go/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md) - [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azidentity/v1.8.2...sdk/azcore/v1.9.0) Updates `github.com/aws/aws-sdk-go-v2/service/sts` from 1.33.18 to 1.33.19 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/sns/v1.33.18...service/sns/v1.33.19) Updates `github.com/prometheus/client_golang` from 1.21.1 to 1.22.0 - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.21.1...v1.22.0) --- updated-dependencies: - dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azidentity dependency-version: 1.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies - dependency-name: github.com/aws/aws-sdk-go-v2/service/sts dependency-version: 1.33.19 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-dependencies - dependency-name: github.com/prometheus/client_golang dependency-version: 1.22.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
committed by
mergify[bot]
parent
0b811ff8b1
commit
72c19ab743
2
vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/log/log.go
generated
vendored
2
vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/log/log.go
generated
vendored
@ -44,7 +44,7 @@ func Should(cls Event) bool {
|
||||
if log.lst == nil {
|
||||
return false
|
||||
}
|
||||
if log.cls == nil || len(log.cls) == 0 {
|
||||
if len(log.cls) == 0 {
|
||||
return true
|
||||
}
|
||||
for _, c := range log.cls {
|
||||
|
51
vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/temporal/resource.go
generated
vendored
51
vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/temporal/resource.go
generated
vendored
@ -11,9 +11,17 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// backoff sets a minimum wait time between eager update attempts. It's a variable so tests can manipulate it.
|
||||
var backoff = func(now, lastAttempt time.Time) bool {
|
||||
return lastAttempt.Add(30 * time.Second).After(now)
|
||||
}
|
||||
|
||||
// AcquireResource abstracts a method for refreshing a temporal resource.
|
||||
type AcquireResource[TResource, TState any] func(state TState) (newResource TResource, newExpiration time.Time, err error)
|
||||
|
||||
// ShouldRefresh abstracts a method for indicating whether a resource should be refreshed before expiration.
|
||||
type ShouldRefresh[TResource, TState any] func(TResource, TState) bool
|
||||
|
||||
// Resource is a temporal resource (usually a credential) that requires periodic refreshing.
|
||||
type Resource[TResource, TState any] struct {
|
||||
// cond is used to synchronize access to the shared resource embodied by the remaining fields
|
||||
@ -31,24 +39,43 @@ type Resource[TResource, TState any] struct {
|
||||
// lastAttempt indicates when a thread/goroutine last attempted to acquire/update the resource
|
||||
lastAttempt time.Time
|
||||
|
||||
// shouldRefresh indicates whether the resource should be refreshed before expiration
|
||||
shouldRefresh ShouldRefresh[TResource, TState]
|
||||
|
||||
// acquireResource is the callback function that actually acquires the resource
|
||||
acquireResource AcquireResource[TResource, TState]
|
||||
}
|
||||
|
||||
// NewResource creates a new Resource that uses the specified AcquireResource for refreshing.
|
||||
func NewResource[TResource, TState any](ar AcquireResource[TResource, TState]) *Resource[TResource, TState] {
|
||||
return &Resource[TResource, TState]{cond: sync.NewCond(&sync.Mutex{}), acquireResource: ar}
|
||||
r := &Resource[TResource, TState]{acquireResource: ar, cond: sync.NewCond(&sync.Mutex{})}
|
||||
r.shouldRefresh = r.expiringSoon
|
||||
return r
|
||||
}
|
||||
|
||||
// ResourceOptions contains optional configuration for Resource
|
||||
type ResourceOptions[TResource, TState any] struct {
|
||||
// ShouldRefresh indicates whether [Resource.Get] should acquire an updated resource despite
|
||||
// the currently held resource not having expired. [Resource.Get] ignores all errors from
|
||||
// refresh attempts triggered by ShouldRefresh returning true, and doesn't call ShouldRefresh
|
||||
// when the resource has expired (it unconditionally updates expired resources). When
|
||||
// ShouldRefresh is nil, [Resource.Get] refreshes the resource if it will expire within 5
|
||||
// minutes.
|
||||
ShouldRefresh ShouldRefresh[TResource, TState]
|
||||
}
|
||||
|
||||
// NewResourceWithOptions creates a new Resource that uses the specified AcquireResource for refreshing.
|
||||
func NewResourceWithOptions[TResource, TState any](ar AcquireResource[TResource, TState], opts ResourceOptions[TResource, TState]) *Resource[TResource, TState] {
|
||||
r := NewResource(ar)
|
||||
if opts.ShouldRefresh != nil {
|
||||
r.shouldRefresh = opts.ShouldRefresh
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
// Get returns the underlying resource.
|
||||
// If the resource is fresh, no refresh is performed.
|
||||
func (er *Resource[TResource, TState]) Get(state TState) (TResource, error) {
|
||||
// If the resource is expiring within this time window, update it eagerly.
|
||||
// This allows other threads/goroutines to keep running by using the not-yet-expired
|
||||
// resource value while one thread/goroutine updates the resource.
|
||||
const window = 5 * time.Minute // This example updates the resource 5 minutes prior to expiration
|
||||
const backoff = 30 * time.Second // Minimum wait time between eager update attempts
|
||||
|
||||
now, acquire, expired := time.Now(), false, false
|
||||
|
||||
// acquire exclusive lock
|
||||
@ -65,9 +92,8 @@ func (er *Resource[TResource, TState]) Get(state TState) (TResource, error) {
|
||||
break
|
||||
}
|
||||
// Getting here means that this thread/goroutine will wait for the updated resource
|
||||
} else if er.expiration.Add(-window).Before(now) {
|
||||
// The resource is valid but is expiring within the time window
|
||||
if !er.acquiring && er.lastAttempt.Add(backoff).Before(now) {
|
||||
} else if er.shouldRefresh(resource, state) {
|
||||
if !(er.acquiring || backoff(now, er.lastAttempt)) {
|
||||
// If another thread/goroutine is not acquiring/renewing the resource, and none has attempted
|
||||
// to do so within the last 30 seconds, this thread/goroutine will do it
|
||||
er.acquiring, acquire = true, true
|
||||
@ -121,3 +147,8 @@ func (er *Resource[TResource, TState]) Expire() {
|
||||
// Reset the expiration as if we never got this resource to begin with
|
||||
er.expiration = time.Time{}
|
||||
}
|
||||
|
||||
func (er *Resource[TResource, TState]) expiringSoon(TResource, TState) bool {
|
||||
// call time.Now() instead of using Get's value so ShouldRefresh doesn't need a time.Time parameter
|
||||
return er.expiration.Add(-5 * time.Minute).Before(time.Now())
|
||||
}
|
||||
|
Reference in New Issue
Block a user