From 80a8c6900afedbb8f265de5497abd5d40864b2a2 Mon Sep 17 00:00:00 2001 From: UlricQin Date: Fri, 10 Apr 2020 16:53:12 +0800 Subject: [PATCH] fix conn shutdown when transfer restart --- src/modules/collector/sys/funcs/clients.go | 6 ++++++ src/modules/collector/sys/funcs/push.go | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/collector/sys/funcs/clients.go b/src/modules/collector/sys/funcs/clients.go index 9ac474ad..69499005 100644 --- a/src/modules/collector/sys/funcs/clients.go +++ b/src/modules/collector/sys/funcs/clients.go @@ -43,3 +43,9 @@ func (rcc *RpcClientContainer) Put(addr string, client *rpc.Client) bool { rcc.M[addr] = client return true } + +func (rcc *RpcClientContainer) Del(addr string) { + rcc.Lock() + defer rcc.Unlock() + delete(rcc.M, addr) +} diff --git a/src/modules/collector/sys/funcs/push.go b/src/modules/collector/sys/funcs/push.go index f204454d..df3f4a73 100644 --- a/src/modules/collector/sys/funcs/push.go +++ b/src/modules/collector/sys/funcs/push.go @@ -110,7 +110,7 @@ func rpcCall(addr string, items []*dataobj.MetricValue) (dataobj.TransferResp, e return reply, fmt.Errorf("%s rpc call timeout", addr) case err := <-done: if err != nil { - rpcClients.Put(addr, nil) + rpcClients.Del(addr) client.Close() return reply, fmt.Errorf("%s rpc call done, but fail: %v", addr, err) }