Matar tareas colgadas en Foreman
En esta breve entrada explico como matar tareas colgadas en la herramienta Foreman. Esta entrada va sobre todo para mis apuntes. Si no sabes lo que es Foreman, hace un tiempo te expliqué en que consistía.
Matar tareas colgadas en Foreman
De vez en cuando se quedan tareas colgadas en esta herramienta, sobre todo, por lo menos en mi caso, cuando quiero sincronizar un producto o un repositorio. Generalmente estas tareas se pueden consultar desde la interfaz web, pero no permite matarlas.
Para conseguir ese fin nos debemos ir a la consola de comandos. Una vez allí accedemos a PostgreSQL
su - postgres
Y listamos las tareas pendientes:
$ psql foreman foreman=# select id, label, started_at, state, result from foreman_tasks_tasks where state != 'stopped';
En mi caso:
La primera columna (id) del volcado muestra el ID de la tarea; la tercera columna (started_at) también es importante. Todas las tareas previas con estado «error» se deberían detener.
Lo que tenemos que hacer ahora es copiar los ID asociados y utilizar la consola de «foreman-rake» para abortar las tareas:
foreman-rake console irb(main)> ForemanTasks::Task.find("e7f49632-0c78-44a0-ac6e-b4c235a82936").destroy irb(main)> ForemanTasks::Task.find("06682faa-839b-4dc6-bbcf-0562b3ea1c3f").destroy ...
Una vez hecho esto se recomienda verificar y corregir la integridad de la base de datos:
foreman-rake katello:reimport Importing Katello::Erratum Importing Katello::PackageGroup Importing Katello::PuppetModule Importing Katello::Rpm (...) Importing Katello::Srpm Importing Katello::ModuleStream Importing Katello::YumMetadataFile Importing Katello::FileUnit Importing Katello::Subscription Importing Katello::Pool Importing Katello::DockerManifest Importing Katello::DockerManifestList Importing Katello::DockerTag Importing Katello::ContentViewPuppetEnvironment
De esta maenra ya tendríamos que tener nuestra herramienta lista para trabajar sin tareas con error.