From c4859e13bf11b8e461de83dd1cd90d4557a231f2 Mon Sep 17 00:00:00 2001 From: "Jonathan Leibiusky @xetorthio" Date: Wed, 13 Sep 2017 19:25:21 -0300 Subject: [PATCH] Make sure instances have unique names. Make sure we don't return an old docker client. --- docker/local_cached_factory.go | 2 +- provisioner/dind.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/local_cached_factory.go b/docker/local_cached_factory.go index 1cd5cbe..a7b551c 100644 --- a/docker/local_cached_factory.go +++ b/docker/local_cached_factory.go @@ -58,7 +58,7 @@ func (f *localCachedFactory) GetForSession(sessionId string) (DockerApi, error) } func (f *localCachedFactory) GetForInstance(instance *types.Instance) (DockerApi, error) { - key := instance.SessionId + instance.IP + key := instance.Name f.irw.Lock() c, found := f.instanceClients[key] diff --git a/provisioner/dind.go b/provisioner/dind.go index c331adc..86c681d 100644 --- a/provisioner/dind.go +++ b/provisioner/dind.go @@ -15,6 +15,7 @@ import ( "github.com/play-with-docker/play-with-docker/pwd/types" "github.com/play-with-docker/play-with-docker/router" "github.com/play-with-docker/play-with-docker/storage" + "github.com/rs/xid" ) type DinD struct { @@ -58,7 +59,7 @@ func (d *DinD) InstanceNew(session *types.Session, conf types.InstanceConfig) (* } conf.Hostname = nodeName } - containerName := fmt.Sprintf("%s_%s", session.Id[:8], conf.Hostname) + containerName := fmt.Sprintf("%s_%s", session.Id[:8], xid.New().String()) opts := docker.CreateContainerOpts{ Image: conf.ImageName, SessionId: session.Id,