Fix Close race in sqlite storage when batch writes disabled
This commit is contained in:
parent
6bc2a2a6ac
commit
371d54ab76
@ -496,13 +496,13 @@ func getLabels(skip int) pprof.LabelSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *provider) withConn(with withConn, write bool, skip int) error {
|
func (p *provider) withConn(with withConn, write bool, skip int) error {
|
||||||
if write && p.opts.BatchWrites {
|
|
||||||
done := make(chan error)
|
|
||||||
p.closeMu.RLock()
|
p.closeMu.RLock()
|
||||||
if p.closed {
|
if p.closed {
|
||||||
p.closeMu.RUnlock()
|
p.closeMu.RUnlock()
|
||||||
return errors.New("closed")
|
return errors.New("closed")
|
||||||
}
|
}
|
||||||
|
if write && p.opts.BatchWrites {
|
||||||
|
done := make(chan error)
|
||||||
p.writes <- writeRequest{
|
p.writes <- writeRequest{
|
||||||
query: with,
|
query: with,
|
||||||
done: done,
|
done: done,
|
||||||
@ -511,6 +511,7 @@ func (p *provider) withConn(with withConn, write bool, skip int) error {
|
|||||||
p.closeMu.RUnlock()
|
p.closeMu.RUnlock()
|
||||||
return <-done
|
return <-done
|
||||||
} else {
|
} else {
|
||||||
|
defer p.closeMu.RUnlock()
|
||||||
runner, err := p.getReadWithConnRunner()
|
runner, err := p.getReadWithConnRunner()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user