diff --git a/go.mod b/go.mod index 97c1bf7f0..1717e6726 100644 --- a/go.mod +++ b/go.mod @@ -106,7 +106,6 @@ require ( github.com/chromedp/cdproto v0.0.0-20220515234810-83d799542a04 github.com/chromedp/chromedp v0.8.2 github.com/edsrzf/mmap-go v1.1.0 - github.com/golang-design/lockfree v0.0.1 github.com/hashicorp/golang-lru v0.5.4 go.opentelemetry.io/otel v1.7.0 go.opentelemetry.io/otel/exporters/jaeger v1.7.0 @@ -118,7 +117,6 @@ require ( cloud.google.com/go/compute v1.7.0 // indirect cloud.google.com/go/iam v0.3.0 // indirect github.com/alessio/shellescape v1.4.1 // indirect - github.com/changkun/lockfree v0.0.1 // indirect github.com/chromedp/sysutil v1.0.0 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect diff --git a/go.sum b/go.sum index bdef90bf3..96d82e956 100644 --- a/go.sum +++ b/go.sum @@ -115,8 +115,6 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/changkun/lockfree v0.0.1 h1:5WefVJLglY4IHRqOQmh6Ao6wkJYaJkarshKU8VUtId4= -github.com/changkun/lockfree v0.0.1/go.mod h1:3bKiaXn/iNzIPlSvSOMSVbRQUQtAp8qUAyBUtzU11s4= github.com/chmduquesne/rollinghash v4.0.0+incompatible h1:hnREQO+DXjqIw3rUTzWN7/+Dpw+N5Um8zpKV0JOEgbo= github.com/chmduquesne/rollinghash v4.0.0+incompatible/go.mod h1:Uc2I36RRfTAf7Dge82bi3RU0OQUmXT9iweIcPqvr8A0= github.com/chromedp/cdproto v0.0.0-20220515234810-83d799542a04 h1:8GLetRp0N/g2MVzUmFRBXgLJTPofYAdTyWNR2lC0EQM= @@ -201,8 +199,6 @@ github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/golang-design/lockfree v0.0.1 h1:vWujpt8Z3u1ufDCMqRlfgagew+QSE++YDGnFAqsCiY8= -github.com/golang-design/lockfree v0.0.1/go.mod h1:bWcnifzOPu9MxpFuHV0uEuJjIiDAgdj3rfCH/sUTO+M= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= diff --git a/internal/freepool/freepool.go b/internal/freepool/freepool.go index 7c3948277..c4e7f8a4d 100644 --- a/internal/freepool/freepool.go +++ b/internal/freepool/freepool.go @@ -2,38 +2,33 @@ package freepool import ( - "github.com/golang-design/lockfree" + "sync" ) // Pool is a small pool of recently returned objects. // Unlike sync.Pool, the pool is not subject to gargbage collection under memory pressure. type Pool struct { - makeNew func() interface{} - clean func(v interface{}) - stack lockfree.Stack + clean func(v interface{}) + pool sync.Pool } // Take returns an item from the pool, and if not available makes a new one. func (p *Pool) Take() interface{} { - v := p.stack.Pop() - if v == nil { - return p.makeNew() - } - - return v + return p.pool.Get() } // Return returns an item to the pool after cleaning it. func (p *Pool) Return(v interface{}) { p.clean(v) - - p.stack.Push(v) + p.pool.Put(v) } // New returns a new free pool. func New(makeNew func() interface{}, clean func(v interface{})) *Pool { return &Pool{ - makeNew: makeNew, - clean: clean, + clean: clean, + pool: sync.Pool{ + New: makeNew, + }, } }