Tengo un clúster de tres mongrels ejecutándose bajo nginx, y despliego la aplicación usando Capistrano 2.4.3. Cuando "límite de implementación" cuando hay un sistema en ejecución, el comportamiento es:Capistrano no reinicia correctamente los clústeres Mongrel
- La aplicación se implementó. El código se actualizó con éxito.
En la salida de la tapa de despliegue, no es lo siguiente:
- ejecutar "sudo -p 'sudo contraseña:' mongrel_rails cúmulo :: reinician -C /var/www/rieles/miaplicacion/corriente/config/mongrel_cluster.yml"
- servidores: [ "MyIP"]
- [MyIP] comando de ejecución de
- ** [:: cabo MyIP] detener el puerto 9096
- ** [:: cabo MyIP] parar puerto 9097
- ** [:: cabo MyIP] detener el puerto 9098
- ** [:: cabo MyIP] comenzado ya el puerto 9096
- ** [:: cabo MyIP] comenzado ya el puerto 9097
- ** [ out :: myip] ya inició el puerto 9098
- Compruebo inmediatamente en el servidor y encuentro que Mongrel todavía se está ejecutando, y los archivos PID todavía están presentes en las tres instancias anteriores.
- Poco tiempo después (menos de un minuto), encuentro que Mongrel ya no se está ejecutando, los archivos PID se han ido y no se ha podido reiniciar.
- Si comienzo mongrel en el servidor a mano, la aplicación se inicia correctamente.
Parece que 'mongrel_rails cúmulo :: reinicio' no es propiamente la espera de un punto antes de intentar un reinicio del clúster. ¿Cómo diagnostico y arreglo este problema?
EDIT: Aquí está la respuesta:
mongrel_cluster, en la tarea de "reinicio", sólo hace esto:
def run
stop
start
end
No hace ninguna espera o la comprobación para ver que el proceso de salir antes invocando "inicio". Esto es a known bug with an outstanding patch submitted. Apliqué el parche a Mongrel Cluster y el problema desapareció.
Esto está en el camino correcto. Ver mi edición a la pregunta: hay un parche para mongrel_cluster que corrige el comportamiento. – Pete