Não é possível restaurar porque o sidekiq não solta

Tenho um site em execução no ECS com RDS. Estou tentando restaurar o banco de dados (conforme descrito aqui: Restore failed `entity2char already exists' RDS Postgres 13.7 - #7 by RGJ).

O problema neste ponto é que o backup não inicia porque está pausando, aguardando o sidekiq. Ele afirma que está aguardando 60 segundos, mas esperei 60 minutos e ele nunca parou de esperar.

Então, decidi que removeria, criaria e migraría o banco de dados antes da restauração (tenho certeza de que foi isso que funcionou da última vez), mas ainda não consigo remover o banco de dados porque 6 tarefas o mantêm aberto.

SELECT application_name,client_addr FROM pg_stat_activity;

Mostra isso (e há 6 sidekiqs com conexões ativas)

 psql                                  | 10.3.2.155
 PostgreSQL JDBC Driver                | 127.0.0.1
                                       | 127.0.0.1
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.3.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.34
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
 sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.34

Um desses endereços é o ECS, o outro é um contêiner que iniciei em um EC2. Em ambos os contêineres, executei sv stop unicorn, que em outros contextos foi suficiente para conseguir remover o banco de dados.

Ah. E agora parei o contêiner no EC2, então essas conexões devem estar apenas pendentes, já que ele foi desligado sem fechá-las? Talvez eu precise reiniciar o banco de dados novamente. (Reiniciar o banco de dados parou essas conexões, e agora ele mostra apenas conexões ociosas do unicorn desligado).

O que faço para matar o sidekiq? Eu entro no redis e limpo tudo? (Já fiz isso antes e posso pesquisar para descobrir novamente).

Você só precisa parar todas as instâncias (contêineres, unicórnios) que estejam executando o sidekiq.

Era o que eu teria pensado, mas mesmo depois de parar o contêiner que executava o sidekiq, o postgres ainda mostrava conexões ativas. Da mesma forma, eu havia feito um sv stop unicorn na instância ECS, mas o postgres ainda mostrava conexões ativas.

Reiniciei o servidor RDS, aumentei o contêiner na EC2 (as instâncias na ECS não têm espaço em disco suficiente para uma restauração), sv stop unicorn, em seguida, excluí, criei, restaurei o banco de dados e agora estou tentando uma restauração.

Muito obrigado pela sua ajuda. Eu realmente aprecio!

1 curtida