}
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,
p.closeMu.RUnlock()
return <-done
} else {
+ defer p.closeMu.RUnlock()
runner, err := p.getReadWithConnRunner()
if err != nil {
return err