Não há como garantir qual gancho é executado primeiro no esquema de execução do gancho, mas é possível prever quais séries de gancho serão executadas primeiro. Quando uma relação é adicionada, os ganchos *-relation-joined
são acionados primeiro (em ambos os serviços, sem um vencedor claro de quem vai primeiro), seguidos pelos ganchos *-relation-changed
para cada serviço. Como você não pode garantir qual dos ganchos em um determinado estado de relação será disparado primeiro, você pode superar o gancho relation-changed
no charme do Postgres, colocando os comandos do conjunto de relações em relation-joined
hook em seu charme.
Isso não funcionará para cada charme / relação, pois depende de onde o levantamento pesado é feito para cada relação. Por exemplo, o encanto do MySQL faz todas as instruções de criação do banco de dados durante o relation-joined
hook, então o acima não ajudaria você a conseguir nada, já que você ainda teria a condição de corrida.
Idealmente, a menos que haja um bom realmente motivo, usar o que o encanto do postgres oferece é provavelmente o melhor caminho a seguir.