From afc8d22a9ffa5e50096c19eeec74ab913f16c01b Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 7 Jun 2024 13:29:51 -0400 Subject: [PATCH] fix for scoped bandwidth limits in agent.CanCreateShare; make relax actions error without failing (#606, #451) --- controller/limits/agent.go | 17 +++++++++++++---- controller/limits/relaxAction.go | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/controller/limits/agent.go b/controller/limits/agent.go index 838911c9..d1885e46 100644 --- a/controller/limits/agent.go +++ b/controller/limits/agent.go @@ -87,15 +87,24 @@ func (a *Agent) CanCreateShare(acctId, envId int, reserved, uniqueName bool, _ s return false, err } - bwcs := ul.toBandwidthArray(backendMode) - for _, bwc := range bwcs { - latestJe, err := a.isBandwidthClassLimitedForAccount(acctId, bwc, trx) + if scopedBwc, found := ul.scopes[backendMode]; found { + latestScopedJe, err := a.isBandwidthClassLimitedForAccount(acctId, scopedBwc, trx) if err != nil { return false, err } - if latestJe != nil { + if latestScopedJe != nil { return false, nil } + } else { + for _, bwc := range ul.bandwidth { + latestJe, err := a.isBandwidthClassLimitedForAccount(acctId, bwc, trx) + if err != nil { + return false, err + } + if latestJe != nil { + return false, nil + } + } } if ul.resource.GetShares() > store.Unlimited || (reserved && ul.resource.GetReservedShares() > store.Unlimited) || (reserved && uniqueName && ul.resource.GetUniqueNames() > store.Unlimited) { diff --git a/controller/limits/relaxAction.go b/controller/limits/relaxAction.go index f0df0441..454b03e0 100644 --- a/controller/limits/relaxAction.go +++ b/controller/limits/relaxAction.go @@ -44,11 +44,11 @@ func (a *relaxAction) HandleAccount(acct *store.Account, _, _ int64, bwc store.B switch shr.ShareMode { case string(sdk.PublicShareMode): if err := relaxPublicShare(a.str, edge, shr, trx); err != nil { - return errors.Wrap(err, "error relaxing public share") + logrus.Errorf("error relaxing public share '%v' for account '%v' (ignoring): %v", shr.Token, acct.Email, err) } case string(sdk.PrivateShareMode): if err := relaxPrivateShare(a.str, edge, shr, trx); err != nil { - return errors.Wrap(err, "error relaxing private share") + logrus.Errorf("error relaxing private share '%v' for account '%v' (ignoring): %v", shr.Token, acct.Email, err) } } }