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");

Reply via email to