From bcf55dff00d27112ac17343d4af42481a409f367 Mon Sep 17 00:00:00 2001 From: Eunbin Son Date: Tue, 13 Oct 2026 12:48:04 +0900 Subject: [PATCH] Treat declarative config max_request_size of 0 as no limit in OTLP exporters --- .../otlp/internal/OtlpDeclarativeConfigUtil.java | 3 ++- .../LogRecordExporterFactoryTest.java | 16 ++++++++++++++++ .../MetricExporterFactoryTest.java | 16 ++++++++++++++++ .../SpanExporterFactoryTest.java | 14 ++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java index b91bfebbbc6..8af456dc7c7 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java @@ -111,7 +111,8 @@ public static void configureOtlpExporterBuilder( Integer maxRequestSize = config.getInt("max_request_size"); if (maxRequestSize != null) { - setMaxRequestSize.accept(maxRequestSize.longValue()); + // The declarative config schema defines 0 as no limit + setMaxRequestSize.accept(maxRequestSize == 0 ? Long.MAX_VALUE : maxRequestSize.longValue()); } DeclarativeConfigProperties tls = diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java index fe80bc26e83..15190b2bdde 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java @@ -124,6 +124,14 @@ Stream createTestCases() { .setMaxRequestBodySize(1234) .setComponentLoader(context) .build()), + Arguments.argumentSet( + "otlp_http max_request_size 0", + new LogRecordExporterModel() + .setOtlpHttp(new OtlpHttpExporterModel().setMaxRequestSize(0)), + OtlpHttpLogRecordExporter.getDefault().toBuilder() + .setMaxRequestBodySize(Long.MAX_VALUE) + .setComponentLoader(context) + .build()), Arguments.argumentSet( "otlp_grpc default", new LogRecordExporterModel().setOtlpGrpc(new OtlpGrpcExporterModel()), @@ -155,6 +163,14 @@ Stream createTestCases() { .setMaxRequestMessageSize(1234) .setComponentLoader(context) .build()), + Arguments.argumentSet( + "otlp_grpc max_request_size 0", + new LogRecordExporterModel() + .setOtlpGrpc(new OtlpGrpcExporterModel().setMaxRequestSize(0)), + OtlpGrpcLogRecordExporter.getDefault().toBuilder() + .setMaxRequestMessageSize(Long.MAX_VALUE) + .setComponentLoader(context) + .build()), Arguments.argumentSet( "otlp_file/development", LogRecordExporterModelAccessor.setOtlpFile( diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java index f229ab8e60b..39d4332d116 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java @@ -140,6 +140,14 @@ Stream createTestCases() { Aggregation.base2ExponentialBucketHistogram())) .setComponentLoader(context) .build()), + Arguments.argumentSet( + "otlp_http max_request_size 0", + new PushMetricExporterModel() + .setOtlpHttp(new OtlpHttpMetricExporterModel().setMaxRequestSize(0)), + OtlpHttpMetricExporter.getDefault().toBuilder() + .setMaxRequestBodySize(Long.MAX_VALUE) + .setComponentLoader(context) + .build()), Arguments.argumentSet( "otlp_grpc default", new PushMetricExporterModel().setOtlpGrpc(new OtlpGrpcMetricExporterModel()), @@ -181,6 +189,14 @@ Stream createTestCases() { Aggregation.base2ExponentialBucketHistogram())) .setComponentLoader(context) .build()), + Arguments.argumentSet( + "otlp_grpc max_request_size 0", + new PushMetricExporterModel() + .setOtlpGrpc(new OtlpGrpcMetricExporterModel().setMaxRequestSize(0)), + OtlpGrpcMetricExporter.getDefault().toBuilder() + .setMaxRequestMessageSize(Long.MAX_VALUE) + .setComponentLoader(context) + .build()), Arguments.argumentSet( "console", new PushMetricExporterModel().setConsole(new ConsoleMetricExporterModel()), diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java index 4e6a6cead30..684a719d0dc 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java @@ -127,6 +127,13 @@ Stream createTestCases() { .setMaxRequestBodySize(1234) .setComponentLoader(context) .build()), + Arguments.argumentSet( + "otlp_http max_request_size 0", + new SpanExporterModel().setOtlpHttp(new OtlpHttpExporterModel().setMaxRequestSize(0)), + OtlpHttpSpanExporter.getDefault().toBuilder() + .setMaxRequestBodySize(Long.MAX_VALUE) + .setComponentLoader(context) + .build()), Arguments.argumentSet( "otlp_grpc default", new SpanExporterModel().setOtlpGrpc(new OtlpGrpcExporterModel()), @@ -158,6 +165,13 @@ Stream createTestCases() { .setMaxRequestMessageSize(1234) .setComponentLoader(context) .build()), + Arguments.argumentSet( + "otlp_grpc max_request_size 0", + new SpanExporterModel().setOtlpGrpc(new OtlpGrpcExporterModel().setMaxRequestSize(0)), + OtlpGrpcSpanExporter.getDefault().toBuilder() + .setMaxRequestMessageSize(Long.MAX_VALUE) + .setComponentLoader(context) + .build()), Arguments.argumentSet( "console", new SpanExporterModel().setConsole(new ConsoleExporterModel()),