Author: spadkins
Date: Mon Jun 19 13:30:07 2006
New Revision: 6552
Modified:
p5ee/trunk/App-WorkQueue/lib/App/WorkQueue.pm
p5ee/trunk/App-WorkQueue/lib/App/WorkQueue/Repository.pm
Log:
fix _refill_buffer()
Modified: p5ee/trunk/App-WorkQueue/lib/App/WorkQueue.pm
==============================================================================
--- p5ee/trunk/App-WorkQueue/lib/App/WorkQueue.pm (original)
+++ p5ee/trunk/App-WorkQueue/lib/App/WorkQueue.pm Mon Jun 19 13:30:07 2006
@@ -1730,35 +1730,48 @@
$op ||= "";
my $BUFFER_SIZE = $self->{BUFFER_SIZE};
- my $resource_key = $self->_resource_key($entry);
- my $resource_counts = $self->_resource_counts();
-
- if ($op eq "push") {
- $resource_counts->{total}{$resource_key}++;
- if ($resource_counts->{buffer}{$resource_key} < $BUFFER_SIZE) {
+ if ($entry) {
+ my $resource_key = $self->_resource_key($entry);
+ my $resource_counts = $self->_resource_counts();
+
+ if ($op eq "push") {
+ $resource_counts->{total}{$resource_key}++;
+ if ($resource_counts->{buffer}{$resource_key} < $BUFFER_SIZE) {
+ $resource_counts->{buffer}{$resource_key}++;
+ $self->_push_in_mem($entry);
+ }
+ else {
+ $self->_push_in_mem($entry,1); # release lowest
+ }
+ }
+ elsif ($op eq "acquire") {
+ $resource_counts->{total}{$resource_key}--;
+ $resource_counts->{buffer}{$resource_key}--;
+ }
+ elsif ($op eq "release") {
+ $self->_release_in_mem($entry, $columns, $values);
+ }
+ elsif ($op eq "unacquire") {
+ $resource_counts->{total}{$resource_key}++;
$resource_counts->{buffer}{$resource_key}++;
- $self->_push_in_mem($entry);
}
- else {
- $self->_push_in_mem($entry,1); # release lowest
+ my $num_total = $resource_counts->{total}{$resource_key};
+ my $num_in_buffer = $resource_counts->{buffer}{$resource_key};
+ if ($num_total > $num_in_buffer && $num_in_buffer < $BUFFER_SIZE) {
+ my $num_added = $self->_refill_buffer($resource_key);
+ $resource_counts->{buffer}{$resource_key} += $num_added;
}
}
- elsif ($op eq "acquire") {
- $resource_counts->{total}{$resource_key}--;
- $resource_counts->{buffer}{$resource_key}--;
- }
- elsif ($op eq "release") {
- $self->_release_in_mem($entry, $columns, $values);
- }
- elsif ($op eq "unacquire") {
- $resource_counts->{total}{$resource_key}++;
- $resource_counts->{buffer}{$resource_key}++;
- }
- my $num_total = $resource_counts->{total}{$resource_key};
- my $num_in_buffer = $resource_counts->{buffer}{$resource_key};
- if ($num_total > $num_in_buffer && $num_in_buffer < $BUFFER_SIZE) {
- my $num_added = $self->_refill_buffer($resource_key);
- $resource_counts->{buffer}{$resource_key} += $num_added;
+ else {
+ my $resource_counts = $self->_resource_counts();
+ foreach my $resource_key (keys %{$resource_counts->{total}}) {
+ my $num_total = $resource_counts->{total}{$resource_key};
+ my $num_in_buffer = $resource_counts->{buffer}{$resource_key};
+ if ($num_total > $num_in_buffer && $num_in_buffer < $BUFFER_SIZE) {
+ my $num_added = $self->_refill_buffer($resource_key);
+ $resource_counts->{buffer}{$resource_key} += $num_added;
+ }
+ }
}
&App::sub_exit() if ($App::trace);
Modified: p5ee/trunk/App-WorkQueue/lib/App/WorkQueue/Repository.pm
==============================================================================
--- p5ee/trunk/App-WorkQueue/lib/App/WorkQueue/Repository.pm (original)
+++ p5ee/trunk/App-WorkQueue/lib/App/WorkQueue/Repository.pm Mon Jun 19
13:30:07 2006
@@ -144,15 +144,23 @@
$params->{$param} = $base_params->{$param};
}
}
+
my (@resource_cols, $value, $resource_key);
+ # find the @resource_cols
+ if ($self->{constraints}) {
+ foreach my $c (@{$self->{constraints}}) {
+ push(@resource_cols, $c->[2]);
+ }
+ }
+
my $rows = $db->get_rows($self->{table}, $params, [ @resource_cols,
$count_expr ], { group_by => [ @resource_cols ] });
foreach my $row (@$rows) {
$value = pop(@$row);
- $resource_key = join(":", @$row);
+ $resource_key = ($#$row > -1) ? join(":", @$row) : "";
$counts{$resource_key} = $value;
}
- # --------------
$self->{resource_counts}{total} = \%counts;
+
&App::sub_exit() if ($App::trace);
}