Files
argo-cd/server/session/ratelimiter.go
jannfis ae49b45249 chore: Upgrade Go module to v2 (#5931)
* 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>
2021-04-01 20:44:18 +02:00

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
}
}