argo-cd/util/guard/guard.go
Jakub Ciolek bf0661ea81
fix: make webhook payload handlers recover from panics (#24862)
Signed-off-by: Jakub Ciolek <jakub@ciolek.dev>
2025-10-09 17:26:22 -04:00

20 lines
446 B
Go

package guard
import (
"runtime/debug"
)
// Minimal logger contract; avoids depending on any specific logging package.
type Logger interface{ Errorf(string, ...any) }
// Run executes fn and recovers a panic, logging a component-specific message.
func RecoverAndLog(fn func(), log Logger, msg string) {
defer func() {
if r := recover(); r != nil {
if log != nil {
log.Errorf("%s: %v %s", msg, r, debug.Stack())
}
}
}()
fn()
}