55use Jaeger \Http \HttpMethodTag ;
66use Jaeger \Http \HttpUriTag ;
77use Jaeger \Symfony \Name \Generator \NameGeneratorInterface ;
8+ use Jaeger \Symfony \Tag \SymfonyBackgroundTag ;
89use Jaeger \Symfony \Tag \SymfonyComponentTag ;
910use Jaeger \Symfony \Tag \SymfonyVersionTag ;
1011use Jaeger \Symfony \Tag \TimeMicroTag ;
1516use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
1617use Symfony \Component \HttpKernel \Event \FilterResponseEvent ;
1718use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
19+ use Symfony \Component \HttpKernel \Event \PostResponseEvent ;
1820use Symfony \Component \HttpKernel \HttpKernelInterface ;
1921use Symfony \Component \HttpKernel \KernelEvents ;
2022
@@ -37,23 +39,58 @@ public static function getSubscribedEvents()
3739 {
3840 return [
3941 KernelEvents::REQUEST => ['onRequest ' , 29 ],
40- KernelEvents::RESPONSE => ['onResponse ' ],
42+ KernelEvents::RESPONSE => ['onResponse ' , -1024 ],
43+ KernelEvents::TERMINATE => ['onTerminate ' , -1024 ],
4144 ];
4245 }
4346
44- public function onResponse ( FilterResponseEvent $ event )
47+ public function onTerminate ( PostResponseEvent $ event )
4548 {
4649 if ($ this ->spans ->isEmpty ()) {
4750 return $ this ;
4851 }
4952
53+ if (HttpKernelInterface::MASTER_REQUEST !== $ event ->getRequestType ()) {
54+ return $ this ;
55+ }
56+
5057 $ this ->tracer ->finish (
5158 $ this ->spans ->pop ()->addTag (new HttpCodeTag ($ event ->getResponse ()->getStatusCode ()))
5259 );
5360
5461 return $ this ;
5562 }
5663
64+ public function onResponse (FilterResponseEvent $ event )
65+ {
66+ if ($ this ->spans ->isEmpty ()) {
67+ return $ this ;
68+ }
69+
70+ if (HttpKernelInterface::MASTER_REQUEST !== $ event ->getRequestType ()) {
71+ $ this ->tracer ->finish (
72+ $ this ->spans ->pop ()->addTag (new HttpCodeTag ($ event ->getResponse ()->getStatusCode ()))
73+ );
74+
75+ return $ this ;
76+ }
77+
78+ $ request = $ event ->getRequest ();
79+ $ this ->tracer ->start (
80+ $ this ->nameGenerator ->generate () . ':background ' ,
81+ [
82+ new HttpMethodTag ($ request ->getMethod ()),
83+ new HttpUriTag ($ request ->getRequestUri ()),
84+ new SpanKindServerTag (),
85+ new SymfonyComponentTag (),
86+ new SymfonyVersionTag (),
87+ new SymfonyBackgroundTag (),
88+ ]
89+ );
90+
91+ return $ this ;
92+ }
93+
5794 public function onRequest (GetResponseEvent $ event )
5895 {
5996 $ request = $ event ->getRequest ();
0 commit comments