mirror of
https://github.com/kopia/kopia.git
synced 2026-06-12 08:09:57 -04:00
fix(snapshots): panic: unaligned 64-bit atomic operation (#2151)
Reverted to regular sync.Pool Fixes #2150
This commit is contained in:
2
go.mod
2
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
|
||||
|
||||
4
go.sum
4
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=
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user