From 487ace094bf01c8d580cf2cee1b2be4f086558ed Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Thu, 31 Aug 2023 09:59:55 -0700 Subject: [PATCH 1/2] Set the default balancer name to round_robin --- collector/exporter/otelarrowexporter/config_test.go | 2 +- collector/exporter/otelarrowexporter/factory.go | 5 +++++ collector/exporter/otelarrowexporter/testdata/config.yaml | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/collector/exporter/otelarrowexporter/config_test.go b/collector/exporter/otelarrowexporter/config_test.go index dfe63d15a..f1a9e7618 100644 --- a/collector/exporter/otelarrowexporter/config_test.go +++ b/collector/exporter/otelarrowexporter/config_test.go @@ -75,7 +75,7 @@ func TestUnmarshalConfig(t *testing.T) { Timeout: 30 * time.Second, }, WriteBufferSize: 512 * 1024, - BalancerName: "round_robin", + BalancerName: "experimental", Auth: &configauth.Authentication{AuthenticatorID: component.NewID("nop")}, }, Arrow: ArrowSettings{ diff --git a/collector/exporter/otelarrowexporter/factory.go b/collector/exporter/otelarrowexporter/factory.go index 82d6bcb08..66ae50292 100644 --- a/collector/exporter/otelarrowexporter/factory.go +++ b/collector/exporter/otelarrowexporter/factory.go @@ -48,6 +48,11 @@ func createDefaultConfig() component.Config { Compression: configcompression.Zstd, // We almost read 0 bytes, so no need to tune ReadBufferSize. WriteBufferSize: 512 * 1024, + // The `configgrpc` default is pick_first, + // which is not great for OTel Arrow exporters + // because it concentrates load at a single + // destination. + BalancerName: "round_robin", }, Arrow: ArrowSettings{ NumStreams: runtime.NumCPU(), diff --git a/collector/exporter/otelarrowexporter/testdata/config.yaml b/collector/exporter/otelarrowexporter/testdata/config.yaml index 0a5794a72..760a4a973 100644 --- a/collector/exporter/otelarrowexporter/testdata/config.yaml +++ b/collector/exporter/otelarrowexporter/testdata/config.yaml @@ -24,7 +24,7 @@ keepalive: time: 20s timeout: 30s permit_without_stream: true -balancer_name: "round_robin" +balancer_name: "experimental" arrow: num_streams: 2 disabled: false From bedef07935c3b6ac49865a765ddfbc036f1fb836 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Thu, 31 Aug 2023 10:04:13 -0700 Subject: [PATCH 2/2] more testing --- collector/exporter/otelarrowexporter/config_test.go | 6 ++++-- collector/exporter/otelarrowexporter/testdata/default.yaml | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 collector/exporter/otelarrowexporter/testdata/default.yaml diff --git a/collector/exporter/otelarrowexporter/config_test.go b/collector/exporter/otelarrowexporter/config_test.go index f1a9e7618..3322f206e 100644 --- a/collector/exporter/otelarrowexporter/config_test.go +++ b/collector/exporter/otelarrowexporter/config_test.go @@ -19,16 +19,18 @@ import ( "go.opentelemetry.io/collector/config/configgrpc" "go.opentelemetry.io/collector/config/configopaque" "go.opentelemetry.io/collector/config/configtls" - "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/confmap/confmaptest" "go.opentelemetry.io/collector/exporter/exporterhelper" ) func TestUnmarshalDefaultConfig(t *testing.T) { + cm, err := confmaptest.LoadConf(filepath.Join("testdata", "default.yaml")) + require.NoError(t, err) factory := NewFactory() cfg := factory.CreateDefaultConfig() - assert.NoError(t, component.UnmarshalConfig(confmap.New(), cfg)) + assert.NoError(t, component.UnmarshalConfig(cm, cfg)) assert.Equal(t, factory.CreateDefaultConfig(), cfg) + assert.Equal(t, "round_robin", cfg.(*Config).GRPCClientSettings.BalancerName) } func TestUnmarshalConfig(t *testing.T) { diff --git a/collector/exporter/otelarrowexporter/testdata/default.yaml b/collector/exporter/otelarrowexporter/testdata/default.yaml new file mode 100644 index 000000000..458203eae --- /dev/null +++ b/collector/exporter/otelarrowexporter/testdata/default.yaml @@ -0,0 +1 @@ +# when nothing is set