Impossibile ripristinare perché sidekiq non lascia andare

Ho un sito in esecuzione su ECS con RDS. Sto cercando di ripristinare il database (come descritto qui: Restore failed `entity2char already exists' RDS Postgres 13.7 - #7 by RGJ).
Il problema a questo punto è che il backup non si avvia perché si mette in pausa in attesa di sidekiq. Afferma di attendere 60 secondi, ma ho atteso 60 minuti e non ha mai smesso di attendere.

Poi ho deciso che avrei eliminato, creato e migrato il database prima del ripristino (sono abbastanza sicuro che sia quello che ha funzionato l’ultima volta), ma non riesco ancora a eliminare il db perché 6 task lo hanno aperto.

SELECT application_name,client_addr FROM pg_stat_activity;

Mostra questo (e ci sono 6 sidekiq con connessioni attive)

 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

Uno di quegli indirizzi è l’ECS, l’altro un container che ho avviato su un EC2. In entrambi i container ho eseguito sv stop unicorn, che in altri contesti è stato sufficiente per poter eliminare il database.

Oh. E ora ho fermato il container sull’EC2, quindi quelle connessioni devono essere solo in attesa poiché si è spento senza chiuderle? Forse devo riavviare di nuovo il database. (Riavviare il database ha interrotto quelle connessioni e ora mostra solo connessioni inattive dal unicorn spento).

Cosa faccio per uccidere sidekiq? Vado in redis e cancello tutto? (L’ho già fatto prima e posso cercare su Google per capirlo di nuovo).

Devi solo arrestare tutte le istanze (container, unicorn) che eseguono sidekiq al loro interno.

Questo è quello che avrei pensato, ma anche dopo aver spento il container che eseguiva sidekiq, postgres mostrava ancora connessioni attive. Allo stesso modo, avevo eseguito un sv stop unicorn sull’istanza ECS, ma postgres mostrava ancora connessioni attive.

Ho riavviato il server RDS, ho avviato il container su EC2 (le istanze in ECS non hanno abbastanza spazio su disco per un ripristino), sv stop unicorn, quindi ho eliminato, creato e ripristinato il database e ora sto tentando un ripristino.

Grazie mille per il tuo aiuto. Lo apprezzo molto!

1 Mi Piace