diff --git a/src/sentry/src/Tracing/Aspect/CoroutineAspect.php b/src/sentry/src/Tracing/Aspect/CoroutineAspect.php index 5abee47db..0b638e2f3 100644 --- a/src/sentry/src/Tracing/Aspect/CoroutineAspect.php +++ b/src/sentry/src/Tracing/Aspect/CoroutineAspect.php @@ -112,12 +112,7 @@ public function process(ProceedingJoinPoint $proceedingJoinPoint) try { $callable(); } catch (Throwable $exception) { - $coTransaction->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + $coTransaction->setStatus(SpanStatus::internalError()); throw $exception; } diff --git a/src/sentry/src/Tracing/Aspect/GuzzleHttpClientAspect.php b/src/sentry/src/Tracing/Aspect/GuzzleHttpClientAspect.php index 21fa59dbb..cb82f9a47 100644 --- a/src/sentry/src/Tracing/Aspect/GuzzleHttpClientAspect.php +++ b/src/sentry/src/Tracing/Aspect/GuzzleHttpClientAspect.php @@ -11,12 +11,10 @@ namespace FriendsOfHyperf\Sentry\Tracing\Aspect; -use Error; use FriendsOfHyperf\Sentry\Feature; use GuzzleHttp\Client; use GuzzleHttp\TransferStats; use Hyperf\Context\Context; -use Hyperf\Coroutine\Coroutine; use Hyperf\Di\Aop\AbstractAspect; use Hyperf\Di\Aop\ProceedingJoinPoint; use Psr\Container\ContainerInterface; @@ -24,7 +22,6 @@ use Sentry\State\Scope; use Sentry\Tracing\SpanContext; use Sentry\Tracing\SpanStatus; -use Throwable; use function FriendsOfHyperf\Sentry\trace; @@ -136,32 +133,17 @@ function (Scope $scope) use ($proceedingJoinPoint, $options, $guzzleConfig) { ]); $body->seek($pos); } else { - $span->setData(['http.response.body.contents' => '[binary omitted]']); + $span->setData([ + 'http.response.body.contents' => '[binary omitted]', + ]); } } - $span->setStatus( - SpanStatus::createFromHttpStatusCode($response->getStatusCode()) - ); - - if ($response->getStatusCode() >= 400 && $response->getStatusCode() < 600) { - $span->setTags([ - 'error' => 'true', - 'http.response.reason' => $response->getReasonPhrase(), - ]); - } + $span->setHttpStatus($response->getStatusCode()); } if ($stats->getHandlerErrorData()) { - $exception = $stats->getHandlerErrorData() instanceof Throwable - ? $stats->getHandlerErrorData() - : new Error(); - $span->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + $span->setStatus(SpanStatus::internalError()); } if (is_callable($onStats)) { @@ -175,7 +157,6 @@ function (Scope $scope) use ($proceedingJoinPoint, $options, $guzzleConfig) { ->setOp('http.client') ->setDescription($request->getMethod() . ' ' . (string) $request->getUri()) ->setOrigin('auto.http.client') - ->setData(['coroutine.id' => Coroutine::id()]) ); } } diff --git a/src/sentry/src/Tracing/Listener/EventHandleListener.php b/src/sentry/src/Tracing/Listener/EventHandleListener.php index 4868be093..4bea5f9f5 100644 --- a/src/sentry/src/Tracing/Listener/EventHandleListener.php +++ b/src/sentry/src/Tracing/Listener/EventHandleListener.php @@ -351,23 +351,17 @@ protected function handleRequestHandled(HttpEvent\RequestHandled|RpcEvent\Reques } $traceId = (string) $span->getTraceId(); + if ($event instanceof RpcEvent\RequestHandled && $this->container->has(RpcContext::class)) { $this->container->get(RpcContext::class)->set('sentry-trace-id', $traceId); } elseif ($event->response instanceof ResponsePlusInterface) { $event->response->setHeader('sentry-trace-id', $traceId); } - $span->setStatus( - SpanStatus::createFromHttpStatusCode($event->response->getStatusCode()) - ); + $span->setHttpStatus($event->response->getStatusCode()); - if ($exception = $event->getThrowable()) { - $span->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + if (method_exists($event, 'getThrowable') && $event->getThrowable()) { + $span->setStatus(SpanStatus::internalError()); } } @@ -422,13 +416,8 @@ protected function handleCommandFinished(CommandEvent\AfterExecute $event): void 'command.exit_code' => (string) $exitCode, ]); - if (method_exists($event, 'getThrowable') && $exception = $event->getThrowable()) { - $transaction->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + if ($event->getThrowable()) { + $transaction->setStatus(SpanStatus::internalError()); } $transaction->setStatus( @@ -463,13 +452,8 @@ function (Scope $scope) use ($event) { $span->setData(['db.redis.result' => $event->result]); } - if ($exception = $event->throwable) { - $span->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + if ($event->throwable) { + $span->setStatus(SpanStatus::internalError()); } }, SpanContext::make() @@ -537,13 +521,8 @@ protected function handleCrontabTaskFinished(CrontabEvent\FailToExecute|CrontabE return; } - if (method_exists($event, 'getThrowable') && $exception = $event->getThrowable()) { - $transaction->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + if ($event instanceof CrontabEvent\FailToExecute) { + $transaction->setStatus(SpanStatus::internalError()); } } @@ -614,13 +593,8 @@ protected function handleAmqpMessageProcessed(AmqpEvent\AfterConsume|AmqpEvent\F 'messaging.amqp.message.result' => $event instanceof AmqpEvent\AfterConsume ? $event->getResult()->value : 'fail', ]); - if (method_exists($event, 'getThrowable') && $exception = $event->getThrowable()) { - $transaction->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + if ($event instanceof AmqpEvent\FailToConsume) { + $transaction->setStatus(SpanStatus::internalError()); } } @@ -683,13 +657,8 @@ protected function handleKafkaMessageProcessed(KafkaEvent\AfterConsume|KafkaEven return; } - if (method_exists($event, 'getThrowable') && $exception = $event->getThrowable()) { - $transaction->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + if ($event instanceof KafkaEvent\FailToConsume) { + $transaction->setStatus(SpanStatus::internalError()); } } @@ -739,13 +708,8 @@ protected function handleAsyncQueueJobProcessed(AsyncQueueEvent\AfterHandle|Asyn return; } - if (method_exists($event, 'getThrowable') && $exception = $event->getThrowable()) { - $transaction->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); + if ($event instanceof AsyncQueueEvent\FailedHandle) { + $transaction->setStatus(SpanStatus::internalError()); } } diff --git a/src/sentry/src/Tracing/Tracer.php b/src/sentry/src/Tracing/Tracer.php index 8a21bb076..09da7e05f 100644 --- a/src/sentry/src/Tracing/Tracer.php +++ b/src/sentry/src/Tracing/Tracer.php @@ -84,15 +84,7 @@ function (Scope $scope) use ($trace) { try { return $trace($scope); } catch (Throwable $exception) { - $span = $scope->getSpan(); - if ($span !== null) { - $span->setStatus(SpanStatus::internalError()) - ->setTags([ - 'error' => 'true', - 'exception.class' => $exception::class, - 'exception.code' => (string) $exception->getCode(), - ]); - } + $scope->getSpan()?->setStatus(SpanStatus::internalError()); throw $exception; } },