7
7
use Jaeger \Http \HttpMethodTag ;
8
8
use Jaeger \Http \HttpUriTag ;
9
9
use Jaeger \Symfony \Name \Generator \NameGeneratorInterface ;
10
+ use Jaeger \Symfony \Tag \SymfonyBackgroundTag ;
10
11
use Jaeger \Symfony \Tag \SymfonyComponentTag ;
11
12
use Jaeger \Symfony \Tag \SymfonyVersionTag ;
12
13
use Jaeger \Symfony \Tag \TimeMicroTag ;
17
18
use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
18
19
use Symfony \Component \HttpKernel \Event \FilterResponseEvent ;
19
20
use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
21
+ use Symfony \Component \HttpKernel \Event \PostResponseEvent ;
20
22
use Symfony \Component \HttpKernel \HttpKernelInterface ;
21
23
use Symfony \Component \HttpKernel \KernelEvents ;
22
24
@@ -39,23 +41,58 @@ public static function getSubscribedEvents()
39
41
{
40
42
return [
41
43
KernelEvents::REQUEST => ['onRequest ' , 29 ],
42
- KernelEvents::RESPONSE => ['onResponse ' ],
44
+ KernelEvents::RESPONSE => ['onResponse ' , -1024 ],
45
+ KernelEvents::TERMINATE => ['onTerminate ' , -1024 ],
43
46
];
44
47
}
45
48
46
- public function onResponse ( FilterResponseEvent $ event )
49
+ public function onTerminate ( PostResponseEvent $ event )
47
50
{
48
51
if ($ this ->spans ->isEmpty ()) {
49
52
return $ this ;
50
53
}
51
54
55
+ if (HttpKernelInterface::MASTER_REQUEST !== $ event ->getRequestType ()) {
56
+ return $ this ;
57
+ }
58
+
52
59
$ this ->tracer ->finish (
53
60
$ this ->spans ->pop ()->addTag (new HttpCodeTag ($ event ->getResponse ()->getStatusCode ()))
54
61
);
55
62
56
63
return $ this ;
57
64
}
58
65
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
+
59
96
public function onRequest (GetResponseEvent $ event )
60
97
{
61
98
$ request = $ event ->getRequest ();
0 commit comments