Commit 09421138 authored by Leigh B Stoller's avatar Leigh B Stoller

When calling DeleteSlice(), if a monitor process is running, then the

slice is busy.  This might mean that the user will not be able to
delete the slice for a long time, but we are having problems with
users canceling slices before they finish setting up, and the XEN
client side is not handling this very well. Note that the cleanupslice
script calls GeniCM::CleanupDeadSlice() directly, which *does* kill
the monitor, so admin cleanup is not affected.

Regarding the xen client side, signals can be blocked for a really
long time while a container is setting up, and so trying to kill it
fails, and bad things ripple out. Fixing that is going to take some
time to get right, so just avoid the problem for now.
parent 0b320234
......@@ -712,16 +712,18 @@ sub DeleteSlice($)
}
#
# If a monitor process is running, then cancel it so that
# we do not leave it behind on a slice/experiment that is
# now gone.
# If a monitor process is running, then the slice is busy.
# This might mean that the user will not be able to delete
# the slice for a long time, but we are having problems with
# users canceling slices before they finish setting up, and
# the XEN client side is not handling this very well. Note that
# the cleanupslice script calls GeniCM::CleanupDeadSlice()
# directly, which *does* kill the monitor, so admin cleanup
# is not affected.
#
if ($slice->monitor_pid()) {
my $response = GeniCM::KillMonitor($slice);
if (GeniResponse::IsResponse($response)) {
$slice->UnLock();
return $response;
}
$slice->UnLock();
return GeniResponse->MonitorResponse();
}
if (GeniCM::CleanupDeadSlice($slice, 1) != 0) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment