CryoThrust opened a new pull request, #12992:
URL: https://github.com/apache/seatunnel/pull/12992
### Purpose of this pull request
Closes #12750. Follows the read-only scope agreed in that issue. #12688
brought both the job and checkpoint diagnosis paths into `dev`; #12631 was
closed as superseded. This branch starts from current `dev` (`4f5e32937`) and
contains only the realtime follow-up.
`--diagnose` can describe restart/checkpoint problems, but cannot yet
connect a persistently full queue to work in its downstream vertex. This adds
fixture-driven rules over the existing realtime edge/vertex endpoints, without
an LLM or new dependency.
### Does this PR introduce _any_ user-facing change?
Yes, for RUNNING jobs on unreleased `dev`. Diagnosis makes two additional
GET requests for realtime metrics. Job/checkpoint findings remain available if
either optional request fails or observability is disabled.
- Require the latest three consecutive completed buckets in the shared
endpoint window, with matching bucket widths and target vertex.
Missing/conflicting recent data cannot fall back to an older matched run.
- Preserve each queue ID. Backpressure ≥ 0.5 and fill ≥ 0.8 in every bucket
identify sustained pressure. Downstream sink/transform busyness is
corroborating evidence, not proof of cause; source read time alone is never
source attribution.
- Report sink prepare/commit time separately, normalized by bucket duration
and subtask count, including when sink write busyness is low.
- Report disabled, missing or insufficient evidence as a coverage gap. No
submit, stop, savepoint or provider construction is added.
Actual CLI output against loopback HTTP fixtures (synthetic timestamps,
five-second buckets):
```text
Job 852 (unnamed) — RUNNING
[warning] Queue -3 into vertex 1 was persistently backpressured in the
matched window. Downstream sink
writes were busy too; investigate this vertex as a bottleneck candidate.
(queueId=-3 targetVertexId=1
buckets=3 window=0..15000ms bucketMs=5000 median bpRatio=0.80
queueFillRatio=0.90)
```
With observability disabled:
```text
Job 852 (unnamed) — RUNNING
[info] Realtime pressure checks unavailable: engine.observability.enabled
is false.
```
English and Chinese CLI documentation includes the thresholds and evidence
limits.
### How was this patch tested?
```sh
cd seatunnel-cli
python -m pytest tests -q
ruff check .
black --check seatunnel_cli/diagnostics/realtime.py
```
Python 3.10 and 3.13 each pass 388 tests plus three subtests. Ruff and the
new module's Black check pass. Tests cover sustained/transient pressure,
stale/missing/conflicting buckets, partial windows, disabled metrics, shared
targets, idle upstream, commit-only work and non-default bucket widths.
Loopback HTTP tests exercise actual GET paths, terminal output, optional
endpoint failure and execution without constructing a model provider.
Root-only Maven `spotless:apply` and `verify -DskipTests` also pass. This
does not establish live-cluster behavior or a full Zeta reactor result;
model-generation benchmarks are unaffected by this model-free branch.
### Check list
* [x] Updated English and Chinese CLI documentation.
* [x] Added positive and negative tests to existing diagnosis/CLI test
classes.
* No new dependencies, binary packages, connector registration or
incompatible configuration changes.
--
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]