DanielLeens commented on PR #11307:
URL: https://github.com/apache/seatunnel/pull/11307#issuecomment-5662011492

   Thanks for the detailed status check, @SEZ9. I re-read every one of F1-F8 
directly against the current head (`2b832dc0e826f4fd456946f525ade7d83ddb4bbd`) 
rather than going off my own prior summary, and I can point you to exact lines 
for each:
   
   - **F1 (`.cmd` `disabledelayedexpansion`/`!CMD!` ordering)** — resolved, and 
resolved differently than the original bug shape. The current script sets 
`setlocal disabledelayedexpansion` once at the very top 
(`start-seatunnel-spark-3.5-connector-v2.cmd:17`) and never uses `!var!` 
delayed-expansion syntax anywhere in the file — it's `%var%` throughout, 
including the `CMD` variable set via the `for /f ... usebackq` loop (`:66-67`) 
and consumed at `:77`. There's no ordering hazard left because there's no 
delayed-expansion path left to order.
   - **F2 (`eval` in the `.sh`)** — resolved. The old `CMD=$(java ...) && eval 
$(echo "${CMD}" | tail -n 1)` pattern is gone entirely. The new script writes 
NUL-delimited args to a temp file only when a system property is set, reads 
them back into a real bash array 
(`start-seatunnel-spark-3.5-connector-v2.sh:81-84`), and execs 
`"${SPARK_HOME}/bin/spark-submit" "${spark_args[@]}"` directly (`:90`) — no 
`eval` anywhere in the file. `Spark35LauncherTest` actually runs the script 
with a payload containing `$(touch marker)`/backticks/`$HOME`/`*` and asserts 
nothing gets re-evaluated, so this is behaviorally proven, not just 
structurally absent.
   - **F5 (`.cmd` swallowing the java exit code)** — resolved. `EXIT_CODE` is 
captured immediately after the java invocation (`:52-53`) and propagated via 
`exit /b %EXIT_CODE%` on the non-234/non-zero branch (`:59-62`); the `for /f` 
loop that used to eat the real exit status is gone from that path entirely.
   - **F6 (unquoted `args`/`CLASS_PATH` in the `.sh`)** — resolved. `java_opts` 
is a proper bash array built and appended to element-by-element (`:53-63`), 
`CLASS_PATH` is expanded quoted at the `-cp` call site (`:74`), positional args 
are passed as `"$@"` (`:74`), and `spark_args` elements are read 
one-per-NUL-terminator into an array and expanded as `"${spark_args[@]}"` 
(`:90`) — no word-splitting/globbing surface left. (One caveat, noted below in 
the F4 answer: `java_opts=(${JAVA_OPTS:-})` at `:53` is deliberately left 
unquoted with `set -f`/`set +f` bracketing it, per the comment at `:50`, to 
preserve the historical whitespace-separated `JAVA_OPTS` behavior without 
pathname expansion — that's intentional back-compat, not a miss.)
   - **F3 (reflection shim as a known limitation)** — resolved via docs, as 
intended. `docs/en/engines/spark.md` and the zh counterpart both state the 3.5 
starter "reuses the translation layer compiled against Spark 3.3" and that 
row-encoder/batch-write tests exercise selected paths on 3.5.8 without full 
coverage — so the limitation is explicit, not implied.
   - **F8 (3.4.x guidance)** — resolved. `docs/en/engines/spark.md:19-21`: "For 
an existing Spark 3.4 deployment, retain the existing 
`seatunnel-spark-3-starter.jar`" — directly answers this.
   - **F4 (SLF4J binding)** — I want to be precise here rather than just say 
"resolved": what I checked is `seatunnel-spark-starter/pom.xml`'s shade 
`<artifactSet><excludes>`, which lists both 
`org.apache.logging.log4j:log4j-slf4j-impl` and `log4j-slf4j2-impl` (lines 
101-102) as **excluded from the shaded jar** (Spark's own server lib already 
provides one of them) — so there's no double-binding *inside the fat jar 
itself*. That's a real, correct answer to "are both bindings shaded in," but 
it's not the same claim as "the packaged `starter/logging/` directory of a 
rebuilt distribution contains only one binding" — I haven't personally looked 
at that directory's contents from an actual `seatunnel-dist` build, which is 
what I flagged as Issue 2 (Low) in my last review. So: F4 as "shade-exclude 
correctness" — confirmed. F4 as "verified from a real built distribution" — 
still open, tracked as my Issue 2, non-blocking.
   - **F7 (streaming/micro-batch test)** — still open, tracked as my Issue 3 
(Low). The docs no longer overclaim (they now point Spark 3.5 users at the 
batch template instead of streaming), which reduces the risk from "undocumented 
gap" to "coverage gap," but a dedicated streaming test doesn't exist yet.
   
   So: F1/F2/F3/F5/F6/F8 are resolved and independently re-verified by me 
against current source; F4 and F7 are open but Low-severity and already tracked 
in my last review as non-blocking. I don't see a source-level blocker remaining.
   
   On CI, since it's part of what I'm asked to factor in: as of this comment 
the apache-side `Build` check is still `IN_PROGRESS` on this head — I don't 
have a completed result to report yet either way, so I'm not drawing a 
conclusion from it this round.
   


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