func esBulk(client *es.Client, in <-chan es.BulkableRequest) { ticker := time.NewTicker(*batchInterval) bulk := client.Bulk() for { select { case <-ticker.C: if bulk.NumberOfActions() != 0 { lr := logrus.WithField("ops", bulk.NumberOfActions()) resp, err := bulk.Do() if err == nil && !resp.Errors { lr.Info("bulk successful") bulk = client.Bulk() } else { lr.WithError(err).Warn("bulk failed") } } case issue, ok := <-in: if !ok { return } bulk.Add(issue) } } }