mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
deps: Upgrade github.com/bep/lazycache v0.6.0 => v0.7.0
This commit is contained in:
parent
e10915f80a
commit
f5fefeda8f
4 changed files with 60 additions and 15 deletions
25
cache/dynacache/dynacache.go
vendored
25
cache/dynacache/dynacache.go
vendored
|
@ -430,12 +430,25 @@ func (p *Partition[K, V]) doGetOrCreateWitTimeout(key K, duration time.Duration,
|
||||||
errch := make(chan error, 1)
|
errch := make(chan error, 1)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
v, _, err := p.c.GetOrCreate(key, create)
|
var (
|
||||||
if err != nil {
|
v V
|
||||||
errch <- err
|
err error
|
||||||
return
|
)
|
||||||
}
|
defer func() {
|
||||||
resultch <- v
|
if r := recover(); r != nil {
|
||||||
|
if rerr, ok := r.(error); ok {
|
||||||
|
err = rerr
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("panic: %v", r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
errch <- err
|
||||||
|
} else {
|
||||||
|
resultch <- v
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
v, _, err = p.c.GetOrCreate(key, create)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
|
46
cache/dynacache/dynacache_test.go
vendored
46
cache/dynacache/dynacache_test.go
vendored
|
@ -14,6 +14,7 @@
|
||||||
package dynacache
|
package dynacache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -174,18 +175,47 @@ func TestPanicInCreate(t *testing.T) {
|
||||||
|
|
||||||
p1 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", OptionsPartition{Weight: 30, ClearWhen: ClearOnRebuild})
|
p1 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", OptionsPartition{Weight: 30, ClearWhen: ClearOnRebuild})
|
||||||
|
|
||||||
|
willPanic := func(i int) func() {
|
||||||
|
return func() {
|
||||||
|
p1.GetOrCreate(fmt.Sprintf("panic-%d", i), func(key string) (testItem, error) {
|
||||||
|
panic(errors.New(key))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOrCreateWitTimeout needs to recover from panics in the create func.
|
||||||
|
willErr := func(i int) error {
|
||||||
|
_, err := p1.GetOrCreateWitTimeout(fmt.Sprintf("error-%d", i), 10*time.Second, func(key string) (testItem, error) {
|
||||||
|
return testItem{}, errors.New(key)
|
||||||
|
})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
for j := 0; j < 3; j++ {
|
for j := 0; j < 3; j++ {
|
||||||
_, err := p1.GetOrCreate(fmt.Sprintf("panic1-%d", i), func(string) (testItem, error) {
|
c.Assert(willPanic(i), qt.PanicMatches, fmt.Sprintf("panic-%d", i))
|
||||||
panic("failed")
|
c.Assert(willErr(i), qt.ErrorMatches, fmt.Sprintf("error-%d", i))
|
||||||
})
|
}
|
||||||
|
}
|
||||||
|
|
||||||
c.Assert(err, qt.Not(qt.IsNil))
|
// Test the same keys again without the panic.
|
||||||
|
for i := 0; i < 3; i++ {
|
||||||
_, err = p1.GetOrCreateWitTimeout(fmt.Sprintf("panic2-%d", i), 10*time.Second, func(string) (testItem, error) {
|
for j := 0; j < 3; j++ {
|
||||||
panic("failed")
|
v, err := p1.GetOrCreate(fmt.Sprintf("panic-%d", i), func(key string) (testItem, error) {
|
||||||
|
return testItem{
|
||||||
|
name: key,
|
||||||
|
}, nil
|
||||||
})
|
})
|
||||||
c.Assert(err, qt.Not(qt.IsNil))
|
c.Assert(err, qt.IsNil)
|
||||||
|
c.Assert(v.name, qt.Equals, fmt.Sprintf("panic-%d", i))
|
||||||
|
|
||||||
|
v, err = p1.GetOrCreateWitTimeout(fmt.Sprintf("error-%d", i), 10*time.Second, func(key string) (testItem, error) {
|
||||||
|
return testItem{
|
||||||
|
name: key,
|
||||||
|
}, nil
|
||||||
|
})
|
||||||
|
c.Assert(err, qt.IsNil)
|
||||||
|
c.Assert(v.name, qt.Equals, fmt.Sprintf("error-%d", i))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -16,7 +16,7 @@ require (
|
||||||
github.com/bep/gowebp v0.3.0
|
github.com/bep/gowebp v0.3.0
|
||||||
github.com/bep/helpers v0.5.0
|
github.com/bep/helpers v0.5.0
|
||||||
github.com/bep/imagemeta v0.8.1
|
github.com/bep/imagemeta v0.8.1
|
||||||
github.com/bep/lazycache v0.6.0
|
github.com/bep/lazycache v0.7.0
|
||||||
github.com/bep/logg v0.4.0
|
github.com/bep/logg v0.4.0
|
||||||
github.com/bep/mclib v1.20400.20402
|
github.com/bep/mclib v1.20400.20402
|
||||||
github.com/bep/overlayfs v0.9.2
|
github.com/bep/overlayfs v0.9.2
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -145,6 +145,8 @@ github.com/bep/lazycache v0.4.0 h1:X8yVyWNVupPd4e1jV7efi3zb7ZV/qcjKQgIQ5aPbkYI=
|
||||||
github.com/bep/lazycache v0.4.0/go.mod h1:NmRm7Dexh3pmR1EignYR8PjO2cWybFQ68+QgY3VMCSc=
|
github.com/bep/lazycache v0.4.0/go.mod h1:NmRm7Dexh3pmR1EignYR8PjO2cWybFQ68+QgY3VMCSc=
|
||||||
github.com/bep/lazycache v0.6.0 h1:0vCgFo7TBtMQpSx64jnH1sagmw0ZougIFRpsqPHTa5U=
|
github.com/bep/lazycache v0.6.0 h1:0vCgFo7TBtMQpSx64jnH1sagmw0ZougIFRpsqPHTa5U=
|
||||||
github.com/bep/lazycache v0.6.0/go.mod h1:NmRm7Dexh3pmR1EignYR8PjO2cWybFQ68+QgY3VMCSc=
|
github.com/bep/lazycache v0.6.0/go.mod h1:NmRm7Dexh3pmR1EignYR8PjO2cWybFQ68+QgY3VMCSc=
|
||||||
|
github.com/bep/lazycache v0.7.0 h1:VM257SkkjcR9z55eslXTkUIX8QMNKoqQRNKV/4xIkCY=
|
||||||
|
github.com/bep/lazycache v0.7.0/go.mod h1:NmRm7Dexh3pmR1EignYR8PjO2cWybFQ68+QgY3VMCSc=
|
||||||
github.com/bep/logg v0.4.0 h1:luAo5mO4ZkhA5M1iDVDqDqnBBnlHjmtZF6VAyTp+nCQ=
|
github.com/bep/logg v0.4.0 h1:luAo5mO4ZkhA5M1iDVDqDqnBBnlHjmtZF6VAyTp+nCQ=
|
||||||
github.com/bep/logg v0.4.0/go.mod h1:Ccp9yP3wbR1mm++Kpxet91hAZBEQgmWgFgnXX3GkIV0=
|
github.com/bep/logg v0.4.0/go.mod h1:Ccp9yP3wbR1mm++Kpxet91hAZBEQgmWgFgnXX3GkIV0=
|
||||||
github.com/bep/mclib v1.20400.20402 h1:olpCE2WSPpOAbFE1R4hnftSEmQ34+xzy2HRzd0m69rA=
|
github.com/bep/mclib v1.20400.20402 h1:olpCE2WSPpOAbFE1R4hnftSEmQ34+xzy2HRzd0m69rA=
|
||||||
|
|
Loading…
Reference in a new issue