mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-04-02 23:08:47 +02:00
* chore: Upgrade Go module to v2 Signed-off-by: jannfis <jann@mistrust.net> * Restore import order Signed-off-by: jannfis <jann@mistrust.net> * fix knowntypes_normalizer codegen error Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com> * fix codegen Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com> * fix Procfile Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com> Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
24 lines
585 B
Go
24 lines
585 B
Go
package session
|
|
|
|
import (
|
|
util "github.com/argoproj/argo-cd/v2/util/io"
|
|
"github.com/argoproj/argo-cd/v2/util/session"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
"golang.org/x/sync/semaphore"
|
|
)
|
|
|
|
func NewLoginRateLimiter(maxNumber int) func() (util.Closer, error) {
|
|
semaphore := semaphore.NewWeighted(int64(maxNumber))
|
|
return func() (util.Closer, error) {
|
|
if !semaphore.TryAcquire(1) {
|
|
log.Warnf("Exceeded number of concurrent login requests")
|
|
return nil, session.InvalidLoginErr
|
|
}
|
|
return util.NewCloser(func() error {
|
|
defer semaphore.Release(1)
|
|
return nil
|
|
}), nil
|
|
}
|
|
}
|