fix(snapshots): panic: unaligned 64-bit atomic operation (#2151)

Reverted to regular sync.Pool

Fixes #2150
This commit is contained in:
Jarek Kowalski
2022-07-06 18:34:25 -07:00
committed by GitHub
parent bc0e0641bf
commit aec08c84c2
3 changed files with 9 additions and 20 deletions

2
go.mod
View File

@@ -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

4
go.sum
View File

@@ -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=

View File

@@ -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,
},
}
}