Ver Fonte

add 2 seocnd delay to allow gossip converge

Signed-off-by: Dong Chen <dongluo.chen@docker.com>
Dong Chen há 8 anos atrás
pai
commit
4d23394333
1 ficheiros alterados com 9 adições e 0 exclusões
  1. 9 0
      daemon/cluster/executor/container/controller.go

+ 9 - 0
daemon/cluster/executor/container/controller.go

@@ -25,6 +25,8 @@ import (
 	"golang.org/x/time/rate"
 )
 
+const defaultGossipConvergeDelay = 2 * time.Second
+
 // controller implements agent.Controller against docker's API.
 //
 // Most operations against docker's API are done through the container name,
@@ -323,6 +325,13 @@ func (r *controller) Shutdown(ctx context.Context) error {
 		// started.
 	}
 
+	// add a delay for gossip converge
+	// TODO(dongluochen): this delay shoud be configurable to fit different cluster size and network delay.
+	// TODO(dongluochen): if there is no service binding for this container, this delay is not necessary.
+	// if r.adapter.deactivateServiceBinding can return an error to indicate that, it'd reduce service
+	// converge time.
+	time.Sleep(defaultGossipConvergeDelay)
+
 	if err := r.adapter.shutdown(ctx); err != nil {
 		if isUnknownContainer(err) || isStoppedContainer(err) {
 			return nil