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:
greatroar 2021-09-10 09:58:17 +02:00 committed by GitHub
parent 0ffa7f3f57
commit de719ac409
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 9 deletions

View File

@ -154,25 +154,20 @@ func IsNotFound(err error) bool {
// releaser manages counting on top of a waitgroup
type releaser struct {
wg *closeWaitGroup
once *sync.Once
once sync.Once
}
func newReleaser(wg *closeWaitGroup) (*releaser, error) {
if err := wg.Add(1); err != nil {
return nil, err
}
return &releaser{
wg: wg,
once: new(sync.Once),
}, nil
return &releaser{wg: wg}, nil
}
func (r releaser) Release() {
func (r *releaser) Release() {
// We use the Once because we may get called multiple times from
// Commit() and deferred Release().
r.once.Do(func() {
r.wg.Done()
})
r.once.Do(r.wg.Done)
}
// closeWaitGroup behaves just like a sync.WaitGroup, but does not require