From 16aff1fb0992a78b1e6ef38458b39754eae60c27 Mon Sep 17 00:00:00 2001 From: pantianying <601666418@qq.com> Date: Wed, 18 Dec 2019 16:40:39 +0800 Subject: [PATCH] fix bug for reverseRegistryProtocol fix travis-ci problem change lock position change lock position --- protocol/dubbo/pool.go | 18 +++++++++++------- registry/protocol/protocol.go | 6 +++--- registry/protocol/protocol_test.go | 5 ----- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/protocol/dubbo/pool.go b/protocol/dubbo/pool.go index 0c4e74ae7..6a5a62bd9 100644 --- a/protocol/dubbo/pool.go +++ b/protocol/dubbo/pool.go @@ -289,10 +289,18 @@ func (p *gettyRPCClientPool) close() { } func (p *gettyRPCClientPool) getGettyRpcClient(protocol, addr string) (*gettyRPCClient, error) { - + if conn, err := p.selectGettyRpcClient(protocol, addr); err != nil { + return nil, err + } else if conn != nil { + return conn, nil + } + // create new conn + return newGettyRPCClientConn(p, protocol, addr) +} +func (p *gettyRPCClientPool) selectGettyRpcClient(protocol, addr string) (*gettyRPCClient, error) { p.Lock() + defer p.Unlock() if p.conns == nil { - p.Unlock() return nil, errClientPoolClosed } @@ -308,14 +316,10 @@ func (p *gettyRPCClientPool) getGettyRpcClient(protocol, addr string) (*gettyRPC continue } conn.updateActive(now) //update active time - p.Unlock() return conn, nil } - p.Unlock() - // create new conn - return newGettyRPCClientConn(p, protocol, addr) + return nil, nil } - func (p *gettyRPCClientPool) release(conn *gettyRPCClient, err error) { if conn == nil || conn.getActive() == 0 { return diff --git a/registry/protocol/protocol.go b/registry/protocol/protocol.go index ffdb2753d..534a4b945 100644 --- a/registry/protocol/protocol.go +++ b/registry/protocol/protocol.go @@ -338,10 +338,10 @@ func setProviderUrl(regURL *common.URL, providerURL *common.URL) { } func GetProtocol() protocol.Protocol { - if regProtocol == nil { - regProtocol = newRegistryProtocol() + if regProtocol != nil { + return regProtocol } - return regProtocol + return newRegistryProtocol() } type wrappedInvoker struct { diff --git a/registry/protocol/protocol_test.go b/registry/protocol/protocol_test.go index 761d14006..0c19da59d 100644 --- a/registry/protocol/protocol_test.go +++ b/registry/protocol/protocol_test.go @@ -291,8 +291,3 @@ func TestExportWithApplicationConfig(t *testing.T) { v2, _ := regProtocol.bounds.Load(getCacheKey(newUrl)) assert.NotNil(t, v2) } - -func TestGetProtocol(t *testing.T) { - singleton := GetProtocol() - assert.True(t, singleton == GetProtocol()) -} -- GitLab