2016-07-28 22 views
1

Ich habe etwa 30 sidekiq Jobs in der Zukunft geplant (lassen Sie uns Tage 1 in einem Tag für die nächsten 30 Tage).Sidekiq - Enqueued Job läuft von altem Code

Ich verwende Capistrano für den Einsatz. Also habe ich jederzeit 5 Release-Verzeichnisse. Lassen Sie uns sagen:

/var/www/release1/ (recent) 
/var/www/release2/ 
/var/www/release3/ 
/var/www/release4/ 
/var/www/release5/ 

Lassen Sie uns sagen, nach ein paar Tagen, mache ich eine neue Version. Jetzt laufen die zuvor geplanten Jobs noch mit dem alten Code. Wird das erwartet? Wie können wir das beheben, um sicherzustellen, dass das neueste Veröffentlichungsverzeichnis beim Start und nicht beim geplanten Zeitpunkt verwendet wird?

Antwort

1

Dies könnte daran liegen, dass der sidekiq-Prozess nach einer erfolgreichen Bereitstellung nicht neu gestartet wurde.

Stellen Sie sicher, dass Ihr Bereitstellungsvorgang sidekiq neu startet, und stellen Sie sicher, dass der Neustart tatsächlich funktioniert, da sidekiq-Prozesse sonst noch an altem Code festhalten.

https://github.com/mperham/sidekiq/wiki/Deployment

0

Ich würde nur für jemanden mit einer anderen Antwort beitragen möge, die in diese Situation von anderem Grunde bekommen könnte.

Es ist mir passiert, dass es einen sidekiq Zombie-Prozess lief. Also, selbst wenn ich sidekiq manuell stoppen und neu starten würde, hatte ich einen anderen sidekiq-Prozess, der mit altem Code lief. Daher ist es eine gute Idee, Unix htop Befehl oder ps aux | grep sidek auszuführen und versuchen, nach Zombie-Prozessen zu suchen.