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]
