You've already forked opentelemetry-go
							
							
				mirror of
				https://github.com/open-telemetry/opentelemetry-go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	Unexport EnvBatchSpanProcessor* constants (#2583)
* Move BSP env support to internal * Use pkg name * Update env test * Use internal/env in sdk/trace
This commit is contained in:
		
							
								
								
									
										88
									
								
								sdk/internal/env/env.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								sdk/internal/env/env.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| // Copyright The OpenTelemetry Authors | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package env // import "go.opentelemetry.io/otel/sdk/internal/env" | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
| 	"strconv" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/internal/global" | ||||
| ) | ||||
|  | ||||
| // Environment variable names | ||||
| const ( | ||||
| 	// BatchSpanProcessorScheduleDelayKey | ||||
| 	// Delay interval between two consecutive exports. | ||||
| 	// i.e. 5000 | ||||
| 	BatchSpanProcessorScheduleDelayKey = "OTEL_BSP_SCHEDULE_DELAY" | ||||
| 	// BatchSpanProcessorExportTimeoutKey | ||||
| 	// Maximum allowed time to export data. | ||||
| 	// i.e. 3000 | ||||
| 	BatchSpanProcessorExportTimeoutKey = "OTEL_BSP_EXPORT_TIMEOUT" | ||||
| 	// BatchSpanProcessorMaxQueueSizeKey | ||||
| 	// Maximum queue size | ||||
| 	// i.e. 2048 | ||||
| 	BatchSpanProcessorMaxQueueSizeKey = "OTEL_BSP_MAX_QUEUE_SIZE" | ||||
| 	// BatchSpanProcessorMaxExportBatchSizeKey | ||||
| 	// Maximum batch size | ||||
| 	// Note: Must be less than or equal to EnvBatchSpanProcessorMaxQueueSize | ||||
| 	// i.e. 512 | ||||
| 	BatchSpanProcessorMaxExportBatchSizeKey = "OTEL_BSP_MAX_EXPORT_BATCH_SIZE" | ||||
| ) | ||||
|  | ||||
| // IntEnvOr returns the int value of the environment variable with name key if | ||||
| // it exists and the value is an int. Otherwise, defaultValue is returned. | ||||
| func IntEnvOr(key string, defaultValue int) int { | ||||
| 	value, ok := os.LookupEnv(key) | ||||
| 	if !ok { | ||||
| 		return defaultValue | ||||
| 	} | ||||
|  | ||||
| 	intValue, err := strconv.Atoi(value) | ||||
| 	if err != nil { | ||||
| 		global.Info("Got invalid value, number value expected.", key, value) | ||||
| 		return defaultValue | ||||
| 	} | ||||
|  | ||||
| 	return intValue | ||||
| } | ||||
|  | ||||
| // BatchSpanProcessorScheduleDelay returns the environment variable value for | ||||
| // the OTEL_BSP_SCHEDULE_DELAY key if it exists, otherwise defaultValue is | ||||
| // returned. | ||||
| func BatchSpanProcessorScheduleDelay(defaultValue int) int { | ||||
| 	return IntEnvOr(BatchSpanProcessorScheduleDelayKey, defaultValue) | ||||
| } | ||||
|  | ||||
| // BatchSpanProcessorExportTimeout returns the environment variable value for | ||||
| // the OTEL_BSP_EXPORT_TIMEOUT key if it exists, otherwise defaultValue is | ||||
| // returned. | ||||
| func BatchSpanProcessorExportTimeout(defaultValue int) int { | ||||
| 	return IntEnvOr(BatchSpanProcessorExportTimeoutKey, defaultValue) | ||||
| } | ||||
|  | ||||
| // BatchSpanProcessorMaxQueueSize returns the environment variable value for | ||||
| // the OTEL_BSP_MAX_QUEUE_SIZE key if it exists, otherwise defaultValue is | ||||
| // returned. | ||||
| func BatchSpanProcessorMaxQueueSize(defaultValue int) int { | ||||
| 	return IntEnvOr(BatchSpanProcessorMaxQueueSizeKey, defaultValue) | ||||
| } | ||||
|  | ||||
| // BatchSpanProcessorMaxExportBatchSize returns the environment variable value for | ||||
| // the OTEL_BSP_MAX_EXPORT_BATCH_SIZE key if it exists, otherwise defaultValue | ||||
| // is returned. | ||||
| func BatchSpanProcessorMaxExportBatchSize(defaultValue int) int { | ||||
| 	return IntEnvOr(BatchSpanProcessorMaxExportBatchSizeKey, defaultValue) | ||||
| } | ||||
| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| 
 | ||||
| package trace | ||||
| package env | ||||
| 
 | ||||
| import ( | ||||
| 	"os" | ||||
| @@ -46,14 +46,14 @@ func TestIntEnvOr(t *testing.T) { | ||||
| 	} | ||||
| 
 | ||||
| 	envStore := ottest.NewEnvStore() | ||||
| 	envStore.Record(EnvBatchSpanProcessorMaxQueueSize) | ||||
| 	envStore.Record(BatchSpanProcessorMaxQueueSizeKey) | ||||
| 	defer func() { | ||||
| 		require.NoError(t, envStore.Restore()) | ||||
| 	}() | ||||
| 	for _, tc := range testCases { | ||||
| 		t.Run(tc.name, func(t *testing.T) { | ||||
| 			require.NoError(t, os.Setenv(EnvBatchSpanProcessorMaxQueueSize, tc.envValue)) | ||||
| 			actualValue := intEnvOr(EnvBatchSpanProcessorMaxQueueSize, tc.defaultValue) | ||||
| 			require.NoError(t, os.Setenv(BatchSpanProcessorMaxQueueSizeKey, tc.envValue)) | ||||
| 			actualValue := BatchSpanProcessorMaxQueueSize(tc.defaultValue) | ||||
| 			assert.Equal(t, tc.expectedValue, actualValue) | ||||
| 		}) | ||||
| 	} | ||||
| @@ -23,6 +23,7 @@ import ( | ||||
|  | ||||
| 	"go.opentelemetry.io/otel" | ||||
| 	"go.opentelemetry.io/otel/internal/global" | ||||
| 	"go.opentelemetry.io/otel/sdk/internal/env" | ||||
| 	"go.opentelemetry.io/otel/trace" | ||||
| ) | ||||
|  | ||||
| @@ -89,8 +90,8 @@ var _ SpanProcessor = (*batchSpanProcessor)(nil) | ||||
| // | ||||
| // If the exporter is nil, the span processor will preform no action. | ||||
| func NewBatchSpanProcessor(exporter SpanExporter, options ...BatchSpanProcessorOption) SpanProcessor { | ||||
| 	maxQueueSize := intEnvOr(EnvBatchSpanProcessorMaxQueueSize, DefaultMaxQueueSize) | ||||
| 	maxExportBatchSize := intEnvOr(EnvBatchSpanProcessorMaxExportBatchSize, DefaultMaxExportBatchSize) | ||||
| 	maxQueueSize := env.BatchSpanProcessorMaxQueueSize(DefaultMaxQueueSize) | ||||
| 	maxExportBatchSize := env.BatchSpanProcessorMaxExportBatchSize(DefaultMaxExportBatchSize) | ||||
|  | ||||
| 	if maxExportBatchSize > maxQueueSize { | ||||
| 		if DefaultMaxExportBatchSize > maxQueueSize { | ||||
| @@ -101,8 +102,8 @@ func NewBatchSpanProcessor(exporter SpanExporter, options ...BatchSpanProcessorO | ||||
| 	} | ||||
|  | ||||
| 	o := BatchSpanProcessorOptions{ | ||||
| 		BatchTimeout:       time.Duration(intEnvOr(EnvBatchSpanProcessorScheduleDelay, DefaultScheduleDelay)) * time.Millisecond, | ||||
| 		ExportTimeout:      time.Duration(intEnvOr(EnvBatchSpanProcessorExportTimeout, DefaultExportTimeout)) * time.Millisecond, | ||||
| 		BatchTimeout:       time.Duration(env.BatchSpanProcessorScheduleDelay(DefaultScheduleDelay)) * time.Millisecond, | ||||
| 		ExportTimeout:      time.Duration(env.BatchSpanProcessorExportTimeout(DefaultExportTimeout)) * time.Millisecond, | ||||
| 		MaxQueueSize:       maxQueueSize, | ||||
| 		MaxExportBatchSize: maxExportBatchSize, | ||||
| 	} | ||||
|   | ||||
| @@ -31,6 +31,7 @@ import ( | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/internal/global" | ||||
| 	"go.opentelemetry.io/otel/sdk/internal/env" | ||||
| 	sdktrace "go.opentelemetry.io/otel/sdk/trace" | ||||
| 	"go.opentelemetry.io/otel/sdk/trace/tracetest" | ||||
| 	"go.opentelemetry.io/otel/trace" | ||||
| @@ -233,8 +234,8 @@ func TestNewBatchSpanProcessorWithEnvOptions(t *testing.T) { | ||||
| 			wantBatchCount: 1, | ||||
| 			genNumSpans:    2053, | ||||
| 			envs: map[string]string{ | ||||
| 				sdktrace.EnvBatchSpanProcessorMaxQueueSize:       "5000", | ||||
| 				sdktrace.EnvBatchSpanProcessorMaxExportBatchSize: "5000", | ||||
| 				env.BatchSpanProcessorMaxQueueSizeKey:       "5000", | ||||
| 				env.BatchSpanProcessorMaxExportBatchSizeKey: "5000", | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| @@ -243,8 +244,8 @@ func TestNewBatchSpanProcessorWithEnvOptions(t *testing.T) { | ||||
| 			wantBatchCount: 4, | ||||
| 			genNumSpans:    2053, | ||||
| 			envs: map[string]string{ | ||||
| 				sdktrace.EnvBatchSpanProcessorMaxQueueSize:       "5000", | ||||
| 				sdktrace.EnvBatchSpanProcessorMaxExportBatchSize: "10000", | ||||
| 				env.BatchSpanProcessorMaxQueueSizeKey:       "5000", | ||||
| 				env.BatchSpanProcessorMaxExportBatchSizeKey: "10000", | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| @@ -253,17 +254,17 @@ func TestNewBatchSpanProcessorWithEnvOptions(t *testing.T) { | ||||
| 			wantBatchCount: 42, | ||||
| 			genNumSpans:    2053, | ||||
| 			envs: map[string]string{ | ||||
| 				sdktrace.EnvBatchSpanProcessorMaxQueueSize:       "50", | ||||
| 				sdktrace.EnvBatchSpanProcessorMaxExportBatchSize: "10000", | ||||
| 				env.BatchSpanProcessorMaxQueueSizeKey:       "50", | ||||
| 				env.BatchSpanProcessorMaxExportBatchSizeKey: "10000", | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	envStore := ottest.NewEnvStore() | ||||
| 	envStore.Record(sdktrace.EnvBatchSpanProcessorScheduleDelay) | ||||
| 	envStore.Record(sdktrace.EnvBatchSpanProcessorExportTimeout) | ||||
| 	envStore.Record(sdktrace.EnvBatchSpanProcessorMaxQueueSize) | ||||
| 	envStore.Record(sdktrace.EnvBatchSpanProcessorMaxExportBatchSize) | ||||
| 	envStore.Record(env.BatchSpanProcessorScheduleDelayKey) | ||||
| 	envStore.Record(env.BatchSpanProcessorExportTimeoutKey) | ||||
| 	envStore.Record(env.BatchSpanProcessorMaxQueueSizeKey) | ||||
| 	envStore.Record(env.BatchSpanProcessorMaxExportBatchSizeKey) | ||||
|  | ||||
| 	defer func() { | ||||
| 		require.NoError(t, envStore.Restore()) | ||||
|   | ||||
| @@ -1,59 +0,0 @@ | ||||
| // Copyright The OpenTelemetry Authors | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package trace // import "go.opentelemetry.io/otel/sdk/trace" | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
| 	"strconv" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/internal/global" | ||||
| ) | ||||
|  | ||||
| // Environment variable names | ||||
| const ( | ||||
| 	// EnvBatchSpanProcessorScheduleDelay | ||||
| 	// Delay interval between two consecutive exports. | ||||
| 	// i.e. 5000 | ||||
| 	EnvBatchSpanProcessorScheduleDelay = "OTEL_BSP_SCHEDULE_DELAY" | ||||
| 	// EnvBatchSpanProcessorExportTimeout | ||||
| 	// Maximum allowed time to export data. | ||||
| 	// i.e. 3000 | ||||
| 	EnvBatchSpanProcessorExportTimeout = "OTEL_BSP_EXPORT_TIMEOUT" | ||||
| 	// EnvBatchSpanProcessorMaxQueueSize | ||||
| 	// Maximum queue size | ||||
| 	// i.e. 2048 | ||||
| 	EnvBatchSpanProcessorMaxQueueSize = "OTEL_BSP_MAX_QUEUE_SIZE" | ||||
| 	// EnvBatchSpanProcessorMaxExportBatchSize | ||||
| 	// Maximum batch size | ||||
| 	// Note: Must be less than or equal to EnvBatchSpanProcessorMaxQueueSize | ||||
| 	// i.e. 512 | ||||
| 	EnvBatchSpanProcessorMaxExportBatchSize = "OTEL_BSP_MAX_EXPORT_BATCH_SIZE" | ||||
| ) | ||||
|  | ||||
| // intEnvOr returns an env variable's numeric value if it is exists (and valid) or the default if not | ||||
| func intEnvOr(key string, defaultValue int) int { | ||||
| 	value, ok := os.LookupEnv(key) | ||||
| 	if !ok { | ||||
| 		return defaultValue | ||||
| 	} | ||||
|  | ||||
| 	intValue, err := strconv.Atoi(value) | ||||
| 	if err != nil { | ||||
| 		global.Info("Got invalid value, number value expected.", key, value) | ||||
| 		return defaultValue | ||||
| 	} | ||||
|  | ||||
| 	return intValue | ||||
| } | ||||
		Reference in New Issue
	
	Block a user