77use Jaeger \Http \HttpMethodTag ;
88use Jaeger \Http \HttpUriTag ;
99use Jaeger \Symfony \Name \Generator \NameGeneratorInterface ;
10+ use Jaeger \Symfony \Tag \SymfonyBackgroundTag ;
1011use Jaeger \Symfony \Tag \SymfonyComponentTag ;
1112use Jaeger \Symfony \Tag \SymfonyVersionTag ;
1213use Jaeger \Symfony \Tag \TimeMicroTag ;
1718use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
1819use Symfony \Component \HttpKernel \Event \FilterResponseEvent ;
1920use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
21+ use Symfony \Component \HttpKernel \Event \PostResponseEvent ;
2022use Symfony \Component \HttpKernel \HttpKernelInterface ;
2123use 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 ();
0 commit comments