Então, depois de vasculhar o código-fonte iniciado, a única vez que um script upstart pode anular uma operação é na fase 'pré' (pré-início / pré-parada). Quando você usa um gatilho como start on stopping foo
, o serviço recebe o evento após a fase pre-stop
de 'foo', portanto, não é possível iniciar o backup sem que ele pare antes.
No entanto, quando você tem uma condição start on stopping foo
, o serviço 'foo' não pára até que o serviço que ouve o evento seja concluído. Então, o que acabei fazendo é simplesmente repetir para sempre até que a condição que estou verificando seja atendida. Não é a melhor solução, mas funciona.
Uma solução alternativa também teria sido criar um arquivo .override
para o serviço e colocar um script pre-stop
na substituição. A condição pode então ser verificada no pre-stop
e a emissão de start
impedirá que o serviço pare.
Infelizmente, isso não funciona muito para mim devido a outros motivos complicados, mas pode ser uma opção para qualquer outra pessoa que tente fazer isso.