Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Synchronous restart #93

Closed
vozerov opened this issue Nov 26, 2014 · 6 comments
Closed

Synchronous restart #93

vozerov opened this issue Nov 26, 2014 · 6 comments

Comments

@vozerov
Copy link

vozerov commented Nov 26, 2014

Good day!

Please, could you tell is it real to make synchronous restart of unicorn process or sidekiq process? We want to be sure that processes have been restarted.

Thank you!

@kostya
Copy link
Owner

kostya commented Nov 26, 2014

You mean block client until process restart finished?
This is not fast to implement, need to refactor code much. All client commands async for server. Except eye quit --stop_all which wait until all stopped, and then quit eye.
Not sure this is really needed, may be you need to use depend_on.

@vozerov
Copy link
Author

vozerov commented Nov 27, 2014

Yes, I mean block client until proccess restart finished. Hmm... I really don't know how to do it with depend_on :)
Would it work, if I restart unicorn through cmd like this:
if [ -f #{unicorn_pid} ] ; then kill -s USR2 cat #{unicorn_pid}; fi && while [ -e #{unicorn_pid}.oldbin ] ; do sleep 2; done
This command will block capistrano at deploy. So, would eye work well with it?

Thank you!

@kostya
Copy link
Owner

kostya commented Nov 27, 2014

блокирующих комманд нет (только load, и stop_all). все остальные команды как сигналы. опиши юз кейз, зачем такое вообще нужно?

@vozerov
Copy link
Author

vozerov commented Nov 27, 2014

Не, я имею ввиду если не в eye эту команду запихнуть, а просто из шелла ее запускать, то eye нормально подхватит рестарт unicorn'а?

В целом два кейса:

  1. Уже так работало :) Но это не критично - можно людей переучить
  2. Убедиться что новый код подхватился. Если unicorn не рестартанул за какое-то время, то деплой вылетает и выводит последние строчки из лога юникорна. Ну и разработчики сразу видят что изменения не пролились.

@kostya
Copy link
Owner

kostya commented Nov 27, 2014

понял кажется про синхронный рестарт. чтобы когда деплоишь узнать рестартанул процесс или нет (баг в коде). актуально наверно только для мягкого рестарта уникорна. остальные процессы просто умрут и не поднимутся.

ты можешь делать if [ -f #{unicorn_pid} ] ; then kill -s USR2 cat #{unicorn_pid} ; fi && while [ -e #{unicorn_pid}.oldbin ] ; do sleep 2; done, вне eye, по идее eye подцепит правильно что unicorn рестартанул.

@vozerov
Copy link
Author

vozerov commented Nov 27, 2014

Да, все верно. Да, if ... сработал и eye нормально подхватил рестарт unicorn'а.

Спасибо!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants