diff --git a/daemon/discovery/discovery.go b/daemon/discovery/discovery.go index 24c305f8e0..2103486434 100644 --- a/daemon/discovery/discovery.go +++ b/daemon/discovery/discovery.go @@ -81,8 +81,7 @@ func discoveryOpts(clusterOpts map[string]string) (time.Duration, time.Duration, ttl = time.Duration(t) * time.Second if _, ok := clusterOpts["discovery.heartbeat"]; !ok { - h := int(t / defaultDiscoveryTTLFactor) - heartbeat = time.Duration(h) * time.Second + heartbeat = time.Duration(t) * time.Second / time.Duration(defaultDiscoveryTTLFactor) } if ttl <= heartbeat { diff --git a/daemon/discovery/discovery_test.go b/daemon/discovery/discovery_test.go index 7b5942f491..781442939b 100644 --- a/daemon/discovery/discovery_test.go +++ b/daemon/discovery/discovery_test.go @@ -1,6 +1,7 @@ package discovery import ( + "fmt" "testing" "time" ) @@ -86,6 +87,13 @@ func TestDiscoveryOpts(t *testing.T) { t.Fatalf("Heartbeat - Expected : %v, Actual : %v", expected, heartbeat) } + discaveryTTL := fmt.Sprintf("%d", defaultDiscoveryTTLFactor-1) + clusterOpts = map[string]string{"discovery.ttl": discaveryTTL} + heartbeat, ttl, err = discoveryOpts(clusterOpts) + if err == nil && heartbeat == 0 { + t.Fatal("discovery.heartbeat must be positive") + } + clusterOpts = map[string]string{} heartbeat, ttl, err = discoveryOpts(clusterOpts) if err != nil {