DanielLeens commented on PR #13008:
URL: https://github.com/apache/seatunnel/pull/13008#issuecomment-6538175860
Pushed `c7f7680336f373475511591b5b96b7576795d533` (merge of `dev` at
`3ac2d1cec6a`, no conflicts, plus one fix commit) addressing the three blockers
from the 2026-10-29 review on `bfd9bdddf5`.
**Issue 1 (High) - REST error envelope in both ITs.** The Jetty
`ExceptionHandlingFilter` (unchanged in this PR) serializes shaded
commons-lang3 `ExceptionUtils.getMessage(e)`, i.e. `<SimpleClassName>:
<message>`. The IT assertions now expect that envelope instead of the bare
text; the servlet and the shared filter are untouched.
-
`seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/RestApiIT.java:1135`,
`:1150`, `:1198` (foreign UUID, non-string tag value, non-object `tags`: all
three Jetty-port 400s in `testUpdateLocalMemberTagsOnlyMutatesTheServingMember`)
-
`seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/BasicAuthenticationIT.java:251`
(`testOperationEndpointsWithCorrectCredentials`)
- The legacy Hazelcast-port assertions (`testUpdateTagsFail`,
`testClearTags`) do not go through the Jetty filter and are left as they were.
**Issue 2 (High) - preserve the complete existing tag string map.**
`seatunnel-engine/seatunnel-engine-ui/src/views/managers/index.tsx:69`,
`:156-182`, `:239-245`: `selectMonitor` now remembers each existing entry under
the exact line it serialized it to; `parseTags` reuses the original key/value
pair for any line that still reads exactly like that and only parses new or
edited lines (split on the first `=`, key trimmed, value kept verbatim).
Entries are collected in a `Map` and converted with `Object.fromEntries`, so a
literal `__proto__` key becomes an own property instead of hitting the
prototype setter. Untouched entries such as key `zone=region`, value ` a=b ` or
key `__proto__` therefore round-trip unchanged, and the server contract is not
narrowed.
- Test:
`seatunnel-engine/seatunnel-engine-ui/src/tests/managers.spec.ts:226` `keeps
untouched tag strings verbatim and only parses edited lines`. On the previous
parser this fails: it sent `{ zone: 'region=prod', note: 'a=b' }` and dropped
`__proto__`.
**Issue 3 (Medium) - no polling restart after unmount.**
`seatunnel-engine/seatunnel-engine-ui/src/views/jobs/running-jobs.tsx:51-53`,
`:76`, `:82`: a `disposed` flag is set in `onUnmounted`; `fetch()` returns at
entry once disposed and never schedules the 5 s timer afterwards, so a
stop/savepoint/cancel POST that resolves after navigation no longer re-arms the
loop.
- Test: `seatunnel-engine/seatunnel-engine-ui/src/tests/jobs.spec.ts:124`
`Running Jobs does not restart polling when a job action completes after
unmount` (deferred `stopJob`, unmount, resolve, advance fake timers; asserts
`getRunningJobs` is not called again). On the previous code the continuation
calls `fetch()` a second time, so the assertion fails.
Local verification was limited to `spotless:apply` / `spotless:check` on
`connector-seatunnel-e2e-base` (clean). Compile, the UI lane
(vitest/type-check) and both `engine-v2-it` lanes are left to the fork CI per
the validation policy:
https://github.com/DanielLeens/seatunnel/actions/runs/41162746789 (queued at
the time of writing; no claim of green CI).
--
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]