|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH 17/21] starvation: Use "starved" for hostalloc_maxwait_max
Previously this was "broken".
We mustn't just call `broken' inside attempt_allocation because that
runs in a db transaction. Instead, we arrange that attempt_allocation
returns 2, which threads its way back out to the return value from
alloc_resources, and then call broken there.
Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
---
ts-hosts-allocate-Executive | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/ts-hosts-allocate-Executive b/ts-hosts-allocate-Executive
index 3425c8ce..8c9ddaf7 100755
--- a/ts-hosts-allocate-Executive
+++ b/ts-hosts-allocate-Executive
@@ -683,12 +683,17 @@ sub alloc_hosts () {
? -10000
: -10 * @hids;
- alloc_resources(WaitStart =>
+ my $ok = alloc_resources(WaitStart =>
($ENV{OSSTEST_RESOURCE_WAITSTART} || $fi->{started}),
WaitStartAdjust => $waitstartadjust,
DebugFh => \*DEBUG,
\&attempt_allocation);
+ if ($ok==2) {
+ broken "starved or timed out", 'starved';
+ }
+ die $ok unless $ok==1;
+
foreach my $hid (@hids) {
my $sel= $hid->{Selected};
die $hid->{Ident} unless defined $sel->{resname};
@@ -764,9 +769,11 @@ sub attempt_allocation {
# * we have been waiting at least $maxwait/2
# * we estimate it will take at least $maxwait overall
my $wait_sofar = $now - $alloc_start_time;
- die "timed out: $wait_sofar, $best->{Start}, $maxwait"
- if $wait_sofar > $maxwait/2
- && $wait_sofar + $best->{Start} > $maxwait;
+ if ($wait_sofar > $maxwait/2
+ && $wait_sofar + $best->{Start} > $maxwait) {
+ logm "timed out: $wait_sofar, $best->{Start}, $maxwait";
+ return 2;
+ }
}
}
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |