From 821fe972161f7b5cdfc4c1687ee0b19f44d3c7f3 Mon Sep 17 00:00:00 2001 From: Vee Zhang Date: Wed, 27 Oct 2021 10:43:41 +0800 Subject: [PATCH] fix pool defer (#44) --- service/pool/pool.go | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/service/pool/pool.go b/service/pool/pool.go index 5aced30a..bb8bc5c9 100644 --- a/service/pool/pool.go +++ b/service/pool/pool.go @@ -116,23 +116,25 @@ func NewConnection(address string, port int, username string, password string) ( for { select { case request := <-connection.RequestChannel: - defer func() { - if err := recover(); err != nil { - common.LogPanic(err) - request.ResponseChannel <- ChannelResponse{ - Result: nil, - Error: SessionLostError, + func() { + defer func() { + if err := recover(); err != nil { + common.LogPanic(err) + request.ResponseChannel <- ChannelResponse{ + Result: nil, + Error: SessionLostError, + } } + }() + response, err := connection.session.Execute(request.Gql) + if err != nil && (isThriftProtoError(err) || isThriftTransportError(err)) { + err = ConnectionClosedError + } + request.ResponseChannel <- ChannelResponse{ + Result: response, + Error: err, } }() - response, err := connection.session.Execute(request.Gql) - if err != nil && (isThriftProtoError(err) || isThriftTransportError(err)) { - err = ConnectionClosedError - } - request.ResponseChannel <- ChannelResponse{ - Result: response, - Error: err, - } case <-connection.CloseChannel: connection.session.Release() connectLock.Lock()