func.yaml schema generator truncates fractional `minimum` values (e.g. 0.01 -> 0)
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- go
- Ambito
- testing-qa, tooling
Direzione di ricerca
Start with schema/generator/main.go, then inspect the jsonschema dependency's reflect.go handling of minimum and maximum values. Compare the generated schema/func_yaml-schema.json with ValidateScale for fractional minima. Done means the published schema preserves fractional minimum values and agrees with runtime validation.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The func.yaml JSON schema is generated with github.com/alecthomas/jsonschema. Its number-keyword handling stores minimum/maximum as int (Type.Minimum int, reflect.go:60) and parses the tag value with strconv.Atoi — for both the jsonschema tag (numbericKeywords, reflect.go:614) and the jsonschema_extras tag (extraKeywords). A fractional minimum such as 0.01 fails to parse, the error is discarded, and the emitted schema gets minimum: 0.
As a result, schema-based validation is looser than the runtime ValidateScale. For example scale.kpa.target requires >= 0.01 at runtime, but the generated schema only enforces > 0 (via an exclusiveMinimum: true workaround), so a value like 0.001 passes the published schema/func_yaml-schema.json while ValidateScale rejects it at deploy time.
This is a pre-existing, generator-wide limitation affecting any fractional minimum (not specific to the scale fields): the library simply cannot express a non-integer minimum.
Possible fixes
- Post-process the generated schema in
schema/generator/main.goto set fractional minima after reflection (targeted, but per-field). - Switch to a jsonschema library / tag path that supports float minima, then regenerate
schema/func_yaml-schema.jsonso schema validation matchesValidateScale.
Context
Surfaced by the Copilot review of #4063:
https://github.com/knative/func/pull/4063#discussion_r4098380996
- Lingua principale
- Go
- Stelle
- 366
- Fork
- 226
- Merge medio
- 2g 17h
- PR unite (30g)
- 21
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di knative/func
-
Kafka sidecar: add a startupProbe so slow-starting functions aren't restart-loopedForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertakind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
KEDA deployer: default minReplicaCount prevents scale-to-zeroForse già presa @Tushar-Khandelwal-2004 l’ha presa 113 giorni fa. Apertalifecycle/stale
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
knative/func#3924 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
git/gitlab: default project webhooks to SSL verification when creating hooksForse già presa @Vi-shub l’ha presa 160 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
mcp: config add/remove handlers bypass readonly guardForse già presa @Elvand-Lie l’ha presa 162 giorni fa. Apertakind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
knative/func#3704 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
kind/cleanup
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di knative/func
Issue simili
-
bug triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
mvanhorn/cli-printing-press#5146 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
AvengeMedia/DankMaterialShell#3853 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno