Skip to content

Commit 2ff7814

Browse files
authored
feat: add option for tcp_timeout (kleveross#66)
1 parent 4ddb9ed commit 2ff7814

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

ftlib/consensus/gossip/impl.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ def __init__(
2020
log_file="/tmp/memberlist.log",
2121
custom_bind_addr="",
2222
custom_advertise_addr="",
23+
custom_tcp_timeout=0,
24+
wait_time_after_join=5,
2325
):
2426
super(Gossip, self).__init__()
2527

@@ -39,6 +41,7 @@ def __init__(
3941
log_file.encode("utf-8"),
4042
custom_bind_addr.encode("utf-8"),
4143
custom_advertise_addr.encode("utf-8"),
44+
custom_tcp_timeout,
4245
)
4346
if res != 0:
4447
raise RuntimeError("failed to initialize memberlist")
@@ -48,7 +51,9 @@ def __init__(
4851
if not joined:
4952
raise RuntimeError("failed to join the group")
5053

51-
time.sleep(5)
54+
# we need to take a sleep here because the group may add further nodes
55+
# after this node succeeded joining the group
56+
time.sleep(wait_time_after_join)
5257

5358
self._ml_changed = False
5459
self._cache = self.get_memberlist()

ftlib/consensus/gossip/memberlist/main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"fmt"
1313
"github.com/hashicorp/memberlist"
1414
"os"
15+
"time"
1516
)
1617

1718
var list *memberlist.Memberlist
@@ -25,6 +26,7 @@ func init_memberlist(
2526
cLogFileName *C.char,
2627
cBindAddr *C.char,
2728
cAdvertiseAddr *C.char,
29+
cTCPTimeout C.int,
2830
) C.int {
2931
var err error
3032
config := memberlist.DefaultLocalConfig()
@@ -41,6 +43,10 @@ func init_memberlist(
4143
config.AdvertiseAddr = customAdvertiseAddr
4244
}
4345

46+
if cTCPTimeout > 0 {
47+
config.TCPTimeout = cTCPTimeout * time.Second
48+
}
49+
4450
if logFileName != "" {
4551
fmt.Printf("log file: %s\n", logFileName)
4652
f, err := os.Create(logFileName)

0 commit comments

Comments
 (0)