Skip to content

[exporter/elasticsearch] Bulk indexer exponential backoff data race due to backoff sharing #41187

@carsonip

Description

@carsonip

Component(s)

exporter/elasticsearch

What happened?

Description

From PR #41142 CI https://github.com/open-telemetry/opentelemetry-collector-contrib/actions/runs/16148340132/job/45573173658?pr=41142

Integration test is failing

2025/07/08 16:11:54 Starting mock backend...
2025-07-08T16:11:54.598Z	info	service@v0.129.1-0.20250707130321-ac9adbf016bf/service.go:197	Setting up own telemetry...	{"resource": {"service.instance.id": "f70715df-4898-4cfc-915b-a1e467ecd387", "service.name": "otelcol", "service.version": "latest"}}
2025-07-08T16:11:54.600Z	info	service@v0.129.1-0.20250707130321-ac9adbf016bf/service.go:257	Starting otelcol...	{"resource": {"service.instance.id": "f70715df-4898-4cfc-915b-a1e467ecd387", "service.name": "otelcol", "service.version": "latest"}, "Version": "latest", "NumCPU": 4}
2025-07-08T16:11:54.600Z	info	extensions/extensions.go:41	Starting extensions...	{"resource": {"service.instance.id": "f70715df-4898-4cfc-915b-a1e467ecd387", "service.name": "otelcol", "service.version": "latest"}}
2025-07-08T16:11:54.601Z	info	otlpreceiver@v0.129.1-0.20250707130321-ac9adbf016bf/otlp.go:117	Starting GRPC server	{"resource": {"service.instance.id": "f70715df-4898-4cfc-915b-a1e467ecd387", "service.name": "otelcol", "service.version": "latest"}, "otelcol.component.id": "otlp", "otelcol.component.kind": "receiver", "endpoint": "127.0.0.1:46699"}
2025-07-08T16:11:54.601Z	info	service@v0.129.1-0.20250707130321-ac9adbf016bf/service.go:280	Everything is ready. Begin running and processing data.	{"resource": {"service.instance.id": "f70715df-4898-4cfc-915b-a1e467ecd387", "service.name": "otelcol", "service.version": "latest"}}
2025/07/08 16:11:55 Starting load generator at 1000 items/sec.
2025/07/08 16:11:57  | Sent:     1,990 logs (995/sec) | Received:     1,000 items (333/sec)
==================
WARNING: DATA RACE
Write at 0x00c000117840 by goroutine 568:
  github.com/cenkalti/backoff/v4.(*ExponentialBackOff).Reset()
      /home/runner/go/pkg/mod/github.com/cenkalti/backoff/v4@v4.3.0/exponential.go:165 +0x7d
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.createElasticsearchBackoffFunc.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/esclient.go:187 +0x61
  github.com/elastic/elastic-transport-go/v8/elastictransport.(*Client).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/elastic-transport-go/v8@v8.7.0/elastictransport/elastictransport.go:445 +0x1614
  github.com/elastic/go-elasticsearch/v8.(*BaseClient).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/go-elasticsearch/v8@v8.18.1/elasticsearch.go:367 +0x6b8
  github.com/elastic/go-docappender/v2.(*BulkIndexer).Flush()
      /home/runner/go/pkg/mod/github.com/elastic/go-docappender/v2@v2.10.0/bulk_indexer.go:452 +0xb19
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.flushBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:366 +0x10c
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).flush()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:350 +0xc4
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).run()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:343 +0x4b7
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:235 +0x8d

Previous write at 0x00c000117840 by goroutine 565:
  github.com/cenkalti/backoff/v4.(*ExponentialBackOff).Reset()
      /home/runner/go/pkg/mod/github.com/cenkalti/backoff/v4@v4.3.0/exponential.go:165 +0x7d
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.createElasticsearchBackoffFunc.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/esclient.go:187 +0x61
  github.com/elastic/elastic-transport-go/v8/elastictransport.(*Client).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/elastic-transport-go/v8@v8.7.0/elastictransport/elastictransport.go:445 +0x1614
  github.com/elastic/go-elasticsearch/v8.(*BaseClient).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/go-elasticsearch/v8@v8.18.1/elasticsearch.go:367 +0x6b8
  github.com/elastic/go-docappender/v2.(*BulkIndexer).Flush()
      /home/runner/go/pkg/mod/github.com/elastic/go-docappender/v2@v2.10.0/bulk_indexer.go:452 +0xb19
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.flushBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:366 +0x10c
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).flush()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:350 +0xc4
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).run()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:343 +0x4b7
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:235 +0x8d

Goroutine 568 (running) created at:
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:233 +0x12d
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:66 +0xa6
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*bulkIndexers).start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:442 +0x344
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/exporter.go:71 +0x167
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start-fm()
      <autogenerated>:1 +0x64
  go.opentelemetry.io/collector/component.StartFunc.Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/component@v1.35.1-0.20250707130321-ac9adbf016bf/component.go:66 +0x73
  go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*BaseExporter).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/exporter@v0.129.1-0.20250707130321-ac9adbf016bf/exporterhelper/internal/base_exporter.go:126 +0x38
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*Graph).StartAll()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/internal/graph/graph.go:431 +0x3f2
  go.opentelemetry.io/collector/service.(*Service).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/service.go:272 +0x51a
  go.opentelemetry.io/collector/otelcol.(*Collector).setupConfigurationComponents()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:242 +0x15f5
  go.opentelemetry.io/collector/otelcol.(*Collector).Run()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:312 +0x6a
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest.(*recreatableOtelCol).run.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest/collector.go:278 +0x4a
  golang.org/x/sync/errgroup.(*Group).add.func1()
      /home/runner/go/pkg/mod/golang.org/x/sync@v0.15.0/errgroup/errgroup.go:128 +0x141

Goroutine 565 (running) created at:
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:233 +0x12d
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:66 +0xa6
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*bulkIndexers).start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:442 +0x344
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/exporter.go:71 +0x167
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start-fm()
      <autogenerated>:1 +0x64
  go.opentelemetry.io/collector/component.StartFunc.Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/component@v1.35.1-0.20250707130321-ac9adbf016bf/component.go:66 +0x73
  go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*BaseExporter).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/exporter@v0.129.1-0.20250707130321-ac9adbf016bf/exporterhelper/internal/base_exporter.go:126 +0x38
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*Graph).StartAll()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/internal/graph/graph.go:431 +0x3f2
  go.opentelemetry.io/collector/service.(*Service).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/service.go:272 +0x51a
  go.opentelemetry.io/collector/otelcol.(*Collector).setupConfigurationComponents()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:242 +0x15f5
  go.opentelemetry.io/collector/otelcol.(*Collector).Run()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:312 +0x6a
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest.(*recreatableOtelCol).run.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest/collector.go:278 +0x4a
  golang.org/x/sync/errgroup.(*Group).add.func1()
      /home/runner/go/pkg/mod/golang.org/x/sync@v0.15.0/errgroup/errgroup.go:128 +0x141
==================
==================
WARNING: DATA RACE
Write at 0x00c000117848 by goroutine 568:
  github.com/cenkalti/backoff/v4.(*ExponentialBackOff).Reset()
      /home/runner/go/pkg/mod/github.com/cenkalti/backoff/v4@v4.3.0/exponential.go:166 +0xc6
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.createElasticsearchBackoffFunc.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/esclient.go:187 +0x61
  github.com/elastic/elastic-transport-go/v8/elastictransport.(*Client).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/elastic-transport-go/v8@v8.7.0/elastictransport/elastictransport.go:445 +0x1614
  github.com/elastic/go-elasticsearch/v8.(*BaseClient).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/go-elasticsearch/v8@v8.18.1/elasticsearch.go:367 +0x6b8
  github.com/elastic/go-docappender/v2.(*BulkIndexer).Flush()
      /home/runner/go/pkg/mod/github.com/elastic/go-docappender/v2@v2.10.0/bulk_indexer.go:452 +0xb19
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.flushBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:366 +0x10c
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).flush()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:350 +0xc4
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).run()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:343 +0x4b7
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:235 +0x8d

Previous write at 0x00c000117848 by goroutine 565:
  github.com/cenkalti/backoff/v4.(*ExponentialBackOff).Reset()
      /home/runner/go/pkg/mod/github.com/cenkalti/backoff/v4@v4.3.0/exponential.go:166 +0xc6
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.createElasticsearchBackoffFunc.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/esclient.go:187 +0x61
  github.com/elastic/elastic-transport-go/v8/elastictransport.(*Client).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/elastic-transport-go/v8@v8.7.0/elastictransport/elastictransport.go:445 +0x1614
  github.com/elastic/go-elasticsearch/v8.(*BaseClient).Perform()
      /home/runner/go/pkg/mod/github.com/elastic/go-elasticsearch/v8@v8.18.1/elasticsearch.go:367 +0x6b8
  github.com/elastic/go-docappender/v2.(*BulkIndexer).Flush()
      /home/runner/go/pkg/mod/github.com/elastic/go-docappender/v2@v2.10.0/bulk_indexer.go:452 +0xb19
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.flushBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:366 +0x10c
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).flush()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:350 +0xc4
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*asyncBulkIndexerWorker).run()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:343 +0x4b7
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:235 +0x8d

Goroutine 568 (running) created at:
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:233 +0x12d
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:66 +0xa6
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*bulkIndexers).start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:442 +0x344
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/exporter.go:71 +0x167
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start-fm()
      <autogenerated>:1 +0x64
  go.opentelemetry.io/collector/component.StartFunc.Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/component@v1.35.1-0.20250707130321-ac9adbf016bf/component.go:66 +0x73
  go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*BaseExporter).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/exporter@v0.129.1-0.20250707130321-ac9adbf016bf/exporterhelper/internal/base_exporter.go:126 +0x38
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*Graph).StartAll()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/internal/graph/graph.go:431 +0x3f2
  go.opentelemetry.io/collector/service.(*Service).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/service.go:272 +0x51a
  go.opentelemetry.io/collector/otelcol.(*Collector).setupConfigurationComponents()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:242 +0x15f5
  go.opentelemetry.io/collector/otelcol.(*Collector).Run()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:312 +0x6a
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest.(*recreatableOtelCol).run.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest/collector.go:278 +0x4a
  golang.org/x/sync/errgroup.(*Group).add.func1()
      /home/runner/go/pkg/mod/golang.org/x/sync@v0.15.0/errgroup/errgroup.go:128 +0x141

Goroutine 565 (running) created at:
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newAsyncBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:233 +0x12d
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.newBulkIndexer()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:66 +0xa6
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*bulkIndexers).start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/bulkindexer.go:442 +0x344
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/exporter.go:71 +0x167
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter.(*elasticsearchExporter).Start-fm()
      <autogenerated>:1 +0x64
  go.opentelemetry.io/collector/component.StartFunc.Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/component@v1.35.1-0.20250707130321-ac9adbf016bf/component.go:66 +0x73
  go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*BaseExporter).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/exporter@v0.129.1-0.20250707130321-ac9adbf016bf/exporterhelper/internal/base_exporter.go:126 +0x38
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*exporterNode).Start()
      <autogenerated>:1 +0x7b
  go.opentelemetry.io/collector/service/internal/graph.(*Graph).StartAll()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/internal/graph/graph.go:431 +0x3f2
  go.opentelemetry.io/collector/service.(*Service).Start()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/service@v0.129.1-0.20250707130321-ac9adbf016bf/service.go:272 +0x51a
  go.opentelemetry.io/collector/otelcol.(*Collector).setupConfigurationComponents()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:242 +0x15f5
  go.opentelemetry.io/collector/otelcol.(*Collector).Run()
      /home/runner/go/pkg/mod/go.opentelemetry.io/collector/otelcol@v0.129.1-0.20250707130321-ac9adbf016bf/collector.go:312 +0x6a
  github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest.(*recreatableOtelCol).run.func1()
      /home/runner/work/opentelemetry-collector-contrib/opentelemetry-collector-contrib/exporter/elasticsearchexporter/integrationtest/collector.go:278 +0x4a
  golang.org/x/sync/errgroup.(*Group).add.func1()
      /home/runner/go/pkg/mod/golang.org/x/sync@v0.15.0/errgroup/errgroup.go:128 +0x141
==================

Steps to Reproduce

Caught on CI

Expected Result

No race

Actual Result

Data race, CI failure

Collector version

v0.129.0

Environment information

Environment

OS: (e.g., "Ubuntu 20.04")
Compiler(if manually compiled): (e.g., "go 14.2")

OpenTelemetry Collector configuration

Log output

Additional context

No response

Tip

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions