• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FriendsOfOpenTelemetry / opentelemetry-bundle / 14439177352

14 Apr 2025 06:42AM UTC coverage: 91.677% (+0.2%) from 91.476%
14439177352

push

github

web-flow
fix(Instrumentation/Messenger): remove TraceableStamp usage from TraceableMiddleware and TraceableStack (#165)

* fix(Instrumentation/Messenger): remove TraceableStamp usage from TraceableMiddleware and TraceableStack

* chore: format

* test(Instrumentation): remove messenger doctrine transport test

26 of 27 new or added lines in 2 files covered. (96.3%)

3 existing lines in 3 files now uncovered.

2247 of 2451 relevant lines covered (91.68%)

37.94 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.91
/src/Instrumentation/Symfony/Messenger/TraceableMessengerStack.php
1
<?php
2

3
namespace FriendsOfOpenTelemetry\OpenTelemetryBundle\Instrumentation\Symfony\Messenger;
4

5
use OpenTelemetry\API\Trace\SpanKind;
6
use OpenTelemetry\API\Trace\StatusCode;
7
use OpenTelemetry\API\Trace\TracerInterface;
8
use OpenTelemetry\Context\Context;
9
use OpenTelemetry\SDK\Trace\Span;
10
use Psr\Log\LoggerInterface;
11
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
12
use Symfony\Component\Messenger\Middleware\StackInterface;
13

14
class TraceableMessengerStack implements StackInterface
15
{
16
    private ?string $currentEvent = null;
17

18
    public function __construct(
19
        private TracerInterface $tracer,
20
        private StackInterface $stack,
21
        private string $busName,
22
        private string $eventCategory,
23
        private ?LoggerInterface $logger = null,
24
    ) {
25
    }
12✔
26

27
    public function next(): MiddlewareInterface
28
    {
29
        $scope = Context::storage()->scope();
12✔
30
        if (null !== $scope) {
12✔
31
            $this->logger?->debug(sprintf('Using scope "%s"', spl_object_id($scope)));
12✔
32
        } else {
33
            $this->logger?->debug('No active scope');
3✔
34
        }
35

36
        /*        if (null !== $scope) {
37
                    $span = Span::fromContext($scope->context());
38

39
                    if ($span->isRecording()) {
40
                        $scope->detach();
41

42
                        $span->setStatus(StatusCode::STATUS_OK);
43
                        $this->logger?->debug(sprintf('Ending span "%s"', $span->getContext()->getSpanId()));
44
                        $span->end();
45
                    }
46
                }*/
47

48
        $spanBuilder = $this->tracer
12✔
49
            ->spanBuilder('messenger.middleware')
12✔
50
            ->setSpanKind(SpanKind::KIND_INTERNAL)
12✔
51
            ->setParent($scope?->context())
12✔
52
            ->setAttribute('event.category', $this->eventCategory)
12✔
53
            ->setAttribute('bus.name', $this->busName)
12✔
54
        ;
12✔
55

56
        $parent = Context::getCurrent();
12✔
57

58
        $span = $spanBuilder->setParent($parent)->startSpan();
12✔
59

60
        $this->logger?->debug(sprintf('Starting span "%s"', $span->getContext()->getSpanId()));
12✔
61

62
        if ($this->stack === $nextMiddleware = $this->stack->next()) {
12✔
63
            $this->currentEvent = 'Tail';
×
64
        } else {
65
            $this->currentEvent = sprintf('"%s"', get_debug_type($nextMiddleware));
12✔
66
        }
67
        $this->currentEvent .= sprintf(' on "%s"', $this->busName);
12✔
68

69
        $span->setAttribute('event.current', $this->currentEvent);
12✔
70

71
        $context = $span->storeInContext($parent);
12✔
72
        Context::storage()->attach($context);
12✔
73

74
        return $nextMiddleware;
12✔
75
    }
76

77
    public function stop(): void
78
    {
79
        $scope = Context::storage()->scope();
12✔
80
        if (null === $scope) {
12✔
NEW
81
            return;
×
82
        }
83

84
        $scope->detach();
12✔
85

86
        $span = Span::fromContext($scope->context());
12✔
87
        $span->setStatus(StatusCode::STATUS_OK);
12✔
88
        $this->logger?->debug(sprintf('Ending span "%s"', $span->getContext()->getSpanId()));
12✔
89
        $span->end();
12✔
90
        $this->currentEvent = null;
12✔
91
    }
92

93
    public function __clone()
94
    {
95
        $this->stack = clone $this->stack;
×
96
    }
97
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc