Skip to content

Commit

Permalink
[HttpKernel] do not stopwatch sections when profiler is disabled
Browse files Browse the repository at this point in the history
the toolbar and profiler panel disable to profiler which then does not set the X-Debug-Token. so when the header does not exist, do not call the stopwatch methods with null which violates the contract and does not make sense
  • Loading branch information
Tobion committed Jul 29, 2019
1 parent 2113e67 commit b3d062e
Showing 1 changed file with 9 additions and 0 deletions.
Expand Up @@ -42,6 +42,9 @@ protected function preDispatch($eventName, Event $event)
break;
case KernelEvents::TERMINATE:
$token = $event->getResponse()->headers->get('X-Debug-Token');
if (null === $token) {
break;
}
// There is a very special case when using built-in AppCache class as kernel wrapper, in the case
// of an ESI request leading to a `stale` response [B] inside a `fresh` cached response [A].
// In this case, `$token` contains the [B] debug token, but the open `stopwatch` section ID
Expand All @@ -66,12 +69,18 @@ protected function postDispatch($eventName, Event $event)
break;
case KernelEvents::RESPONSE:
$token = $event->getResponse()->headers->get('X-Debug-Token');
if (null === $token) {
break;
}
$this->stopwatch->stopSection($token);
break;
case KernelEvents::TERMINATE:
// In the special case described in the `preDispatch` method above, the `$token` section
// does not exist, then closing it throws an exception which must be caught.
$token = $event->getResponse()->headers->get('X-Debug-Token');
if (null === $token) {
break;
}
try {
$this->stopwatch->stopSection($token);
} catch (\LogicException $e) {
Expand Down

0 comments on commit b3d062e

Please sign in to comment.