Re: using database for queuing operations?

From: Christopher Browne <cbbrowne(at)acm(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: using database for queuing operations?
Date: 2004-09-20 21:45:43
Message-ID: m3y8j4obqw.fsf@wolfe.cbbrowne.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Clinging to sanity, jamiel(at)istreamimaging(dot)com (Jeff Amiel) mumbled into her beard:
> .....or instead change the logic to:
>
> So you:
>
> 1. select for update, with the criteria outlined
> 2. Check the state (again) to see of we had that particular race condition.
> 3. If already processed or in processing, somebody else must already
> be working on it....go back to step 1
> 4, change the state
> 5. process the image
> 6. delete.
> 7 go to step 1.
>
> change the state, then process the image....then delete.

If you can identify some form of "process ID" for each of the
processors running concurrently, you might do something like:

1. Update for selection (converse of 'select for update' :-)

update nameq set action = 'in process', pid = 45676
where action <> 'in process' and (other criteria for grabbing the
record)

2. select * from nameq where pid = 45676 and action = 'in progress'

3. do your work, processing the image

4. update nameq set action= 'done', -- Or whatever is the appropriate
-- state
pid = NULL
where [criterion for the processed image...]

This way only one of the PIDs will get ownership of any given row for
step #2...

At the Unix level, this would be like making a "work" directory for
each work process, and having Step #1 try to do "mv file
$pid_work_dir".

The file can only get placed in one spot; if one "mv" wins, the others
necessarily lose. If one "set pid = my_pid" wins, no other one can do
so later.
--
let name="cbbrowne" and tld="acm.org" in String.concat "@" [name;tld];;
http://www3.sympatico.ca/cbbrowne/linux.html
"It's like a house of cards that Godzilla has been blundering
through." -- Moon, describing how system messages work on ITS

In response to

Browse pgsql-general by date

  From Date Subject
Next Message jao 2004-09-20 22:16:19 Re: Any reason not to use inheritance?
Previous Message Ramiro Batista da Luz 2004-09-20 21:28:49 unsubscribe