#!/bin/bash
# scripts/stop_workers.sh
# Detener todos los workers de traducción

echo "Deteniendo workers de traducción..."

# Buscar y matar el proceso del pool
POOL_PID=$(ps aux | grep "[s]tart_worker_pool.php" | awk '{print $2}')

if [ -n "$POOL_PID" ]; then
    echo "Deteniendo pool (PID: $POOL_PID)..."
    kill -TERM $POOL_PID
    sleep 2
    
    # Verificar si terminó
    if ps -p $POOL_PID > /dev/null 2>&1; then
        echo "Pool no respondió a SIGTERM, enviando SIGKILL..."
        kill -9 $POOL_PID
    fi
    
    echo "✓ Pool detenido"
else
    echo "No se encontró pool activo"
fi

# Verificar workers huérfanos
ORPHAN_WORKERS=$(ps aux | grep "[T]ranslationWorker" | awk '{print $2}')

if [ -n "$ORPHAN_WORKERS" ]; then
    echo "Deteniendo workers huérfanos..."
    echo "$ORPHAN_WORKERS" | xargs kill -TERM
    sleep 1
    echo "✓ Workers huérfanos detenidos"
fi

# Verificar que no queden procesos
REMAINING=$(ps aux | grep -c "[T]ranslation")

if [ $REMAINING -eq 0 ]; then
    echo "✓ Todos los workers detenidos correctamente"
    exit 0
else
    echo "⚠ Advertencia: Aún hay $REMAINING procesos de traducción activos"
    ps aux | grep "[T]ranslation"
    exit 1
fi
