Corrected parameter name, typo, error message, and variable naming
This commit is contained in:
parent
e1036eaaf0
commit
baad906d24
@ -381,7 +381,7 @@ type Hook struct {
|
|||||||
PassEnvironmentToCommand []Argument `json:"pass-environment-to-command,omitempty"`
|
PassEnvironmentToCommand []Argument `json:"pass-environment-to-command,omitempty"`
|
||||||
PassArgumentsToCommand []Argument `json:"pass-arguments-to-command,omitempty"`
|
PassArgumentsToCommand []Argument `json:"pass-arguments-to-command,omitempty"`
|
||||||
JSONStringParameters []Argument `json:"parse-parameters-as-json,omitempty"`
|
JSONStringParameters []Argument `json:"parse-parameters-as-json,omitempty"`
|
||||||
MaxConcurrency int `json:"max-concurrency,omiempty"`
|
MaxConcurrency int `json:"maximum-concurrent-executions,omitempty"`
|
||||||
TriggerRule *Rules `json:"trigger-rule,omitempty"`
|
TriggerRule *Rules `json:"trigger-rule,omitempty"`
|
||||||
TriggerRuleMismatchHttpResponseCode int `json:"trigger-rule-mismatch-http-response-code,omitempty"`
|
TriggerRuleMismatchHttpResponseCode int `json:"trigger-rule-mismatch-http-response-code,omitempty"`
|
||||||
}
|
}
|
||||||
|
16
webhook.go
16
webhook.go
@ -44,7 +44,7 @@ var (
|
|||||||
watcher *fsnotify.Watcher
|
watcher *fsnotify.Watcher
|
||||||
signals chan os.Signal
|
signals chan os.Signal
|
||||||
|
|
||||||
limits = make(map[string]chan struct{})
|
hookExecutions = make(map[string]chan struct{})
|
||||||
)
|
)
|
||||||
|
|
||||||
func matchLoadedHook(id string) *hook.Hook {
|
func matchLoadedHook(id string) *hook.Hook {
|
||||||
@ -115,7 +115,7 @@ func main() {
|
|||||||
|
|
||||||
// initialize concurrency map
|
// initialize concurrency map
|
||||||
if hook.MaxConcurrency > 0 {
|
if hook.MaxConcurrency > 0 {
|
||||||
limits[hook.ID] = make(chan struct{}, hook.MaxConcurrency)
|
hookExecutions[hook.ID] = make(chan struct{}, hook.MaxConcurrency)
|
||||||
msg = fmt.Sprintf("%s (max: %d)", msg, hook.MaxConcurrency)
|
msg = fmt.Sprintf("%s (max: %d)", msg, hook.MaxConcurrency)
|
||||||
}
|
}
|
||||||
log.Println(msg)
|
log.Println(msg)
|
||||||
@ -219,15 +219,15 @@ func hookHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
log.Printf("%s got matched\n", id)
|
log.Printf("%s got matched\n", id)
|
||||||
|
|
||||||
// check if we have concurrency limits
|
// check if we have concurrency limits
|
||||||
if _, ok := limits[id]; ok {
|
if _, ok := hookExecutions[id]; ok {
|
||||||
if len(limits[id]) == cap(limits[id]) {
|
if len(hookExecutions[id]) == cap(hookExecutions[id]) {
|
||||||
log.Printf("reached concurrency limit for: %s (max=%d)", id, len(limits[id]))
|
log.Printf("reached concurrency limit for: %s (max=%d)", id, len(hookExecutions[id]))
|
||||||
w.WriteHeader(http.StatusTooManyRequests)
|
w.WriteHeader(http.StatusTooManyRequests)
|
||||||
fmt.Fprintf(w, "Error occurred while evaluating hook rules.")
|
fmt.Fprintf(w, "Hook reached maximum concurrent execution limit. Try again later.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer func() { <-limits[id] }()
|
defer func() { <-hookExecutions[id] }()
|
||||||
limits[id] <- struct{}{}
|
hookExecutions[id] <- struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
body, err := ioutil.ReadAll(r.Body)
|
body, err := ioutil.ReadAll(r.Body)
|
||||||
|
Loading…
Reference in New Issue
Block a user