Skip to content

Commit 79fa67c

Browse files
committed
Cluster: Tcl script to check avg pfail->fail time.
1 parent 233729f commit 79fa67c

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

utils/cluster_fail_time.tcl

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# This simple script is used in order to estimate the average PFAIL->FAIL
2+
# state switch after a failure.
3+
4+
set ::sleep_time 10 ; # How much to sleep to trigger PFAIL.
5+
set ::fail_port 30016 ; # Node to put in sleep.
6+
set ::other_port 30001 ; # Node to use to monitor the flag switch.
7+
8+
proc avg vector {
9+
set sum 0.0
10+
foreach x $vector {
11+
set sum [expr {$sum+$x}]
12+
}
13+
expr {$sum/[llength $vector]}
14+
}
15+
16+
set samples {}
17+
while 1 {
18+
exec redis-cli -p $::fail_port debug sleep $::sleep_time > /dev/null &
19+
20+
# Wait for fail? to appear.
21+
while 1 {
22+
set output [exec redis-cli -p $::other_port cluster nodes]
23+
if {[string match {*fail\?*} $output]} break
24+
after 100
25+
}
26+
27+
puts "FAIL?"
28+
set start [clock milliseconds]
29+
30+
# Wait for fail? to disappear.
31+
while 1 {
32+
set output [exec redis-cli -p $::other_port cluster nodes]
33+
if {![string match {*fail\?*} $output]} break
34+
after 100
35+
}
36+
37+
puts "FAIL"
38+
set now [clock milliseconds]
39+
set elapsed [expr {$now-$start}]
40+
puts $elapsed
41+
lappend samples $elapsed
42+
43+
puts "AVG([llength $samples]): [avg $samples]"
44+
45+
# Wait for the instance to be available again.
46+
exec redis-cli -p $::fail_port ping
47+
48+
# Wait for the fail flag to be cleared.
49+
after 2000
50+
}

0 commit comments

Comments
 (0)