Skip to content

Commit

Permalink
[proxy] unmount /var/run after boot, so the kernel can GC veth pairs
Browse files Browse the repository at this point in the history
  • Loading branch information
paulbellamy committed Sep 28, 2015
1 parent 63e3f44 commit 33499c8
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
18 changes: 15 additions & 3 deletions proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,17 +220,29 @@ func (proxy *Proxy) listen(protoAndAddr string) (net.Listener, string, error) {
}

case "unix":
sockAddr := addr
if strings.HasPrefix(addr, "/var/run/") {
sockAddr = "/var/run/weave/" + strings.TrimPrefix(addr, "/var/run/")
}
// remove socket from last invocation
if err := os.Remove(addr); err != nil && !os.IsNotExist(err) {
if err := os.Remove(sockAddr); err != nil && !os.IsNotExist(err) {
return nil, "", err
}
listener, err = net.Listen(proto, addr)
listener, err = net.Listen(proto, sockAddr)
if err != nil {
return nil, "", err
}
if err = copyOwnerAndPermissions(dockerSock, addr); err != nil {
if err = copyOwnerAndPermissions(dockerSock, sockAddr); err != nil {
return nil, "", err
}
if strings.HasPrefix(sockAddr, "/var/run/weave/") {
if err := os.Remove(addr); err != nil && !os.IsNotExist(err) {
return nil, "", err
}
if err := os.Symlink(sockAddr, "/host"+addr); err != nil {
return nil, "", err
}
}

default:
Log.Fatalf("Invalid protocol format: %q", proto)
Expand Down
5 changes: 4 additions & 1 deletion weave
Original file line number Diff line number Diff line change
Expand Up @@ -1203,14 +1203,17 @@ launch_proxy() {
PROXY_CONTAINER=$(docker run --privileged -d --name=$PROXY_CONTAINER_NAME --net=host \
$PROXY_VOLUMES \
-v "$CONTAINERS_PATH":"$CONTAINERS_PATH" \
-v /var/run:/var/run \
-v /var/run:/host/var/run \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/weave:/var/run/weave \
-v /proc:/hostproc \
-e PROCFS=/hostproc \
-e WEAVE_CIDR=none \
-e DOCKER_BRIDGE \
--entrypoint=/home/weave/weaveproxy \
$WEAVEPROXY_DOCKER_ARGS $EXEC_IMAGE $COVERAGE_ARGS $PROXY_ARGS)
wait_for_log $PROXY_CONTAINER_NAME "proxy listening"
docker exec $PROXY_CONTAINER_NAME umount -l /host/var/run
}

##########################################################################################
Expand Down

0 comments on commit 33499c8

Please sign in to comment.