[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [OSSTEST PATCH 04/21] alloc_resources: Support special abandonment values



This gives a way for the caller's $resourcecall to signal something
interesting, back to its main loop.  This is useful for calling
broken, for example: that can't be done within $resourcecall because
$resourcecall operates within the allocation db transaction (which
ought to be rolled back...)

Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
---
 Osstest/Executive.pm | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/Osstest/Executive.pm b/Osstest/Executive.pm
index 0d8502b5..b27b8d25 100644
--- a/Osstest/Executive.pm
+++ b/Osstest/Executive.pm
@@ -737,7 +737,8 @@ sub alloc_resources {
     #
     #  values of $ok
     #            0  rollback, wait and try again
-    #            1  commit, completed ok
+    #            1  commit, completed ok } return the
+    #           >1  rollback and abandon }  value of $ok
     #  $bookinglist should be undef or a hash for making a booking
     #
     # $resourcecall should not look at tasks.live
@@ -859,10 +860,14 @@ sub alloc_resources {
                    # $resourcecall itself failed: bomb out (don't retry)
                    $ok=-1;
                }
-               return db_retry_abort() unless $ok>0;
+               return db_retry_abort() unless $ok==1;
            }]);
 
-           if ($bookinglist && $ok!=-1) {
+           if ($ok<0 || $ok>1) {
+                return 1;
+           }
+
+           if ($bookinglist) {
                my %prstart;
                foreach my $book (@{ $bookinglist->{Bookings} }) {
                    my $pr = $book->{Reso};
@@ -890,8 +895,6 @@ sub alloc_resources {
 
             if ($ok==1) {
                 print $qserv "thought-done\n" or die $!;
-            } elsif ($ok<0) {
-                return 1;
             } else { # 0
                 logm("resource allocation: deferring");
                 print $qserv "thought-wait\n" or die $!;
@@ -935,8 +938,12 @@ END
             $ok= 0;
         }
     }
-    die unless $ok==1;
-    logm("resource allocation: successful.");
+    if ($ok==1) {
+       logm("resource allocation: successful.");
+    } else {
+       logm("resource allocation: resourcecall returned ($ok,...)");
+    }
+    return $ok;
 }
 
 sub resource_check_allocated ($$) {
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.