From f08be659c6c84ed71edbcf3bce86f2eb98519025 Mon Sep 17 00:00:00 2001 From: medcl Date: Wed, 27 May 2026 14:37:31 +0800 Subject: [PATCH 1/2] chore: fix duplicated handler issue --- modules/security/realm/authc/native/permission.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/security/realm/authc/native/permission.json b/modules/security/realm/authc/native/permission.json index 38d1c6770..a74e30874 100644 --- a/modules/security/realm/authc/native/permission.json +++ b/modules/security/realm/authc/native/permission.json @@ -591,9 +591,6 @@ {"name": "template.get", "methods": ["get"], "path": "/_template/:template_name" }, - {"name": "template.exists", "methods": ["head"], - "path": "/_template/:template_name" - }, {"name": "template.put", "methods": ["put", "post"], "path": "/_template/:template_name" }, From 9f8c4645c6d5bc66319005bf1fb615360e40340b Mon Sep 17 00:00:00 2001 From: medcl Date: Wed, 27 May 2026 14:37:09 +0800 Subject: [PATCH 2/2] chore: no silent panic in debug mode --- main.go | 3 +- plugin/setup/setup.go | 99 +++++++++++++----------- service/alerting/elasticsearch/engine.go | 8 +- 3 files changed, 60 insertions(+), 50 deletions(-) diff --git a/main.go b/main.go index 750505574..5e5d2b015 100644 --- a/main.go +++ b/main.go @@ -178,7 +178,8 @@ func main() { elastic2.InitTemplate(false) if global.Env().SetupRequired() { - for _, v := range modules { + for k, v := range modules { + log.Debugf("start module: %v", k) v.Value.Start() } } diff --git a/plugin/setup/setup.go b/plugin/setup/setup.go index c820751a9..cfc60b6df 100644 --- a/plugin/setup/setup.go +++ b/plugin/setup/setup.go @@ -195,28 +195,30 @@ func (module *Module) validate(w http.ResponseWriter, r *http.Request, ps httpro result := util.MapStr{} result["success"] = success - if r := recover(); r != nil { - var v string - switch r.(type) { - case error: - v = r.(error).Error() - case runtime.Error: - v = r.(runtime.Error).Error() - case string: - v = r.(string) - } - if v != "" { - success = false - result["error"] = util.MapStr{ - "reason": v, - } - if errType != "" { - result["type"] = errType + if !global.Env().IsDebug { + if r := recover(); r != nil { + var v string + switch r.(type) { + case error: + v = r.(error).Error() + case runtime.Error: + v = r.(runtime.Error).Error() + case string: + v = r.(string) } - if fixTips != "" { - result["fix_tips"] = fixTips + if v != "" { + success = false + result["error"] = util.MapStr{ + "reason": v, + } + if errType != "" { + result["type"] = errType + } + if fixTips != "" { + result["fix_tips"] = fixTips + } + code = http.StatusInternalServerError } - code = http.StatusInternalServerError } } module.WriteJSON(w, result, code) @@ -427,31 +429,33 @@ func (module *Module) initialize(w http.ResponseWriter, r *http.Request, ps http "secret_mismatch": secretMismatch, } result["success"] = success - - if r := recover(); r != nil { - var v string - switch r.(type) { - case error: - v = r.(error).Error() - case runtime.Error: - v = r.(runtime.Error).Error() - case string: - v = r.(string) - } - if v != "" { - success = false - result["error"] = util.MapStr{ - "reason": v, + if !global.Env().IsDebug { + if r := recover(); r != nil { + var v string + switch r.(type) { + case error: + v = r.(error).Error() + case runtime.Error: + v = r.(runtime.Error).Error() + case string: + v = r.(string) } - if errType != "" { - result["type"] = errType + if v != "" { + success = false + result["error"] = util.MapStr{ + "reason": v, + } + if errType != "" { + result["type"] = errType + } + if fixTips != "" { + result["fix_tips"] = fixTips + } + code = http.StatusInternalServerError } - if fixTips != "" { - result["fix_tips"] = fixTips - } - code = http.StatusInternalServerError } } + module.WriteJSON(w, result, code) }() err, client := module.initTempClient(request) @@ -793,12 +797,15 @@ func (module *Module) initializeTemplate(w http.ResponseWriter, r *http.Request, // recover from panic and return error message defer func() { - if v := recover(); v != nil { - module.WriteJSON(w, util.MapStr{ - "success": false, - "log": fmt.Sprintf("%v", v), - }, http.StatusOK) + if !global.Env().IsDebug { + if v := recover(); v != nil { + module.WriteJSON(w, util.MapStr{ + "success": false, + "log": fmt.Sprintf("%v", v), + }, http.StatusOK) + } } + }() request := &SetupRequest{} diff --git a/service/alerting/elasticsearch/engine.go b/service/alerting/elasticsearch/engine.go index 0d0b4e682..d1b70d241 100644 --- a/service/alerting/elasticsearch/engine.go +++ b/service/alerting/elasticsearch/engine.go @@ -1243,9 +1243,11 @@ func performChannels(channels []alerting.Channel, ctx map[string]interface{}, ra func (engine *Engine) GenerateTask(rule alerting.Rule) func(ctx context.Context) { return func(ctx context.Context) { defer func() { - if err := recover(); err != nil { - log.Error(err) - debug.PrintStack() + if !global.Env().IsDebug { + if err := recover(); err != nil { + log.Error(err) + debug.PrintStack() + } } }() err := engine.Do(&rule)