Repository: mesos Updated Branches: refs/heads/master 293639961 -> 09a2fb3ee
Exit nicely when a pid gets reused in port mapping isolator. We saw the following assertion failure when PID got reused before the container got cleaned up. F1110 20:30:17.903465 21542 port_mapping.cpp:2241] Check failed: createQdisc.get() Review: https://reviews.apache.org/r/41414/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/09a2fb3e Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/09a2fb3e Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/09a2fb3e Branch: refs/heads/master Commit: 09a2fb3ee5bf95e8a05fd3ac03e7d9b6782989dd Parents: 2936399 Author: Cong Wang <[email protected]> Authored: Tue Dec 15 15:52:47 2015 -0800 Committer: Jie Yu <[email protected]> Committed: Tue Dec 15 16:07:22 2015 -0800 ---------------------------------------------------------------------- .../containerizer/mesos/isolators/network/port_mapping.cpp | 7 +++++++ 1 file changed, 7 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/09a2fb3e/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp index 49e215b..22a8428 100644 --- a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp +++ b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp @@ -2249,6 +2249,13 @@ Future<Nothing> PortMappingIsolatorProcess::isolate( createVethPair.error()); } + // We can not reuse the existing veth pair, because one of them is + // still inside another container. + if (!createVethPair.get()) { + return Failure( + "Virtual ethernet pair " + veth(pid) + " already exists"); + } + // Disable IPv6 for veth as IPv6 packets won't be forwarded anyway. const string disableIPv6 = path::join("/proc/sys/net/ipv6/conf", veth(pid), "disable_ipv6");
