Signed-off-by: allencloud <allen.sun@daocloud.io>
| ... | ... |
@@ -56,6 +56,12 @@ func discoveryOpts(clusterOpts map[string]string) (time.Duration, time.Duration, |
| 56 | 56 |
if err != nil {
|
| 57 | 57 |
return time.Duration(0), time.Duration(0), err |
| 58 | 58 |
} |
| 59 |
+ |
|
| 60 |
+ if h <= 0 {
|
|
| 61 |
+ return time.Duration(0), time.Duration(0), |
|
| 62 |
+ fmt.Errorf("discovery.heartbeat must be positive")
|
|
| 63 |
+ } |
|
| 64 |
+ |
|
| 59 | 65 |
heartbeat = time.Duration(h) * time.Second |
| 60 | 66 |
ttl = defaultDiscoveryTTLFactor * heartbeat |
| 61 | 67 |
} |
| ... | ... |
@@ -65,6 +71,12 @@ func discoveryOpts(clusterOpts map[string]string) (time.Duration, time.Duration, |
| 65 | 65 |
if err != nil {
|
| 66 | 66 |
return time.Duration(0), time.Duration(0), err |
| 67 | 67 |
} |
| 68 |
+ |
|
| 69 |
+ if t <= 0 {
|
|
| 70 |
+ return time.Duration(0), time.Duration(0), |
|
| 71 |
+ fmt.Errorf("discovery.ttl must be positive")
|
|
| 72 |
+ } |
|
| 73 |
+ |
|
| 68 | 74 |
ttl = time.Duration(t) * time.Second |
| 69 | 75 |
|
| 70 | 76 |
if _, ok := clusterOpts["discovery.heartbeat"]; !ok {
|
| ... | ... |
@@ -18,6 +18,18 @@ func TestDiscoveryOpts(t *testing.T) {
|
| 18 | 18 |
t.Fatalf("discovery.ttl == discovery.heartbeat must fail")
|
| 19 | 19 |
} |
| 20 | 20 |
|
| 21 |
+ clusterOpts = map[string]string{"discovery.heartbeat": "-10", "discovery.ttl": "10"}
|
|
| 22 |
+ heartbeat, ttl, err = discoveryOpts(clusterOpts) |
|
| 23 |
+ if err == nil {
|
|
| 24 |
+ t.Fatalf("negative discovery.heartbeat must fail")
|
|
| 25 |
+ } |
|
| 26 |
+ |
|
| 27 |
+ clusterOpts = map[string]string{"discovery.heartbeat": "10", "discovery.ttl": "-10"}
|
|
| 28 |
+ heartbeat, ttl, err = discoveryOpts(clusterOpts) |
|
| 29 |
+ if err == nil {
|
|
| 30 |
+ t.Fatalf("negative discovery.ttl must fail")
|
|
| 31 |
+ } |
|
| 32 |
+ |
|
| 21 | 33 |
clusterOpts = map[string]string{"discovery.heartbeat": "invalid"}
|
| 22 | 34 |
heartbeat, ttl, err = discoveryOpts(clusterOpts) |
| 23 | 35 |
if err == nil {
|