zozo123 commented on PR #59232:
URL: https://github.com/apache/spark/pull/59232#issuecomment-6145750687

   Independent verification: **PASS+NOTES** at head 
`fee9de6ef9828167ec5654cd7c0a830e043acc96`, base 
`9b452e002fb9985afd5971e67ee7a646c8c2b207` (the merge base). The `git patch-id 
--stable` of the base-to-head diff is 
`b4c32997f587f785a7649fab1713cb78bdf3e088`. I did not write this change.
   
   The diff touches 4 files, all test sources plus one `worker_spec.proto` 
comment. Engine code does not change. All six review threads are resolved, and 
each requested fix is present at this head. The PR is `MERGEABLE` and `CLEAN`.
   
   Evidence. Each run used `./build/mvn -B -pl udf/worker/grpc -am -Dtest=none 
-Dsurefire.failIfNoSpecifiedTests=false 
-DwildcardSuites=org.apache.spark.udf.worker.grpc.DirectGrpcDispatcherIntegrationSuite
 test`.
   - macOS arm64 from a clean checkout at this head. 6/6 passed, including both 
launcher tests.
   - Linux arm64, `eclipse-temurin:17-jdk` (17.0.20.1), sources byte-identical 
to this head. PID 1 was `sleep infinity`, so orphans are never reaped. 6/6 
passed in 4 of 4 runs.
   - After each Linux run, `ps` showed exactly one `[java] <defunct>` with PPID 
1. That is the inner worker of the SIGKILL test, which exited after its 
launcher was SIGKILLed. `ProcessHandle.of(pid).isAlive()` returned `true` for 
it, and `/proc/<pid>/stat` showed state `Z`. So the zombie check in 
`assertWorkerStopped` is what lets the test pass on non-reaping hosts. No 
`ForwardingWorkerMain` or `EchoGrpcWorkerMain` process was left running on 
either host.
   
   The tests cover these lifecycle paths:
   - SIGTERM: session close.
   - Forced SIGKILL and parent death: `destroyForcibly` on the launcher stops 
the inner worker through its `onExit` parent watch.
   - Zombies: Linux state `Z` counts as exited.
   - Cleanup: launcher and worker are both gone after close.
   
   Notes, none blocking:
   - CI did not run these tests. The Maven job uses `-DskipTests`, and the 
`udf-worker` module in `dev/sparktestsupport/modules.py` only runs 
`udf-worker-core/test`. This gap predates this PR. The test evidence above is 
from local runs.
   - If the launcher dies before `EchoGrpcWorkerMain` reads 
`ProcessHandle.current().parent()`, the watch targets the reparent target. The 
window is test-only and narrow.
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to