Skip to content

Commit 1ca6e33

Browse files
committed
Refactor background logic
1 parent be70b66 commit 1ca6e33

File tree

3 files changed

+55
-4
lines changed

3 files changed

+55
-4
lines changed

src/Bridge/RequestSpanListener.php

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Jaeger\Http\HttpMethodTag;
88
use Jaeger\Http\HttpUriTag;
99
use Jaeger\Symfony\Name\Generator\NameGeneratorInterface;
10+
use Jaeger\Symfony\Tag\SymfonyBackgroundTag;
1011
use Jaeger\Symfony\Tag\SymfonyComponentTag;
1112
use Jaeger\Symfony\Tag\SymfonyVersionTag;
1213
use Jaeger\Symfony\Tag\TimeMicroTag;
@@ -17,6 +18,7 @@
1718
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
1819
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
1920
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
21+
use Symfony\Component\HttpKernel\Event\PostResponseEvent;
2022
use Symfony\Component\HttpKernel\HttpKernelInterface;
2123
use Symfony\Component\HttpKernel\KernelEvents;
2224

@@ -39,23 +41,58 @@ public static function getSubscribedEvents()
3941
{
4042
return [
4143
KernelEvents::REQUEST => ['onRequest', 29],
42-
KernelEvents::RESPONSE => ['onResponse'],
44+
KernelEvents::RESPONSE => ['onResponse', -1024],
45+
KernelEvents::TERMINATE => ['onTerminate', -1024],
4346
];
4447
}
4548

46-
public function onResponse(FilterResponseEvent $event)
49+
public function onTerminate(PostResponseEvent $event)
4750
{
4851
if ($this->spans->isEmpty()) {
4952
return $this;
5053
}
5154

55+
if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
56+
return $this;
57+
}
58+
5259
$this->tracer->finish(
5360
$this->spans->pop()->addTag(new HttpCodeTag($event->getResponse()->getStatusCode()))
5461
);
5562

5663
return $this;
5764
}
5865

66+
public function onResponse(FilterResponseEvent $event)
67+
{
68+
if ($this->spans->isEmpty()) {
69+
return $this;
70+
}
71+
72+
if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
73+
$this->tracer->finish(
74+
$this->spans->pop()->addTag(new HttpCodeTag($event->getResponse()->getStatusCode()))
75+
);
76+
77+
return $this;
78+
}
79+
80+
$request = $event->getRequest();
81+
$this->tracer->start(
82+
$this->nameGenerator->generate() . ':background',
83+
[
84+
new HttpMethodTag($request->getMethod()),
85+
new HttpUriTag($request->getRequestUri()),
86+
new SpanKindServerTag(),
87+
new SymfonyComponentTag(),
88+
new SymfonyVersionTag(),
89+
new SymfonyBackgroundTag(),
90+
]
91+
);
92+
93+
return $this;
94+
}
95+
5996
public function onRequest(GetResponseEvent $event)
6097
{
6198
$request = $event->getRequest();

src/Bridge/TracerBridge.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public function __construct(FlushableInterface $tracer)
2020
public static function getSubscribedEvents()
2121
{
2222
return [
23-
ConsoleEvents::TERMINATE => ['onTerminate'],
24-
KernelEvents::TERMINATE => ['onTerminate'],
23+
ConsoleEvents::TERMINATE => ['onTerminate', -65536],
24+
KernelEvents::TERMINATE => ['onTerminate', -65536],
2525
];
2626
}
2727

src/Tag/SymfonyBackgroundTag.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Jaeger\Symfony\Tag;
5+
6+
use Jaeger\Tag\BoolTag;
7+
8+
class SymfonyBackgroundTag extends BoolTag
9+
{
10+
public function __construct()
11+
{
12+
parent::__construct('symfony.background', true);
13+
}
14+
}

0 commit comments

Comments
 (0)