From 8316c50e9371a94908b77a0deb7bc8277f835f87 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Mon, 10 Feb 2025 09:37:38 +1100 Subject: [PATCH] use a local const for grpc time conversions (#1505) using a newly-added const in ClockInterface breaks things for some older PHP versions, so lets use a local const for now --- src/Contrib/Grpc/GrpcTransport.php | 6 +++--- src/Contrib/Grpc/GrpcTransportFactory.php | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Contrib/Grpc/GrpcTransport.php b/src/Contrib/Grpc/GrpcTransport.php index babc1ab16..b245ad4ea 100644 --- a/src/Contrib/Grpc/GrpcTransport.php +++ b/src/Contrib/Grpc/GrpcTransport.php @@ -18,7 +18,6 @@ use const Grpc\OP_SEND_MESSAGE; use const Grpc\STATUS_OK; use Grpc\Timeval; -use OpenTelemetry\API\Common\Time\ClockInterface; use OpenTelemetry\Contrib\Otlp\ContentTypes; use OpenTelemetry\SDK\Common\Export\TransportInterface; use OpenTelemetry\SDK\Common\Future\CancellationInterface; @@ -36,10 +35,11 @@ */ final class GrpcTransport implements TransportInterface { + private const MICROS_PER_MILLISECOND = 1_000; private readonly array $metadata; private readonly Channel $channel; private bool $closed = false; - private Timeval $exportTimeout; + private readonly Timeval $exportTimeout; public function __construct( string $endpoint, @@ -50,7 +50,7 @@ public function __construct( ) { $this->channel = new Channel($endpoint, $opts); $this->metadata = $this->formatMetadata(array_change_key_case($headers)); - $this->exportTimeout = new Timeval($timeoutMillis * ClockInterface::MICROS_PER_MILLISECOND); + $this->exportTimeout = new Timeval($timeoutMillis * self::MICROS_PER_MILLISECOND); } public function contentType(): string diff --git a/src/Contrib/Grpc/GrpcTransportFactory.php b/src/Contrib/Grpc/GrpcTransportFactory.php index 3317e5d33..be35f13bb 100644 --- a/src/Contrib/Grpc/GrpcTransportFactory.php +++ b/src/Contrib/Grpc/GrpcTransportFactory.php @@ -12,7 +12,6 @@ use InvalidArgumentException; use function json_encode; use OpenTelemetry\API\Behavior\LogsMessagesTrait; -use OpenTelemetry\API\Common\Time\ClockInterface; use OpenTelemetry\Contrib\Otlp\ContentTypes; use OpenTelemetry\SDK\Common\Export\TransportFactoryInterface; use OpenTelemetry\SDK\Common\Export\TransportInterface; @@ -25,6 +24,8 @@ final class GrpcTransportFactory implements TransportFactoryInterface { use LogsMessagesTrait; + private const MILLIS_PER_SECOND = 1_000; + /** * @psalm-param "application/x-protobuf" $contentType * @psalm-return TransportInterface<"application/x-protobuf"> @@ -82,7 +83,7 @@ public function create( $opts, $method, $headers, - (int) ($timeout * ClockInterface::MILLIS_PER_SECOND), + (int) ($timeout * self::MILLIS_PER_SECOND), ); } @@ -119,8 +120,8 @@ private static function createOpts( ], 'retryPolicy' => [ 'maxAttempts' => $maxRetries, - 'initialBackoff' => sprintf('%0.3fs', $retryDelay / ClockInterface::MILLIS_PER_SECOND), - 'maxBackoff' => sprintf('%0.3fs', ($retryDelay << $maxRetries - 1) / ClockInterface::MILLIS_PER_SECOND), + 'initialBackoff' => sprintf('%0.3fs', $retryDelay / self::MILLIS_PER_SECOND), + 'maxBackoff' => sprintf('%0.3fs', ($retryDelay << $maxRetries - 1) / self::MILLIS_PER_SECOND), 'backoffMultiplier' => 2, 'retryableStatusCodes' => [ // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md#otlpgrpc-response