()
| 191 | } |
| 192 | |
| 193 | func (p *producerProvider) borrow() (producer sarama.AsyncProducer) { |
| 194 | p.producersLock.Lock() |
| 195 | defer p.producersLock.Unlock() |
| 196 | |
| 197 | if len(p.producers) == 0 { |
| 198 | for { |
| 199 | producer = p.producerProvider() |
| 200 | if producer != nil { |
| 201 | return |
| 202 | } |
| 203 | } |
| 204 | } |
| 205 | |
| 206 | index := len(p.producers) - 1 |
| 207 | producer = p.producers[index] |
| 208 | p.producers = p.producers[:index] |
| 209 | return |
| 210 | } |
| 211 | |
| 212 | func (p *producerProvider) release(producer sarama.AsyncProducer) { |
| 213 | p.producersLock.Lock() |