88fantasy opened a new pull request, #12208:
URL: https://github.com/apache/seatunnel/pull/12208

   ### Purpose of this pull request
   
   Implements #12204 (part of the umbrella #12207). Adds two new modules:
   
   - `seatunnel-lineage`: engine-agnostic contract — job/environment/cluster 
config resolution, the `LineageEvent`/`LineageDataset` model, OpenLineage-spec 
dataset naming, and a pluggable `LineageBackend` SPI.
   - `seatunnel-lineage-openlineage`: the default backend — OpenLineage 1.29.0 
model classes plus a hand-written `httpclient 4.5.13` transport.
   
   No engine wiring in this PR. The Zeta and Flink call sites are #12205 and 
#12206, implemented as PR #{{PR2}} and PR #{{PR3}}, both built on top of this 
branch.
   
   ### Does this PR introduce _any_ user-facing change?
   
   Yes. 11 new optional `env {}` options, all prefixed `openlineage_`:
   
   | Option | Type | Default |
   |---|---|---|
   | `openlineage_enabled` | Boolean | `false` |
   | `openlineage_transport` | String | `"http"` |
   | `openlineage_url` | String | (none) |
   | `openlineage_namespace` | String | `"seatunnel"` |
   | `openlineage_auth_token` | String | (none — env/cluster-level only, see 
below) |
   | `openlineage_timeout_ms` | Int | `10000` |
   | `openlineage_retry_times` | Int | `3` |
   | `openlineage_run_facet` | String | `"seatunnel_properties"` |
   | `openlineage_run_properties` | Map | (none) |
   | `openlineage_heartbeat_min_interval_ms` | Long | `3600000` (1h) |
   | `openlineage_producer` | String | `https://seatunnel.apache.org/<version>` 
|
   
   `openlineage_enabled` defaults to `false`, so this PR changes nothing for 
any existing job. Full description in 
`docs/en(zh)/introduction/concepts/lineage.md`.
   
   No existing option is renamed, removed, or has its default value changed.
   
   ### How was this patch tested?
   
   - Unit tests for config resolution/precedence (`LineageConfigTest`), dataset 
naming against the OpenLineage naming spec (`LineageDatasetNamingTest`, 
`LineageDatasetFactoryTest`), event model serialization (`LineageEventTest`), 
`LineageBackend` SPI discovery (`LineageBackendDiscoveryTest`), and the 
OpenLineage backend/transport (`OpenLineageBackendTest`) — including a case 
asserting that a configuration error (bad/missing URL) is logged without 
leaking the raw endpoint (which can carry userinfo/query parameters).
   - `EnvOptionRuleTest` covers that `openlineage_auth_token` is rejected when 
present in a job's `env {}` — it may only come from a process environment 
variable or cluster-level configuration, because job config can be persisted or 
serialized into a `JobGraph`.
   - Verified directly (not just asserted in a test) that SeaTunnel's existing 
shaded `ObjectMapper` corrupts OpenLineage's facets: `@JsonAnyGetter` stops 
working after shading, and a facet's custom properties get wrapped in a literal 
`additionalProperties` key instead of being inlined, with no exception raised. 
This is why the new modules bring their own unshaded Jackson rather than 
reusing SeaTunnel's existing HTTP/JSON utilities.
   - `./mvnw -q -DskipTests verify` across the whole reactor — 470 modules, 
BUILD SUCCESS.
   - Dependency footprint checked with `mvn dependency:list 
-DincludeScope=runtime` on the new modules against `known-dependencies.txt`; 
the only net-new runtime jar is `openlineage-java-1.29.0.jar`, now registered 
there and in `seatunnel-dist/release-docs/LICENSE`. `httpcore` is pinned to 
`4.4.16` (the version already used elsewhere in the distribution) to avoid a 
second version landing in `seatunnel-dist`.
   
   ### Check list
   
   * [x] New JAR binary package (`io.openlineage:openlineage-java:1.29.0`) — 
License Notice added, see the `LICENSE` diff in this PR
   * [x] Documentation updated (`docs/en`, `docs/zh`)
   * [ ] `incompatible-changes.md` — not applicable, this PR only adds new 
optional configuration
   * [ ] Connector-specific checklist items — not applicable, this PR does not 
touch a connector
   


-- 
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]

Reply via email to