lib/db: Inline sync.Once in releaser (#7938)
Having a pointer to a Once suggests that it is shared with other objects, but it never is.
This commit is contained in:
parent
0ffa7f3f57
commit
de719ac409
|
@ -154,25 +154,20 @@ func IsNotFound(err error) bool {
|
||||||
// releaser manages counting on top of a waitgroup
|
// releaser manages counting on top of a waitgroup
|
||||||
type releaser struct {
|
type releaser struct {
|
||||||
wg *closeWaitGroup
|
wg *closeWaitGroup
|
||||||
once *sync.Once
|
once sync.Once
|
||||||
}
|
}
|
||||||
|
|
||||||
func newReleaser(wg *closeWaitGroup) (*releaser, error) {
|
func newReleaser(wg *closeWaitGroup) (*releaser, error) {
|
||||||
if err := wg.Add(1); err != nil {
|
if err := wg.Add(1); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &releaser{
|
return &releaser{wg: wg}, nil
|
||||||
wg: wg,
|
|
||||||
once: new(sync.Once),
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r releaser) Release() {
|
func (r *releaser) Release() {
|
||||||
// We use the Once because we may get called multiple times from
|
// We use the Once because we may get called multiple times from
|
||||||
// Commit() and deferred Release().
|
// Commit() and deferred Release().
|
||||||
r.once.Do(func() {
|
r.once.Do(r.wg.Done)
|
||||||
r.wg.Done()
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// closeWaitGroup behaves just like a sync.WaitGroup, but does not require
|
// closeWaitGroup behaves just like a sync.WaitGroup, but does not require
|
||||||
|
|
Loading…
Reference in New Issue