amoghrajesh opened a new pull request, #73531:
URL: https://github.com/apache/airflow/pull/73531
<!-- SPDX-License-Identifier: Apache-2.0
https://www.apache.org/licenses/LICENSE-2.0 -->
<!--
Thank you for contributing!
Please provide above a brief description of the changes made in this pull
request.
Write a good git commit message following this guide:
https://chris.beams.io/posts/git-commit/
Please make sure that your code changes are covered with tests.
And in case of new features or big changes remember to adjust the
documentation.
For user-facing UI changes, please attach before/after screenshots (or a
short
screen recording) so reviewers can assess the visual impact.
Feel free to ping (in general) for the review if you do not see reaction for
a few days
(72 Hours is the minimum reaction time you can expect from volunteers) - we
sometimes miss notifications.
In case of an existing issue, reference it using one of the following:
* closes: #ISSUE
* related: #ISSUE
-->
---
##### Was generative AI tooling used to co-author this PR?
<!--
If generative AI tooling has been used in the process of authoring this PR,
please
change below checkbox to `[X]` followed by the name of the tool, uncomment
the "Generated-by".
-->
- [ ] Yes (please specify the tool below)
<!--
Generated-by: [Tool Name] following [the
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
-->
### Motivation
The go generate models just rule fails on main with:
```
go-jsonschema: Failed: cannot add struct field: could not generate type with
scope 'LiteralArgBindingValue': could not merge anyOf types: types list is
empty
```
The supervisor schema describes messages passed between the supervisor and
language SDKs. The Go SDK generates its models from that file. One field,
`LiteralArgBinding.value`, is free-form: it can hold any JSON value.
Pydantic describes that field's type as an **empty** schema:
```json
"JsonValue": {}
```
That is correct JSON Schema because an empty schema means "anything" but it
gives a code generator nothing to work from. The field is also optional, so the
schema says "either that, or null", and `go-jsonschema` cannot turn "anything
plus null" into a Go type. It gives up.
Nobody noticed because no CI job and no prek hook runs the generator. It is
a manual step, run only when the schema changes. (Maybe we fix that in a follow
up)
### What changed
Where the snapshot would emit an empty definition, it now spells out the
same meaning as an explicit list of JSON types. The generator then picks
`interface{}`, which is what the previously committed models already used.
The `title` is there so `--struct-name-from-title` keeps emitting a named
type instead of inlining the union at every use site.
This does not change what any message can carry.
`check-supervisor-schemas-versions` agrees and does not ask for a schema
version bump, which it would if the wire format had changed.
### About the size of the diff
The change to the schema itself is one definition. The large diff in
`models.gen.go` and `defaults.gen.go` is **not** produced by this fix: those
files were last regenerated before the generator broke, so they have drifted
from the schema since. Running the generator catches all of that up at once.
Some of the catch-up changes types the Go SDK exposes, for example:
```
- State interface{} -> + State string
- Value JsonValue -> + Value interface{}
```
Worth a careful look. All Go tests pass against the regenerated models.
### Testing
Run on this branch:
- `cd go-sdk && just generate-models` - succeeds (fails on `main`)
- `go build ./...` 0 clean
- `go test ./...` - all 12 packages pass
- `cd ts-sdk && pnpm exec tsc --noEmit` - clean
- `pnpm test` in `ts-sdk` - 22 files, 355 tests pass
- `prek run check-supervisor-schemas-versions --all-files` - passes
- `prek run generate-supervisor-schemas-snapshot --all-files` - reproduces
the committed schema
Also confirmed the failure is not environmental: it reproduces on a clean
`origin/main` worktree, under the Go version CI pins (1.25.13) as well as
1.27.1, and on `go-jsonschema` v0.24.1 as well as the pinned v0.23.1. So a
generator
version bump is not an alternative fix.
---
* Read the **[Pull Request
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
for more information. Note: commit author/co-author name and email in commits
become permanently public when merged.
* For fundamental code changes, an Airflow Improvement Proposal
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
is needed.
* When adding dependency, check compliance with the [ASF 3rd Party License
Policy](https://www.apache.org/legal/resolved.html#category-x).
* For significant user-facing changes create newsfragment:
`{pr_number}.significant.rst`, in
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
You can add this file in a follow-up commit after the PR is created so you
know the PR number.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]