storage/sqlite/sqlite-storage.go | 11 ++++++----- diff --git a/storage/sqlite/sqlite-storage.go b/storage/sqlite/sqlite-storage.go index 7fa7343bd4ba4240d4f934c974208cf779eabdc8..53ca089172ffdb9eee8b3dde8822bf775f565ece 100644 --- a/storage/sqlite/sqlite-storage.go +++ b/storage/sqlite/sqlite-storage.go @@ -496,13 +496,13 @@ }()) } func (p *provider) withConn(with withConn, write bool, skip int) error { + p.closeMu.RLock() + if p.closed { + p.closeMu.RUnlock() + return errors.New("closed") + } if write && p.opts.BatchWrites { done := make(chan error) - p.closeMu.RLock() - if p.closed { - p.closeMu.RUnlock() - return errors.New("closed") - } p.writes <- writeRequest{ query: with, done: done, @@ -511,6 +511,7 @@ } p.closeMu.RUnlock() return <-done } else { + defer p.closeMu.RUnlock() runner, err := p.getReadWithConnRunner() if err != nil { return err