Skip Menu |

This queue is for tickets about the Queue-Beanstalk CPAN distribution.

Report information
The Basics
Id: 36152
Status: new
Priority: 0/
Queue: Queue-Beanstalk

People
Owner: Nobody in particular
Requestors: citrin [...] citrin.ru
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: (no value)
Fixed in: (no value)



Subject: reserve command is broken
reserve don't work with beanstalk 0.8, 0.9, 0.10, 0.11 Protocol docs: http://xph.us/git/beanstalkd/tree/doc/protocol.txt?id=r0.8 http://xph.us/git/beanstalkd/tree/doc/protocol.txt?id=r0.11 Job priority is not returned in reply to reserve command Path attached
Subject: path-Beanstalk.pm
--- Queue/Beanstalk.pm.orig 2008-05-24 16:09:08.000000000 +0400 +++ Queue/Beanstalk.pm 2008-05-24 16:59:00.000000000 +0400 @@ -396,9 +396,8 @@ if ($self->{'job_id'}) { # Unfinished job, let someone else have it - $self->_write_and_read("release " . $self->{'job_id'} . " " . $self->{'job_pri'} . " 0\r\n"); + $self->_write_and_read("release " . $self->{'job_id'} . " " . 2**32 . " 0\r\n"); $self->{'job_id'} = undef; - $self->{'job_pri'} = undef; $self->{'job_data'} = undef; } @@ -407,9 +406,9 @@ $self->{'select_timeout'} = $self->{'reserve_timeout'}; # set temporary timeout for reserve-request # Send request - my ($data, $bytes, $id, $pri) = $self->_write_and_read_data("reserve\r\n", sub { - if ($_[0] =~ m/reserved (\d+) (\d+) (\d+)/i) { - return ($3,$1,$2); # "bytes" value must be first return-parameter + my ($data, $bytes, $id) = $self->_write_and_read_data("reserve\r\n", sub { + if ($_[0] =~ m/reserved (\d+) (\d+)/i) { + return ($2,$1); # "bytes" value must be first return-parameter } else { return undef; } @@ -420,7 +419,6 @@ $self->{'select_timeout'} = $old_timeout; $self->{'job_id'} = $id; - $self->{'job_pri'} = $pri; $self->{'job_data'} = $data; return $data; @@ -429,19 +427,19 @@ sub release { my ($self, $pri, $delay) = @_; - if ($self->{'job_id'}) { + unless (defined $self->{'job_id'}) { $self->warn('no job reserved yet'); return undef; } + $pri %= 2**32 if defined $pri; my $res = $self->_write_and_read("release " . $self->{'job_id'} . " " . - ( ($pri % 2**32) || $self->{'job_pri'} ) . " " . # priority + ( $pri || 2**32 ) . " " . # priority ( defined $delay ? int($delay) : 0 ) . # delay "\r\n"); if ($res =~ m/RELEASED|BURIED/) { $self->{'job_id'} = undef; - $self->{'job_pri'} = undef; $self->{'job_data'} = undef; $self->next_server if $self->{'auto_next_server'}; @@ -465,7 +463,6 @@ if ($res =~ m/DELETED/) { $self->{'job_id'} = undef; - $self->{'job_pri'} = undef; $self->{'job_data'} = undef; $self->next_server if $self->{'auto_next_server'}; @@ -607,7 +604,8 @@ $jobs->release([$priority, $delay]); -Release the current reserved job. The default is to use the same priority as the job had, and 0 second delay. +Release the current reserved job. The default is to use priority 4294967295, and 0 second delay. +Returns an undefined value on errors, 'released' or 'burried'. =head2 C<delete>