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>