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]

Reply via email to