Correction--after I ran the rake setup again, BOTH workers cause queries.

BdrbJobQueue Load (0.003223) SELECT * FROM `bdrb_job_queues` WHERE (`bdrb_job_queues`.`taken` = 0 AND `bdrb_job_queues`.`worker_name` = 'election_worker') LIMIT 1 FOR UPDATE


On Oct 2, 2008, at 11:08 AM, Matt Garland wrote:

I have two workers--jabber_worker, election_worker--and both are working great.

BUT I can see in my rails console that the queue table is being constantly polled for jabber_worker:

BdrbJobQueue Load (0.002401) SELECT * FROM `bdrb_job_queues` WHERE (`bdrb_job_queues`.`taken` = 0 AND `bdrb_job_queues`.`worker_name` = 'jabber_worker') LIMIT 1 FOR UPDATE

EVEN though my configuration file rules out enqueued tasks:

:backgroundrb:
 :port: 22222
 :ip: 0.0.0.0
 :environment: development
 :log: foreground
 :debug_log: true
 :persistent_disabled: true

I'm not sure why this is happening. It's true that I created jabber_worker BEFORE changing the configuration. But even when I rerun the rake set up, this persists.

So why is the config overrun? And why only for :jabber_worker?

I should say I am on OS X.

I should also say I don't understand exactly what the persisted queue is. I imagine it is useful for long-running jobs when some kind of logic is being applied to what goes next, and that logic can change.

That's not my case. jabber_worker just contacts a jabber server, pushing data out, adding and deleting users. election_worker maintains separate threads for a group of chat rooms, and kills or restarts them when the rails app tells it to, and it tells the rails app when an election period in a chat room is over and votes need to be counted.

Here's jabber worker:

class JabberWorker < BackgrounDRb::MetaWorker

 require 'xmpp4r/client'
 require 'xmpp4r/muc'

 set_worker_name :jabber_worker

 def create(args = nil)
   jid = Jabber::JID.new("[EMAIL PROTECTED]/rails")
   @client = Jabber::Client.new(jid)
   @client.connect
   @client.auth(JABBER_PWD)
   @client.send(Jabber::Presence.new)
   @conferenceClient={}
   create_chats
 end

 def create_chats
   Chat.all.each do |chat|
     muc = Jabber::MUC::SimpleMUCClient.new(@client)
     @conferenceClient[chat.name]=muc
address = "[EMAIL PROTECTED]/ rails"
     muc.join(Jabber::JID.new(address))
   end
 end

 def add_jabber_user(user)
   jid = Jabber::JID.new("[EMAIL PROTECTED]")
   client = Jabber::Client.new(jid)
   client.connect
   client.register(user.login)
   client.disconnect
 end

 def delete_jabber_user(user)
  jid = Jabber::JID.new("[EMAIL PROTECTED]")
  client = Jabber::Client.new(jid)
  client.connect
  client.auth(user.login)
  client.remove_registration
  client.disconnect
 end

 def push_individual_resource(args)
   jid = Jabber::JID.new("#{args[:[EMAIL PROTECTED]")
message = Jabber::Message::new(jid, args[:message]).set_type(:normal)
   @client.send(message)
 end

 def push_conference_resource(args)
jid = Jabber ::JID .new("#{args[:[EMAIL PROTECTED]") message = Jabber::Message::new(jid, args[:message]).set_type(:groupchat)
    @conferenceClient[args[:chat_name]].send(message)
 end


end

And here is election_worker for comparison:

class ElectionWorker< BackgrounDRb::MetaWorker

 set_worker_name :election_worker

 ELECTION_INTERVAL=10

 def create(args = nil)
    p "election worker created"
   @timers={}
 end

 def stop_elections(chat_id)
   if @timers.key? chat_id
     @timers[chat_id].kill
   end
   p "elections stopped for #{chat_id}"
 end

 def start_elections(chat_id)
   p "elections started for #{chat_id}"
    @timers[chat_id]=fresh_election_timer(chat_id)
     p "elections started for #{chat_id} AFTER"
 end

 def restart_election_cycle(chat_id)
   stop_elections(chat_id)
   start_elections(chat_id)
 end

 def fresh_election_timer(chat_id)
   p "fresh timer #{chat_id}"
   timer=Thread.new do
     loop do
       sleep ELECTION_INTERVAL
       Chat.find(chat_id).do_election
     end
   end
   timer
 end

end
_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel

_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel

Reply via email to