Re: [Rails] batch processing question
On Sun, Sep 5, 2010 at 5:44 PM, badnaam <asitkmishra@gmail.com> wrote:
> In my app a user can set the status of a Post to different flags like
> 'v' - visible, 'd' - mark for delete etc.
>
> These flags are set via controller actions.
>
> I have a batch process that runs and cleans all the posts marked for
> delete.
>
> Post.find(:all, :conditions => ['status = ?', 'd']).each do |p|
> p.destroy end
>
> This batch process runs every x many minutes.
>
> Let's say a user marks the post with 'd' => batch process runs at some
> points => while the process is running the user marks the post as 'v'.
> Now inside the batch process the record is already targeted for delete
> and will be when the do loop is done, but the flag has changed via the
> controller action.
>
> Ideally, if this happens I would like to not delete that post in the
> batch process.
>
> What's the best way to handle this?
Interesting. My first reaction is -- why a batch job? Why not just delete
the thing when it's flagged and be done with it? :-)
Second thought - how long does this batch job take? I would think it'd
be so fast the chance of a status state conflict would be pretty small.
But assuming you really need to do this:
Have each status = 'd' assignment put the post id on a job queue and
have your batch job use that instead of your AR find. When a post is
set to status 'v', remove the post from the queue -- shouldn't be much
overhead if you keep the queue in memory.
FWIW,
--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com
twitter: @hassan
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home