diff --git a/src/SDK/Common/Attribute/FilteredAttributesBuilder.php b/src/SDK/Common/Attribute/FilteredAttributesBuilder.php deleted file mode 100644 index 8d7c9c10e..000000000 --- a/src/SDK/Common/Attribute/FilteredAttributesBuilder.php +++ /dev/null @@ -1,77 +0,0 @@ - $rejectedKeys - */ - public function __construct( - private AttributesBuilderInterface $builder, - private readonly array $rejectedKeys, - ) { - } - - public function __clone() - { - $this->builder = clone $this->builder; - } - - public function build(): AttributesInterface - { - $attributes = $this->builder->build(); - $dropped = $attributes->getDroppedAttributesCount() + $this->rejected; - - return new Attributes($attributes->toArray(), $dropped); - } - - public function merge(AttributesInterface $old, AttributesInterface $updating): AttributesInterface - { - return $this->builder->merge($old, $updating); - } - - public function offsetExists($offset): bool - { - return $this->builder->offsetExists($offset); - } - - /** - * @phan-suppress PhanUndeclaredClassAttribute - */ - public function offsetGet(mixed $offset): mixed - { - return $this->builder->offsetGet($offset); - } - - /** - * @phan-suppress PhanUndeclaredClassAttribute - */ - public function offsetSet($offset, $value): void - { - if ($value !== null && in_array($offset, $this->rejectedKeys, true)) { - $this->rejected++; - - return; - } - - $this->builder->offsetSet($offset, $value); - } - - /** - * @phan-suppress PhanUndeclaredClassAttribute - */ - public function offsetUnset($offset): void - { - $this->builder->offsetUnset($offset); - } -} diff --git a/src/SDK/Common/Attribute/FilteredAttributesFactory.php b/src/SDK/Common/Attribute/FilteredAttributesFactory.php deleted file mode 100644 index d6ad75c6f..000000000 --- a/src/SDK/Common/Attribute/FilteredAttributesFactory.php +++ /dev/null @@ -1,30 +0,0 @@ - $rejectedKeys - */ - public function __construct( - private readonly AttributesFactoryInterface $factory, - private readonly array $rejectedKeys, - ) { - } - - public function builder(iterable $attributes = [], ?AttributeValidatorInterface $attributeValidator = null): AttributesBuilderInterface - { - $builder = new FilteredAttributesBuilder($this->factory->builder([], $attributeValidator), $this->rejectedKeys); - foreach ($attributes as $attribute => $value) { - $builder[$attribute] = $value; - } - - return $builder; - } -} diff --git a/src/SDK/Trace/SpanLimitsBuilder.php b/src/SDK/Trace/SpanLimitsBuilder.php index c8c8189f3..4d9e26e0c 100644 --- a/src/SDK/Trace/SpanLimitsBuilder.php +++ b/src/SDK/Trace/SpanLimitsBuilder.php @@ -5,10 +5,8 @@ namespace OpenTelemetry\SDK\Trace; use OpenTelemetry\SDK\Common\Attribute\Attributes; -use OpenTelemetry\SDK\Common\Attribute\FilteredAttributesFactory; use OpenTelemetry\SDK\Common\Configuration\Configuration; use OpenTelemetry\SDK\Common\Configuration\Variables as Env; -use OpenTelemetry\SemConv\TraceAttributes; use const PHP_INT_MAX; class SpanLimitsBuilder @@ -31,8 +29,6 @@ class SpanLimitsBuilder /** @var ?int Maximum allowed attribute per span link count */ private ?int $attributePerLinkCountLimit = null; - private bool $retainGeneralIdentityAttributes = false; - /** * @param int $attributeCountLimit Maximum allowed attribute count per record */ @@ -93,18 +89,6 @@ public function setAttributePerLinkCountLimit(int $attributePerLinkCountLimit): return $this; } - /** - * @param bool $retain whether general identity attributes should be retained - * - * @see https://github.com/open-telemetry/semantic-conventions/blob/main/docs/general/attributes.md#general-identity-attributes - */ - public function retainGeneralIdentityAttributes(bool $retain = true): SpanLimitsBuilder - { - $this->retainGeneralIdentityAttributes = $retain; - - return $this; - } - /** * @see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#span-limits * @phan-suppress PhanDeprecatedClassConstant @@ -128,17 +112,8 @@ public function build(): SpanLimits $attributeValueLengthLimit = null; } - $spanAttributesFactory = Attributes::factory($attributeCountLimit, $attributeValueLengthLimit); - - if (!$this->retainGeneralIdentityAttributes) { - $spanAttributesFactory = new FilteredAttributesFactory($spanAttributesFactory, [ - TraceAttributes::USER_ID, - TraceAttributes::USER_ROLES, - ]); - } - return new SpanLimits( - $spanAttributesFactory, + Attributes::factory($attributeCountLimit, $attributeValueLengthLimit), Attributes::factory($attributePerEventCountLimit, $attributeValueLengthLimit), Attributes::factory($attributePerLinkCountLimit, $attributeValueLengthLimit), $eventCountLimit, diff --git a/tests/Integration/SDK/SpanLimitsBuilderTest.php b/tests/Integration/SDK/SpanLimitsBuilderTest.php index eb0e82855..dbdf8fa83 100644 --- a/tests/Integration/SDK/SpanLimitsBuilderTest.php +++ b/tests/Integration/SDK/SpanLimitsBuilderTest.php @@ -21,7 +21,6 @@ public function test_span_length_limits_builder_uses_environment_variable(): voi { $this->setEnvironmentVariable('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT', 9); $builder = new SpanLimitsBuilder(); - $builder->retainGeneralIdentityAttributes(); $spanLimits = $builder->build(); $this->assertEquals(Attributes::factory(128, 9), $spanLimits->getAttributesFactory()); } @@ -31,7 +30,6 @@ public function test_span_length_limits_builder_uses_configured_value(): void { $this->setEnvironmentVariable('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT', 9); $builder = new SpanLimitsBuilder(); - $builder->retainGeneralIdentityAttributes(); $builder->setAttributeValueLengthLimit(201); $spanLimits = $builder->build(); $this->assertEquals(Attributes::factory(128, 201), $spanLimits->getAttributesFactory()); diff --git a/tests/Integration/SDK/TracerTest.php b/tests/Integration/SDK/TracerTest.php index b2f172cf2..d72d988d2 100644 --- a/tests/Integration/SDK/TracerTest.php +++ b/tests/Integration/SDK/TracerTest.php @@ -4,26 +4,20 @@ namespace OpenTelemetry\Tests\Integration\SDK; -use OpenTelemetry\API\Behavior\Internal\Logging; use OpenTelemetry\API\Trace as API; use OpenTelemetry\API\Trace\NonRecordingSpan; use OpenTelemetry\API\Trace\SpanContext; use OpenTelemetry\API\Trace\TraceState; use OpenTelemetry\Context\Context; -use OpenTelemetry\SDK\Common\Attribute\AttributesInterface; use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Trace\Sampler\AlwaysOffSampler; use OpenTelemetry\SDK\Trace\SamplerInterface; use OpenTelemetry\SDK\Trace\SamplingResult; use OpenTelemetry\SDK\Trace\Span; use OpenTelemetry\SDK\Trace\SpanBuilder; -use OpenTelemetry\SDK\Trace\SpanExporter\InMemoryExporter; -use OpenTelemetry\SDK\Trace\SpanLimitsBuilder; -use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor; use OpenTelemetry\SDK\Trace\SpanProcessorInterface; use OpenTelemetry\SDK\Trace\TracerProvider; use OpenTelemetry\SDK\Trace\TracerProviderFactory; -use OpenTelemetry\SemConv\TraceAttributes; use OpenTelemetry\Tests\TestState; use PHPUnit\Framework\Attributes\CoversNothing; use PHPUnit\Framework\Attributes\Group; @@ -111,47 +105,4 @@ public function test_factory_returns_noop_tracer_when_sdk_disabled(): void $tracer = $tracerProvider->getTracer('foo'); $this->assertInstanceOf(API\NoopTracer::class, $tracer); } - - public function test_general_identity_attributes_are_dropped_by_default(): void - { - Logging::disable(); - $exporter = new InMemoryExporter(); - $tracerProvider = new TracerProvider(new SimpleSpanProcessor($exporter)); - $tracer = $tracerProvider->getTracer('test'); - $tracer->spanBuilder('test') - ->setAttribute(TraceAttributes::USER_ID, 'username') - ->setAttribute(TraceAttributes::USER_ROLES, 'admin') - ->startSpan() - ->end(); - - $tracerProvider->shutdown(); - - /** @var AttributesInterface $attributes */ - $attributes = $exporter->getSpans()[0]->getAttributes(); - $this->assertCount(0, $attributes); - $this->assertSame(2, $attributes->getDroppedAttributesCount()); - } - - public function test_general_identity_attributes_are_retained_if_enabled(): void - { - $exporter = new InMemoryExporter(); - $spanLimits = (new SpanLimitsBuilder()) - ->retainGeneralIdentityAttributes() - ->build(); - $tracerProvider = new TracerProvider(new SimpleSpanProcessor($exporter), null, null, $spanLimits); - $tracer = $tracerProvider->getTracer('test'); - $tracer->spanBuilder('test') - ->setAttribute(TraceAttributes::ENDUSER_ID, 'username') - ->setAttribute(TraceAttributes::ENDUSER_ROLE, 'admin') - ->setAttribute(TraceAttributes::ENDUSER_SCOPE, 'read:message, write:files') - ->startSpan() - ->end(); - - $tracerProvider->shutdown(); - - /** @var AttributesInterface $attributes */ - $attributes = $exporter->getSpans()[0]->getAttributes(); - $this->assertCount(3, $attributes); - $this->assertSame(0, $attributes->getDroppedAttributesCount()); - } } diff --git a/tests/Unit/SDK/Common/Attribute/FilteredAttributesTest.php b/tests/Unit/SDK/Common/Attribute/FilteredAttributesTest.php deleted file mode 100644 index fb5902a20..000000000 --- a/tests/Unit/SDK/Common/Attribute/FilteredAttributesTest.php +++ /dev/null @@ -1,45 +0,0 @@ -builder([ - 'foo' => 'foo', - 'bar' => 'bar', - 'baz' => 'baz', - ]); - - $attributes = $attributesBuilder->build(); - $this->assertCount(2, $attributes); - $this->assertSame(1, $attributes->getDroppedAttributesCount()); - $this->assertTrue($attributes->has('foo')); - $this->assertFalse($attributes->has('bar')); - $this->assertTrue($attributes->has('baz')); - } - - public function test_rejected_key_null_value_does_not_increase_dropped_count(): void - { - $attributesFactory = new FilteredAttributesFactory(Attributes::factory(), ['bar']); - $attributesBuilder = $attributesFactory->builder([ - 'bar' => null, - ]); - - $attributes = $attributesBuilder->build(); - $this->assertCount(0, $attributes); - $this->assertSame(0, $attributes->getDroppedAttributesCount()); - } -} diff --git a/tests/Unit/SDK/Trace/SpanLimitsBuilderTest.php b/tests/Unit/SDK/Trace/SpanLimitsBuilderTest.php index f3ab540e5..fcaea3808 100644 --- a/tests/Unit/SDK/Trace/SpanLimitsBuilderTest.php +++ b/tests/Unit/SDK/Trace/SpanLimitsBuilderTest.php @@ -20,7 +20,6 @@ class SpanLimitsBuilderTest extends TestCase public function test_span_limits_builder_uses_default_values(): void { $builder = new SpanLimitsBuilder(); - $builder->retainGeneralIdentityAttributes(); $spanLimits = $builder->build(); $this->assertEquals(Attributes::factory(128), $spanLimits->getAttributesFactory()); } @@ -30,7 +29,6 @@ public function test_span_limits_builder_uses_environment_variable(): void { $this->setEnvironmentVariable('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT', 111); $builder = new SpanLimitsBuilder(); - $builder->retainGeneralIdentityAttributes(); $spanLimits = $builder->build(); $this->assertEquals(Attributes::factory(111), $spanLimits->getAttributesFactory()); } @@ -40,7 +38,6 @@ public function test_span_limits_builder_uses_configured_value(): void { $this->setEnvironmentVariable('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT', 111); $builder = new SpanLimitsBuilder(); - $builder->retainGeneralIdentityAttributes(); $builder->setAttributeCountLimit(222); $spanLimits = $builder->build(); $this->assertEquals(Attributes::factory(222), $spanLimits->getAttributesFactory());