Author: arkurth
Date: Thu Jun  4 15:06:56 2009
New Revision: 781768

URL: http://svn.apache.org/viewvc?rev=781768&view=rev
Log:
VCL-15
Added is_blockrequest() sub to DataStructure.pm.
Added check to State.pm::DESTROY() to determine if a blockrequest is being 
processed or not. It now attempts to delete the computerloadlog entries only if 
not a blockrequest.

Modified:
    incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm
    incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm

Modified: incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm?rev=781768&r1=781767&r2=781768&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm Thu Jun  4 
15:06:56 2009
@@ -1755,6 +1755,36 @@
 
 #/////////////////////////////////////////////////////////////////////////////
 
+=head2 is_blockrequest
+
+ Parameters  : None.
+ Returns     : If DataStructure contains blockrequest data: true
+               If DataStructure does not contain blockrequest data: false
+ Description : This subroutine determines whether or not the DataStructure
+               contains data for a blockrequest.
+
+=cut
+
+sub is_blockrequest {
+       my $self = shift;
+       
+       # Check if subroutine was called as an object method
+       unless (ref($self) && $self->isa('VCL::DataStructure')) {
+               notify($ERRORS{'CRITICAL'}, 0, "subroutine can only be called 
as a VCL::DataStructure module object method");
+               return;
+       }
+       
+       # Check if reservation_id has been set, return 1 or 0 based on that
+       if ($self->blockrequest_id) {
+               return 1;
+       }
+       else {
+               return 0;
+       }
+}
+
+#/////////////////////////////////////////////////////////////////////////////
+
 1;
 __END__
 

Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm?rev=781768&r1=781767&r2=781768&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/State.pm Thu Jun  4 
15:06:56 2009
@@ -890,16 +890,23 @@
 
 sub DESTROY {
        my $self = shift;
-       my $reservation_id = $self->data->get_reservation_id();
        
        notify($ERRORS{'DEBUG'}, 0, "destructor called, ref(\$self)=" . 
ref($self));
        
-       # Delete all computerloadlog rows with loadstatename = 'begin' for thie 
reservation
-       if (delete_computerloadlog_reservation($reservation_id, 'begin')) {
-               notify($ERRORS{'DEBUG'}, 0, "removed computerloadlog rows with 
loadstate=begin for reservation");
-       }
-       else {
-               notify($ERRORS{'WARNING'}, 0, "failed to remove computerloadlog 
rows with loadstate=begin for reservation");
+       # If not a blockrequest, delete computerloadlog entry
+       if ($self && $self->data && !$self->data->is_blockrequest()) {
+               my $reservation_id = $self->data->get_reservation_id();
+               
+               # Delete all computerloadlog rows with loadstatename = 'begin' 
for thie reservation
+               if ($reservation_id && 
delete_computerloadlog_reservation($reservation_id, 'begin')) {
+                       notify($ERRORS{'DEBUG'}, 0, "removed computerloadlog 
rows with loadstate=begin for reservation");
+               }
+               elsif (!$reservation_id) {
+                       notify($ERRORS{'WARNING'}, 0, "failed to retrieve the 
reservation id, computerloadlog rows not removed");
+               }
+               else {
+                       notify($ERRORS{'WARNING'}, 0, "failed to remove 
computerloadlog rows with loadstate=begin for reservation");
+               }
        }
 
        # Print the number of database handles this process created for 
testing/development


Reply via email to