How to make god stop process after an exception

75 views
Skip to first unread message

Luiz Eduardo Kowalski

unread,
Jun 6, 2012, 9:35:32 AM6/6/12
to god...@googlegroups.com
Hi all
Is there a way to make god doesn't setup a process if it throws an exception?
We use god to start some resque workers and sometimes, one of the workers throws an exception, and they doesn't start, but god says that the process is 'up', when actually, there are no workers running.

here is my .god file

num_workers.times do |num|
  God.watch do |w|
    w.dir = "#{rails_root}"
    w.name = "resque-#{num}"
    w.group = 'resque'
    w.interval = 5.seconds
    w.env = {"QUEUE"=>"*", "RAILS_ENV"=>rails_env}
    w.start = "/usr/bin/rake -f #{rails_root}/Rakefile environment resque:work"

    #w.uid = 'server'
    #w.gid = 'server'

    # restart if memory gets too high
    w.transition(:up, :restart) do |on|
      on.condition(:memory_usage) do |c|
        c.above = 350.megabytes
        c.times = 2
      end
    end

    # determine the state on startup
    w.transition(:init, { true => :up, false => :start }) do |on|
      on.condition(:process_running) do |c|
        c.running = true
      end
    end

    # determine when process has finished starting
    w.transition([:start, :restart], :up) do |on|
      on.condition(:process_running) do |c|
        c.running = true
        c.interval = 5.seconds
      end

      # failsafe
      on.condition(:tries) do |c|
        c.times = 5
        c.transition = :start
        c.interval = 5.seconds
      end
    end

    # start if process is not running
    w.transition(:up, :start) do |on|
      on.condition(:process_running) do |c|
        c.running = false
      end
    end
  end
Reply all
Reply to author
Forward
0 new messages