Рельсы + xmpp4r + пума. Когда пума запускается, когда демон XMPP отключается

У меня есть инициализатор, который запускает клиент xmpp4r. Он отлично работает, когда я запускаю сервер puma как обычный процесс. Но когда я запускаю puma как демона (опция -d), он работает несколько секунд и отключается от сервера xmpp. У меня есть отдельный поток, который обрабатывает повторные подключения, но он не работает, когда puma является демоном.

def init_reconnection_timer
    timers = Timers::Group.new
    periodic_timer = timers.every(5) do
      if @client.is_disconnected?
        begin
          Rails.logger.info "XmppConnector ##### reconnecting to #{APP_CONFIG['broker_address']} ..."
          connect
          Rails.logger.info "XmppConnector ##### connected!"
          presence
        rescue
        end
      end
    end
    Thread.new do
      loop do
        timers.wait
      end
    end
  end

У меня ничего нет из этого кода в журнале, когда puma является демоном. Сразу после запуска rails приложение работает несколько секунд, получает сообщения, iqs, ошибок нет, как обычно. Потом молча отключается. Вот конструктор моего класса:

class XmppConnector
  include Singleton

  def initialize
    @jid = Jabber::JID::new(APP_CONFIG['broker_username'] + '@' + APP_CONFIG['broker_address'])
    @jid.resource='rails'
    @client = Jabber::Client::new(@jid)
    connect
    init_presence_callback
    init_message_callback
    init_iq_callback
    init_reconnection_timer
    init_subscription_requests
    presence
    @protocol_interface = RemoteInterface.new
    Rails.logger.info "XmppConnector ##### initialized"
  end

Но когда пума запускается без опции -d - вообще никаких проблем. То же самое в разработке и производстве, моя рабочая станция и сервер. ruby 2.0.0 puma 2.9.2 Минимальное количество потоков: 0, максимальное количество потоков: 16 рельсов 4.2.0beta4


person Oleg Antonyan    schedule 05.12.2014    source источник


Ответы (1)


В puma была ошибка, связанная с потоками в инициализаторах, и теперь она исправлена ​​https://github.com/puma/puma/issues/617

person Oleg Antonyan    schedule 25.03.2015