Преглед на файлове

feature: #543 Rate limits are now per action-entity instead of per action

jamesread преди 1 година
родител
ревизия
ba29325c15
променени са 1 файла, в които са добавени 6 реда и са изтрити 0 реда
  1. 6 0
      service/internal/executor/executor.go

+ 6 - 0
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