Benno Evers created MESOS-9413: ---------------------------------- Summary: Composing containerizer has no way to wait for container removal Key: MESOS-9413 URL: https://issues.apache.org/jira/browse/MESOS-9413 Project: Mesos Issue Type: Bug Reporter: Benno Evers
Inside the composing containerizer, destruction is ultimately implemented like this: {noformat} return container->containerizer->destroy(containerId) .onAny(defer(self(), [=](const Future<Option<ContainerTermination>>&) { if (containers_.contains(containerId)) { delete containers_.at(containerId); containers_.erase(containerId); } })); {noformat} This means that code trying to ensure that every container is killed like this {noformat} foreach (const ContainerID& containerId, containers.get()) { process::Future<Option<ContainerTermination>> termination = containerizer->destroy(containerId); AWAIT(termination); } ASSERT_TRUE(containerizer->empty()); {noformat} is inherently racy, because the call to `empty()` might happen before the removal that gets deferred in the `.onAny()`-callback is executed. -- This message was sent by Atlassian JIRA (v7.6.3#76005)