Exceptions
Exception
Symfony\Component\HttpClient\Exception\ ClientException
if (500 <= $code) {throw new ServerException($this);}if (400 <= $code) {throw new ClientException($this);}if (300 <= $code) {throw new RedirectionException($this);}
in
vendor/symfony/http-client/Response/TraceableResponse.php
->
checkStatusCode
(line 103)
} finally {if ($this->event && $this->event->isStarted()) {$this->event->stop();}if ($throw) {$this->checkStatusCode($this->response->getStatusCode());}}}public function toArray(bool $throw = true): array
'hapikey' => $this->hubSpotKey,'after' => $after,],]);$result = json_decode($response->getContent(), true);} catch (HttpExceptionInterface $e) {$this->logger->error('Could not load blog posts from HubSpot', ['exception' => $e]);throw $e;}
if (!isset($this->authors)) {$beta = $bustCache ? INF : null;$this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {$item->expiresAfter(86400); // cache for 1 dayreturn $this->loadBlogAuthors();}, $beta);}return $this->authors;}
in
vendor/symfony/cache/Adapter/TraceableAdapter.php
->
App\{closure}
(line 51)
$isHit = true;$callback = function (CacheItem $item, bool &$save) use ($callback, &$isHit) {$isHit = $item->isHit();return $callback($item, $save);};$event = $this->start(__FUNCTION__);try {$value = $this->pool->get($key, $callback, $beta, $metadata);
in
vendor/symfony/cache/LockRegistry.php
->
Symfony\Component\Cache\Adapter\{closure}
(line 108)
if ($locked || !$wouldBlock) {$logger && $logger->info(sprintf('Lock %s, now computing item "{key}"', $locked ? 'acquired' : 'not supported'), ['key' => $item->getKey()]);self::$lockedFiles[$key] = true;$value = $callback($item, $save);if ($save) {if ($setMetadata) {$setMetadata($item);}
in
vendor/symfony/cache/Traits/ContractsTrait.php
::
compute
(line 100)
}try {$value = ($this->callbackWrapper)($callback, $item, $save, $pool, function (CacheItem $item) use ($setMetadata, $startTime, &$metadata) {$setMetadata($item, $startTime, $metadata);}, $this->logger ?? null);$setMetadata($item, $startTime, $metadata);return $value;} finally {unset($this->computing[$key]);
in
vendor/symfony/cache-contracts/CacheTrait.php
->
Symfony\Component\Cache\Traits\{closure}
(line 72)
}}if ($recompute) {$save = true;$item->set($callback($item, $save));if ($save) {$pool->save($item);}}
in
vendor/symfony/cache/Traits/ContractsTrait.php
->
contractsGet
(line 107)
return $value;} finally {unset($this->computing[$key]);}}, $beta, $metadata, $this->logger ?? null);}}
in
vendor/symfony/cache-contracts/CacheTrait.php
->
doGet
(line 35)
** @return mixed*/public function get(string $key, callable $callback, float $beta = null, array &$metadata = null){return $this->doGet($this, $key, $callback, $beta, $metadata);}/*** {@inheritdoc}*/
in
vendor/symfony/cache/Adapter/TraceableAdapter.php
->
get
(line 56)
return $callback($item, $save);};$event = $this->start(__FUNCTION__);try {$value = $this->pool->get($key, $callback, $beta, $metadata);$event->result[$key] = get_debug_type($value);} finally {$event->end = microtime(true);}if ($isHit) {
public function getAuthors(bool $bustCache = false): array{if (!isset($this->authors)) {$beta = $bustCache ? INF : null;$this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {$item->expiresAfter(86400); // cache for 1 dayreturn $this->loadBlogAuthors();}, $beta);}
* WARNING: This will be slow and should not be called* unless intentional.*/public function bustCache(): void{$this->getAuthors(true);$this->getTags(true);$this->getAllPosts(true);}public function getAuthor(string $slug): ?array
// Update the last refresh time now to minimize cache stampede$this->cache->get('lastContentRefresh', function () {return time();}, INF);$this->blog->bustCache();}public static function getSubscribedEvents(): array{return [
$lastRefresh = $this->cache->get('lastContentRefresh', function () {return 0;});if ($lastRefresh < strtotime('-5 minutes')) {$this->refresh();}}private function refresh(): void{
in
vendor/symfony/event-dispatcher/EventDispatcher.php
->
onKernelTerminate
(line 270)
$closure = static function (...$args) use (&$listener, &$closure) {if ($listener[0] instanceof \Closure) {$listener[0] = $listener[0]();$listener[1] = $listener[1] ?? '__invoke';}($closure = \Closure::fromCallable($listener))(...$args);};} else {$closure = $listener instanceof \Closure || $listener instanceof WrappedListener ? $listener : \Closure::fromCallable($listener);}}
in
vendor/symfony/event-dispatcher/EventDispatcher.php
::
Symfony\Component\EventDispatcher\{closure}
(line 230)
foreach ($listeners as $listener) {if ($stoppable && $event->isPropagationStopped()) {break;}$listener($event, $eventName, $this);}}/*** Sorts the internal list of listeners for the given event by priority.
in
vendor/symfony/event-dispatcher/EventDispatcher.php
->
callListeners
(line 59)
} else {$listeners = $this->getListeners($eventName);}if ($listeners) {$this->callListeners($listeners, $eventName, $event);}return $event;}
in
vendor/symfony/http-kernel/HttpKernel.php
->
dispatch
(line 94)
/*** {@inheritdoc}*/public function terminate(Request $request, Response $response){$this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);}/*** @internal*/
in
vendor/symfony/http-kernel/Kernel.php
->
terminate
(line 159)
if (false === $this->booted) {return;}if ($this->getHttpKernel() instanceof TerminableInterface) {$this->getHttpKernel()->terminate($request, $response);}}/*** {@inheritdoc}
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);$request = Request::createFromGlobals();$response = $kernel->handle($request);$response->send();$kernel->terminate($request, $response);
Logs
| Level | Channel | Message |
|---|---|---|
| INFO 01:14:17 | php |
User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.native" service is deprecated, use "session.storage.factory.native" instead. {
"exception": {}
}
|
| INFO 01:14:17 | php |
User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.metadata_bag" service is deprecated, create your own "session.storage.factory" instead. {
"exception": {}
}
|
| INFO 01:14:17 | request |
Matched route "_profiler". {
"route": "_profiler",
"route_parameters": {
"_route": "_profiler",
"_controller": "web_profiler.controller.profiler::panelAction",
"token": "822c80"
},
"request_uri": "http://invoiced.project-release.info/_profiler/822c80?panel=exception",
"method": "GET"
}
|
| INFO 01:14:17 | php |
User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.factory.service" service is deprecated, use "session.storage.factory.native", "session.storage.factory.php_bridge" or "session.storage.factory.mock_file" instead. {
"exception": {}
}
|
Stack Trace
|
ClientException
|
|---|
Symfony\Component\HttpClient\Exception\ClientException:
HTTP/2 401 returned for "https://api.hubapi.com/cms/v3/blogs/authors?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240".
at vendor/symfony/http-client/Response/TraceableResponse.php:212
at Symfony\Component\HttpClient\Response\TraceableResponse->checkStatusCode(401)
(vendor/symfony/http-client/Response/TraceableResponse.php:103)
at Symfony\Component\HttpClient\Response\TraceableResponse->getContent()
(src/Blog.php:181)
at App\Blog->loadBlogAuthors()
(src/Blog.php:152)
at App\Blog->App\{closure}(object(CacheItem), true)
(vendor/symfony/cache/Adapter/TraceableAdapter.php:51)
at Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter\{closure}(object(CacheItem), true)
(vendor/symfony/cache/LockRegistry.php:108)
at Symfony\Component\Cache\LockRegistry::compute(object(Closure), object(CacheItem), true, object(FilesystemAdapter), object(Closure), object(Logger))
(vendor/symfony/cache/Traits/ContractsTrait.php:100)
at Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits\{closure}(object(CacheItem), true)
(vendor/symfony/cache-contracts/CacheTrait.php:72)
at Symfony\Component\Cache\Adapter\AbstractAdapter->contractsGet(object(FilesystemAdapter), 'blog_authors', object(Closure), INF, array(), object(Logger))
(vendor/symfony/cache/Traits/ContractsTrait.php:107)
at Symfony\Component\Cache\Adapter\AbstractAdapter->doGet(object(FilesystemAdapter), 'blog_authors', object(Closure), INF, array())
(vendor/symfony/cache-contracts/CacheTrait.php:35)
at Symfony\Component\Cache\Adapter\AbstractAdapter->get('blog_authors', object(Closure), INF, array())
(vendor/symfony/cache/Adapter/TraceableAdapter.php:56)
at Symfony\Component\Cache\Adapter\TraceableAdapter->get('blog_authors', object(Closure), INF)
(src/Blog.php:149)
at App\Blog->getAuthors(true)
(src/Blog.php:37)
at App\Blog->bustCache()
(src/EventSubscriber/ContentRefreshSubscriber.php:45)
at App\EventSubscriber\ContentRefreshSubscriber->refresh()
(src/EventSubscriber/ContentRefreshSubscriber.php:34)
at App\EventSubscriber\ContentRefreshSubscriber->onKernelTerminate(object(TerminateEvent), 'kernel.terminate', object(EventDispatcher))
(vendor/symfony/event-dispatcher/EventDispatcher.php:270)
at Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher\{closure}(object(TerminateEvent), 'kernel.terminate', object(EventDispatcher))
(vendor/symfony/event-dispatcher/EventDispatcher.php:230)
at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(Closure), object(Closure)), 'kernel.terminate', object(TerminateEvent))
(vendor/symfony/event-dispatcher/EventDispatcher.php:59)
at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(TerminateEvent), 'kernel.terminate')
(vendor/symfony/http-kernel/HttpKernel.php:94)
at Symfony\Component\HttpKernel\HttpKernel->terminate(object(Request), object(Response))
(vendor/symfony/http-kernel/Kernel.php:159)
at Symfony\Component\HttpKernel\Kernel->terminate(object(Request), object(Response))
(public/index.php:36)
|