diff options
author | antirez <antirez@gmail.com> | 2015-01-30 12:03:17 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2015-01-30 12:18:42 +0100 |
commit | 19029a4ebc539de5c9a79e053aa7271c37be0ac1 (patch) | |
tree | 8a3daa87a4a76ca571485d59715a8f525d6a9d0c | |
parent | 55f2bc646af24528ea12e36268c978d496056633 (diff) | |
download | redis-19029a4ebc539de5c9a79e053aa7271c37be0ac1.tar.gz |
Cluster: Tcl script to check avg pfail->fail time.
-rw-r--r-- | utils/cluster_fail_time.tcl | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/utils/cluster_fail_time.tcl b/utils/cluster_fail_time.tcl new file mode 100644 index 000000000..87399495f --- /dev/null +++ b/utils/cluster_fail_time.tcl @@ -0,0 +1,50 @@ +# This simple script is used in order to estimate the average PFAIL->FAIL +# state switch after a failure. + +set ::sleep_time 10 ; # How much to sleep to trigger PFAIL. +set ::fail_port 30016 ; # Node to put in sleep. +set ::other_port 30001 ; # Node to use to monitor the flag switch. + +proc avg vector { + set sum 0.0 + foreach x $vector { + set sum [expr {$sum+$x}] + } + expr {$sum/[llength $vector]} +} + +set samples {} +while 1 { + exec redis-cli -p $::fail_port debug sleep $::sleep_time > /dev/null & + + # Wait for fail? to appear. + while 1 { + set output [exec redis-cli -p $::other_port cluster nodes] + if {[string match {*fail\?*} $output]} break + after 100 + } + + puts "FAIL?" + set start [clock milliseconds] + + # Wait for fail? to disappear. + while 1 { + set output [exec redis-cli -p $::other_port cluster nodes] + if {![string match {*fail\?*} $output]} break + after 100 + } + + puts "FAIL" + set now [clock milliseconds] + set elapsed [expr {$now-$start}] + puts $elapsed + lappend samples $elapsed + + puts "AVG([llength $samples]): [avg $samples]" + + # Wait for the instance to be available again. + exec redis-cli -p $::fail_port ping + + # Wait for the fail flag to be cleared. + after 2000 +} |