in bulk_indexer_pool.go [119:145]
func (p *BulkIndexerPool) get(ctx context.Context, entry idEntry) (
idx *BulkIndexer, err error,
) {
defer func() {
// Only increment the leased count an indexer is returned.
if idx != nil {
entry.leased.Add(1)
p.leased.Add(1)
}
}()
// First, try to return an existing non-empty indexer (if any).
select {
case idx = <-entry.nonEmpty:
return
default:
}
// If there aren't any non-empty indexers, either return an
// existing indexer or create a new one if none are available.
select {
case idx = <-p.indexers:
case <-ctx.Done():
err = ctx.Err()
default:
idx = newBulkIndexer(p.config)
}
return
}