Unverified Commit 4c782758 authored by yoav-steinberg's avatar yoav-steinberg Committed by GitHub
Browse files

Fixed leaked client for "start_server" when running in --loop (#9497)

* On `kill_server` make sure we close the default `"client"` connection.
* Don't reconnect when trying to execute the client's `close` command.
* On `restart_server` make sure to remove the (closed) default `"client"` after killing the old server.
parent 794442b1
...@@ -84,7 +84,7 @@ proc ::redis::__dispatch__raw__ {id method argv} { ...@@ -84,7 +84,7 @@ proc ::redis::__dispatch__raw__ {id method argv} {
set fd $::redis::fd($id) set fd $::redis::fd($id)
# Reconnect the link if needed. # Reconnect the link if needed.
if {$fd eq {}} { if {$fd eq {} && $method ne {close}} {
lassign $::redis::addr($id) host port lassign $::redis::addr($id) host port
if {$::redis::tls($id)} { if {$::redis::tls($id)} {
set ::redis::fd($id) [::tls::socket $host $port] set ::redis::fd($id) [::tls::socket $host $port]
......
...@@ -33,6 +33,11 @@ proc kill_server config { ...@@ -33,6 +33,11 @@ proc kill_server config {
# nothing to kill when running against external server # nothing to kill when running against external server
if {$::external} return if {$::external} return
# Close client connection if exists
if {[dict exists $config "client"]} {
[dict get $config "client"] close
}
# nevermind if its already dead # nevermind if its already dead
if {![is_alive $config]} { if {![is_alive $config]} {
# Check valgrind errors if needed # Check valgrind errors if needed
...@@ -629,6 +634,8 @@ proc start_server {options {code undefined}} { ...@@ -629,6 +634,8 @@ proc start_server {options {code undefined}} {
proc restart_server {level wait_ready rotate_logs {reconnect 1}} { proc restart_server {level wait_ready rotate_logs {reconnect 1}} {
set srv [lindex $::servers end+$level] set srv [lindex $::servers end+$level]
kill_server $srv kill_server $srv
# Remove the default client from the server
dict unset srv "client"
set pid [dict get $srv "pid"] set pid [dict get $srv "pid"]
set stdout [dict get $srv "stdout"] set stdout [dict get $srv "stdout"]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment