From ba29325c15cbf18941ee05113cf09b3d3140f448 Mon Sep 17 00:00:00 2001 From: jamesread Date: Tue, 8 Apr 2025 01:18:55 +0100 Subject: [PATCH] feature: #543 Rate limits are now per action-entity instead of per action --- service/internal/executor/executor.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/service/internal/executor/executor.go b/service/internal/executor/executor.go index ea32697..53cb077 100644 --- a/service/internal/executor/executor.go +++ b/service/internal/executor/executor.go @@ -87,6 +87,7 @@ type InternalLogEntry struct { Process *os.Process Username string Index int64 + EntityPrefix string /* The following 3 properties are obviously on Action normally, but it's useful @@ -249,6 +250,7 @@ func (e *Executor) ExecRequest(req *ExecutionRequest) (*sync.WaitGroup, string) ActionTitle: "notfound", ActionIcon: "💩", Username: req.AuthenticatedUser.Username, + EntityPrefix: req.EntityPrefix, } _, isDuplicate := e.GetLog(req.TrackingID) @@ -341,6 +343,10 @@ func getExecutionsCount(rate config.RateSpec, req *ExecutionRequest) int { then := time.Now().Add(-duration) for _, logEntry := range req.executor.GetLogsByActionId(req.Action.ID) { + if logEntry.EntityPrefix != req.EntityPrefix { + continue + } + if logEntry.DatetimeStarted.After(then) && !logEntry.Blocked { executions += 1