From 146e5443b0bdb436bdc7678ad7b52756d2401639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E5=BE=90?= Date: Sun, 30 May 2021 10:38:30 +0800 Subject: [PATCH 1/6] change code more readable --- database/kv/zk/client.go | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/database/kv/zk/client.go b/database/kv/zk/client.go index 3d314cb..3e6d1a3 100644 --- a/database/kv/zk/client.go +++ b/database/kv/zk/client.go @@ -111,16 +111,25 @@ func initZookeeperClientPool() { // NewZookeeperClient will create a ZookeeperClient func NewZookeeperClient(name string, zkAddrs []string, share bool, opts ...zkClientOption) (*ZookeeperClient, error) { - if share { - clientPoolOnce.Do(initZookeeperClientPool) - zkClientPool.Lock() - defer zkClientPool.Unlock() - if zkClient, ok := zkClientPool.zkClient[name]; ok { - zkClient.activeNumber++ - return zkClient, nil - } - + if !share { + return newClient(name, zkAddrs, share, opts...) + } + clientPoolOnce.Do(initZookeeperClientPool) + zkClientPool.Lock() + defer zkClientPool.Unlock() + if zkClient, ok := zkClientPool.zkClient[name]; ok { + zkClient.activeNumber++ + return zkClient, nil + } + newZkClient, err := newClient(name, zkAddrs, share, opts...) + if err != nil { + return nil, err } + zkClientPool.zkClient[name] = newZkClient + return newZkClient, nil +} + +func newClient(name string, zkAddrs []string, share bool, opts ...zkClientOption) (*ZookeeperClient, error) { newZkClient := &ZookeeperClient{ name: name, ZkAddrs: zkAddrs, @@ -139,9 +148,6 @@ func NewZookeeperClient(name string, zkAddrs []string, share bool, opts ...zkCli return nil, err } newZkClient.activeNumber++ - if share { - zkClientPool.zkClient[name] = newZkClient - } return newZkClient, nil } From 47b4ea9932f9a4ae931a24825eb8d94ef21fdc0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E5=BE=90?= Date: Mon, 31 May 2021 20:51:56 +0800 Subject: [PATCH 2/6] fix nacos ut failed --- database/kv/nacos/client_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/database/kv/nacos/client_test.go b/database/kv/nacos/client_test.go index 61a0659..79d5885 100644 --- a/database/kv/nacos/client_test.go +++ b/database/kv/nacos/client_test.go @@ -39,10 +39,12 @@ func TestNewNacosClient(t *testing.T) { t.Run("naming_client", func(t *testing.T) { client1, err := NewNacosNamingClient("nacos", true, scs, cc) + assert.Nil(t, err) client2, err := NewNacosNamingClient("nacos", true, scs, cc) + assert.Nil(t, err) client3, err := NewNacosNamingClient("nacos", false, scs, cc) + assert.Nil(t, err) client4, err := NewNacosNamingClient("test", true, scs, cc) - assert.Nil(t, err) assert.Equal(t, client1, client2) assert.NotEqual(t, client1, client3) From 56cab7ff87f2aae10ad8bfb34945d3f7a1d022b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E5=BE=90?= Date: Mon, 31 May 2021 20:57:50 +0800 Subject: [PATCH 3/6] fix nacos ut --- database/kv/nacos/client_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/database/kv/nacos/client_test.go b/database/kv/nacos/client_test.go index 79d5885..b987ddf 100644 --- a/database/kv/nacos/client_test.go +++ b/database/kv/nacos/client_test.go @@ -53,8 +53,11 @@ func TestNewNacosClient(t *testing.T) { t.Run("config_client", func(t *testing.T) { client1, err := NewNacosConfigClient("nacos", true, scs, cc) + assert.Nil(t, err) client2, err := NewNacosConfigClient("nacos", true, scs, cc) + assert.Nil(t, err) client3, err := NewNacosConfigClient("nacos", false, scs, cc) + assert.Nil(t, err) client4, err := NewNacosConfigClient("test", true, scs, cc) assert.Nil(t, err) From 48ebb8a40beed0f730692adfe83d7cc6ad5ef461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E5=BE=90?= Date: Fri, 9 Jul 2021 22:36:19 +0800 Subject: [PATCH 4/6] fix zk reconn --- database/kv/zk/client.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/database/kv/zk/client.go b/database/kv/zk/client.go index 3e6d1a3..4ef00cd 100644 --- a/database/kv/zk/client.go +++ b/database/kv/zk/client.go @@ -55,6 +55,7 @@ type ZookeeperClient struct { Wait sync.WaitGroup valid uint32 share bool + initialized uint32 reconnectCh chan struct{} eventRegistry map[string][]*chan struct{} eventRegistryLock sync.RWMutex @@ -243,8 +244,11 @@ func (d *DefaultHandler) HandleZkEvent(z *ZookeeperClient) { } if event.State == zk.StateHasSession { atomic.StoreUint32(&z.valid, 1) - close(z.reconnectCh) - z.reconnectCh = make(chan struct{}) + //if this is the first connection, don't trigger reconnect event + if !atomic.CompareAndSwapUint32(&z.initialized, 0, 1) { + close(z.reconnectCh) + z.reconnectCh = make(chan struct{}) + } } z.eventRegistryLock.RLock() if a, ok := z.eventRegistry[event.Path]; ok && 0 < len(a) { From 3b893d2b7f5a0b8bfc0f32ee3862c1cc021cf6f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E5=BE=90?= Date: Thu, 10 Nov 2022 10:09:06 +0800 Subject: [PATCH 5/6] fix AcquireBytes logic --- bytes/bytes_pool.go | 4 ++-- bytes/bytes_pool_test.go | 11 +++++++++++ go.sum | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/bytes/bytes_pool.go b/bytes/bytes_pool.go index 7b4991d..562b2b8 100644 --- a/bytes/bytes_pool.go +++ b/bytes/bytes_pool.go @@ -61,11 +61,11 @@ func (bp *BytesPool) findIndex(size int) int { return bp.length } -// AcquireBytes get specific make([]byte, 0, size) +// AcquireBytes get specific length []byte func (bp *BytesPool) AcquireBytes(size int) *[]byte { idx := bp.findIndex(size) if idx >= bp.length { - buf := make([]byte, 0, size) + buf := make([]byte, size, size) return &buf } diff --git a/bytes/bytes_pool_test.go b/bytes/bytes_pool_test.go index 3849491..8bba609 100644 --- a/bytes/bytes_pool_test.go +++ b/bytes/bytes_pool_test.go @@ -19,6 +19,7 @@ package gxbytes import ( "fmt" + "github.com/stretchr/testify/assert" "testing" ) @@ -72,3 +73,13 @@ func benchmarkfindIndex(b *testing.B, size int) { defaultBytesPool.findIndex(size) } } + +func TestAcquireBytes(t *testing.T) { + bytes := AcquireBytes(10) + assert.Equal(t, 10, len(*bytes)) + assert.Equal(t, 512, cap(*bytes)) + + bytes3 := AcquireBytes(1000000) + assert.Equal(t, 1000000, cap(*bytes3)) + assert.Equal(t, 1000000, cap(*bytes3)) +} diff --git a/go.sum b/go.sum index b5a9ebd..4cf6082 100644 --- a/go.sum +++ b/go.sum @@ -462,6 +462,7 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= @@ -471,6 +472,7 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -643,6 +645,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 4e1bd29047983bcdcacb64a26c4727a35cbde360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E5=BE=90?= Date: Thu, 10 Nov 2022 10:12:08 +0800 Subject: [PATCH 6/6] fix import format --- bytes/bytes_pool_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bytes/bytes_pool_test.go b/bytes/bytes_pool_test.go index 8bba609..615e368 100644 --- a/bytes/bytes_pool_test.go +++ b/bytes/bytes_pool_test.go @@ -19,9 +19,11 @@ package gxbytes import ( "fmt" - "github.com/stretchr/testify/assert" "testing" ) +import ( + "github.com/stretchr/testify/assert" +) func Test_findIndex(t *testing.T) { bp := NewBytesPool([]int{16, 4 << 10, 16 << 10, 32 << 10, 64 << 10})