Files
dbx/crates/dbx-core
t8y2 791d55661e fix(agent): prevent zombie processes on agent cleanup
Root cause:
- AgentDriverClient::kill() is called during Drop to clean up child processes
- Old implementation called child.wait() and ignored errors with let _
- When wait() fails (e.g., process already killed by signal), child is not reaped and becomes zombie

Fix:
- Use try_wait() non-blocking polling, up to 100ms timeout
- Avoid long blocking in Drop during async cleanup
- Still perform final blocking wait() as fallback after timeout
- Log all wait errors for debugging

Impact:
- All JDBC agents (Oracle/DB2/DM8/XuguDB etc.)
- Prevents zombie process accumulation during long-running sessions
2026-06-22 14:59:05 +08:00
..