fix: prevent wrapper script from killing itself in cleanup
- Remove overly aggressive pattern 'python.*pytest' that matched wrapper itself - Add current PID check to avoid killing wrapper process - Add exclusion for wrapper and debug script names - This fixes exit code 137 (SIGKILL) issue where wrapper killed itself Root cause: cleanup function was killing the wrapper process itself, causing immediate termination with no output in CI. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -16,12 +16,11 @@ def cleanup_all_processes():
|
|||||||
print("🧹 [CLEANUP] Performing aggressive cleanup...")
|
print("🧹 [CLEANUP] Performing aggressive cleanup...")
|
||||||
|
|
||||||
# Kill by pattern - use separate calls to avoid shell injection
|
# Kill by pattern - use separate calls to avoid shell injection
|
||||||
|
# Avoid killing ourselves by being more specific
|
||||||
patterns = [
|
patterns = [
|
||||||
"embedding_server",
|
"embedding_server",
|
||||||
"hnsw_embedding",
|
"hnsw_embedding",
|
||||||
"zmq",
|
"zmq",
|
||||||
"python.*pytest",
|
|
||||||
"scripts/ci_debug_pytest",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
for pattern in patterns:
|
for pattern in patterns:
|
||||||
@@ -30,12 +29,23 @@ def cleanup_all_processes():
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Clean up any hanging Python processes with specific patterns
|
# Clean up specific pytest processes but NOT the wrapper itself
|
||||||
try:
|
try:
|
||||||
result = subprocess.run(["ps", "aux"], capture_output=True, text=True, timeout=5)
|
result = subprocess.run(["ps", "aux"], capture_output=True, text=True, timeout=5)
|
||||||
lines = result.stdout.split("\n")
|
lines = result.stdout.split("\n")
|
||||||
|
current_pid = str(os.getpid())
|
||||||
|
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if "python" in line and ("test_" in line or "pytest" in line or "embedding" in line):
|
# Skip our own process
|
||||||
|
if current_pid in line:
|
||||||
|
continue
|
||||||
|
# Only kill actual pytest processes, not wrapper processes
|
||||||
|
if (
|
||||||
|
"python" in line
|
||||||
|
and "pytest" in line
|
||||||
|
and "ci_pytest_wrapper.py" not in line
|
||||||
|
and "ci_debug_pytest.py" not in line
|
||||||
|
):
|
||||||
try:
|
try:
|
||||||
pid = line.split()[1]
|
pid = line.split()[1]
|
||||||
subprocess.run(["kill", "-9", pid], timeout=2)
|
subprocess.run(["kill", "-9", pid], timeout=2)
|
||||||
|
|||||||
Reference in New Issue
Block a user