Author: arkurth
Date: Fri Sep 6 14:36:49 2013
New Revision: 1520583
URL: http://svn.apache.org/r1520583
Log:
VCL-16
Added code to State.pm::reservation_failed to check if the state is inuse.
State is set back to inuse rather than failed.
Extended update_request_state to check the result of database_execute which
returns the number of rows updated. If 0, the current request state is
retrieved from the database. If it matches the arguments passed to
update_request_state then no warning is displayed.
Modified:
vcl/trunk/managementnode/lib/VCL/Module/State.pm
vcl/trunk/managementnode/lib/VCL/utils.pm
Modified: vcl/trunk/managementnode/lib/VCL/Module/State.pm
URL:
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/State.pm?rev=1520583&r1=1520582&r2=1520583&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/State.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/State.pm Fri Sep 6 14:36:49 2013
@@ -236,7 +236,7 @@ sub reservation_failed {
# Check if the request has been deleted
if (is_request_deleted($request_id)) {
notify($ERRORS{'OK'}, 0, "request has been deleted, setting
computer state to available and exiting");
-
+
# Update the computer state to available
if ($computer_state_name !~ /^(maintenance)/){
if (update_computer_state($computer_id, "available")) {
@@ -253,7 +253,12 @@ sub reservation_failed {
notify($ERRORS{'OK'}, 0, "exiting 0");
exit 0;
} ## end if (is_request_deleted($request_id))
-
+
+ # Never set inuse requests to failed, set the state back to inuse
+ if ($request_state_name eq 'inuse') {
+ $self->state_exit('inuse', 'inuse');
+ }
+
# Display the message
notify($ERRORS{'CRITICAL'}, 0, "reservation failed on
$computer_short_name: $message");
Modified: vcl/trunk/managementnode/lib/VCL/utils.pm
URL:
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1520583&r1=1520582&r2=1520583&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/utils.pm Fri Sep 6 14:36:49 2013
@@ -1564,13 +1564,22 @@ EOF
# Call the database execute subroutine
my $result = database_execute($update_statement);
- if ($result) {
+ if (defined($result)) {
my $rows_updated = (sprintf '%d', $result);
if ($rows_updated) {
- #notify($ERRORS{'OK'}, $LOGFILE, "request $request_id
state updated to: $state_name, laststate to: $laststate_name, rows updated:
$rows_updated");
+ notify($ERRORS{'OK'}, $LOGFILE, "request $request_id
state updated to: $state_name, laststate to: $laststate_name");
+ return 1;
}
else {
- notify($ERRORS{'OK'}, $LOGFILE, "request $request_id
state updated to: $state_name, laststate to: $laststate_name, rows updated:
$rows_updated");
+ my ($current_state_name, $current_laststate_name) =
get_request_current_state_name($request_id);
+ if ($state_name eq $current_state_name &&
$laststate_name eq $current_laststate_name) {
+ notify($ERRORS{'OK'}, $LOGFILE, "request
$request_id state already set to: $current_state_name/$current_laststate_name");
+ return 1;
+ }
+ else {
+ notify($ERRORS{'WARNING'}, $LOGFILE, "failed to
update request $request_id state to: $state_name/$laststate_name, current
state: $current_state_name/$current_laststate_name");
+ return;
+ }
}
return $rows_updated;
}