This sounds like a bug. Are you running git version?
On Thu, 2008-10-02 at 12:03 -0700, Matt Garland wrote:
> 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
_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel