Ignore duplicated URN in logs

Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
(cherry picked from commit 8025a397e6)
pull/31646/head
Benoit Tigeot 10 months ago committed by Matt Farina
parent bdcf920183
commit bbad438779
No known key found for this signature in database
GPG Key ID: 92C44A3D421FF7F9

@ -24,6 +24,7 @@ import (
"log/slog"
"net/http"
"strings"
"sync"
"time"
"github.com/santhosh-tekuri/jsonschema/v6"
@ -181,11 +182,16 @@ var URNResolver URNResolverFunc = func(urn string) (any, error) {
// boolean-true schema to avoid hard failures (back-compat behavior).
type urnLoader struct{}
// warnedURNs ensures we log the unresolved-URN warning only once per URN.
var warnedURNs sync.Map
func (l urnLoader) Load(urlStr string) (any, error) {
if doc, err := URNResolver(urlStr); err == nil && doc != nil {
return doc, nil
}
slog.Warn("unresolved URN reference ignored; using permissive schema", "urn", urlStr)
if _, loaded := warnedURNs.LoadOrStore(urlStr, struct{}{}); !loaded {
slog.Warn("unresolved URN reference ignored; using permissive schema", "urn", urlStr)
}
return jsonschema.UnmarshalJSON(strings.NewReader("true"))
}

Loading…
Cancel
Save