func()

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
}