21:34:24.000
deprecation
Method "Symfony\Component\DependencyInjection\Extension\ExtensionInterface::getNamespace() " might add "string " as a native return type declaration in the future. Do the same in implementation "Sensio\Bundle\FrameworkExtraBundle\DependencyInjection\SensioFrameworkExtraExtension " now to avoid errors or add an explicit @return annotation to suppress this message.
21:34:24.000
deprecation
Since symfony/framework-bundle 5.3: Not setting the "framework.session.storage_factory_id " configuration option is deprecated, it will default to "session.storage.factory.native " and will replace the "framework.session.storage_id " configuration option in version 6.0.
21:34:24.000
deprecation
Method "Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents() " might add "array " as a native return type declaration in the future. Do the same in implementation "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener " now to avoid errors or add an explicit @return annotation to suppress this message.
21:34:24.000
deprecation
Method "Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents() " might add "array " as a native return type declaration in the future. Do the same in implementation "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener " now to avoid errors or add an explicit @return annotation to suppress this message.
21:34:24.000
deprecation
Method "Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents() " might add "array " as a native return type declaration in the future. Do the same in implementation "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener " now to avoid errors or add an explicit @return annotation to suppress this message.
21:34:24.000
deprecation
Method "Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents() " might add "array " as a native return type declaration in the future. Do the same in implementation "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener " now to avoid errors or add an explicit @return annotation to suppress this message.
21:34:24.000
deprecation
Method "Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents() " might add "array " as a native return type declaration in the future. Do the same in implementation "Sensio\Bundle\FrameworkExtraBundle\EventListener\IsGrantedListener " now to avoid errors or add an explicit @return annotation to suppress this message.
03:10:40.697
deprecation
User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.native " service is deprecated, use "session.storage.factory.native " instead.
03:10:40.699
deprecation
User Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.metadata_bag " service is deprecated, create your own "session.storage.factory " instead.
03:10:40.702
Matched route "landing " .
03:10:40.717
Lock acquired, now computing item "blog_posts "
03:10:40.718
Request: "GET https://api.hubapi.com/cms/v3/blogs/posts?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240 "
http_client
03:10:40.984
Response: "401 https://api.hubapi.com/cms/v3/blogs/posts?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240 "
http_client
03:10:40.985
error
Could not load blog posts from HubSpot
03:10:40.990
critical
Uncaught PHP Exception Symfony\Component\HttpClient\Exception\ClientException: "HTTP/2 401 returned for "https://api.hubapi.com/cms/v3/blogs/posts?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240". " at /var/www/invoiced/data/www/invoiced.project-release.info/vendor/symfony/http-client/Response/TraceableResponse.php line 212
03:10:41.042
deprecation
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.
03:10:41.050
Lock acquired, now computing item "lastContentRefresh "
03:10:41.051
Lock acquired, now computing item "blog_authors "
03:10:41.051
Request: "GET https://api.hubapi.com/cms/v3/blogs/authors?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240 "
http_client
03:10:41.180
Response: "401 https://api.hubapi.com/cms/v3/blogs/authors?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240 "
http_client
03:10:41.180
error
Could not load blog posts from HubSpot
app
Show context
Show trace
{
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
[
"exception " => Symfony\Component\HttpClient\Exception \ ClientException {#533
#message : "HTTP/2 401 returned for "https://api.hubapi.com/cms/v3/blogs/authors?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240". "
#code : 401
#file : "/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php "
#line : 212
-response : Symfony\Component\HttpClient\Response \ TraceableResponse {#523 …}
trace : {
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
}
]
{
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
03:10:41.180
critical
Uncaught Exception: HTTP/2 401 returned for "https://api.hubapi.com/cms/v3/blogs/authors?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240 ".
php
Show context
Show trace
{
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
[
"exception " => Symfony\Component\HttpClient\Exception \ ClientException {#533
#message : "HTTP/2 401 returned for "https://api.hubapi.com/cms/v3/blogs/authors?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240". "
#code : 401
#file : "/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php "
#line : 212
-response : Symfony\Component\HttpClient\Response \ TraceableResponse {#523 …}
trace : {
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
}
]
{
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
03:10:41.182
critical
Uncaught PHP Exception 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 /var/www/invoiced/data/www/invoiced.project-release.info/vendor/symfony/http-client/Response/TraceableResponse.php line 212
request
Show context
Show trace
{
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
[
"exception " => Symfony\Component\HttpClient\Exception \ ClientException {#533
#message : "HTTP/2 401 returned for "https://api.hubapi.com/cms/v3/blogs/authors?hapikey=41d1972b-a2ce-454d-9e57-cd6355e00240". "
#code : 401
#file : "/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php "
#line : 212
-response : Symfony\Component\HttpClient\Response \ TraceableResponse {#523 …}
trace : {
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}
}
]
{
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:212 {
Symfony\Component\HttpClient\Response \ TraceableResponse->checkStatusCode(int $code) …
› if (400 <= $code) {
› throw new ClientException($this);
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-client/ Response/TraceableResponse.php:103 {
Symfony\Component\HttpClient\Response \ TraceableResponse->getContent(bool $throw = true): string …
› if ($throw) {
› $this->checkStatusCode($this->response->getStatusCode());
› }
arguments : {
$code : 401
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:181 {
App \ Blog->loadBlogAuthors(string $after = null): array …
›
› $result = json_decode($response->getContent(), true);
› } catch (HttpExceptionInterface $e) {
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:152 {
App\Blog->App \ {closure} …
›
› return $this->loadBlogAuthors();
› }, $beta);
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:51 {
Symfony\Component\Cache\Adapter\TraceableAdapter->Symfony\Component\Cache\Adapter \ {closure} …
›
› return $callback($item, $save);
› };
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ LockRegistry.php:108 {
Symfony\Component\Cache \ LockRegistry::compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, Closure $setMetadata = null, LoggerInterface $logger = null) …
›
› $value = $callback($item, $save);
›
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:100 {
Symfony\Component\Cache\Adapter\AbstractAdapter->Symfony\Component\Cache\Traits \ {closure} …
› $setMetadata($item, $startTime, $metadata);
› }, $this->logger ?? null);
› $setMetadata($item, $startTime, $metadata);
arguments : {
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$item : Symfony\Component\Cache \ CacheItem {#520 …}
&$save : true
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$setMetadata : Closure(CacheItem $item) {#521 …}
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:72 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->contractsGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null) …
› $save = true;
› $item->set($callback($item, $save));
› if ($save) {
arguments : {
Symfony\Component\Cache \ CacheItem {#520 …}
true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Traits/ContractsTrait.php:107 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->doGet(AdapterInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null) …
› }
› }, $beta, $metadata, $this->logger ?? null);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#517 …}
$beta : INF
&$metadata : []
$logger : Symfony\Bridge\Monolog \ Logger {#144 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache-contracts/ CacheTrait.php:35 {
Symfony\Component\Cache\Adapter \ AbstractAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› {
› return $this->doGet($this, $key, $callback, $beta, $metadata);
› }
arguments : {
$pool : Symfony\Component\Cache\Adapter \ FilesystemAdapter {#142 …}
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/cache/ Adapter/TraceableAdapter.php:56 {
Symfony\Component\Cache\Adapter \ TraceableAdapter->get(string $key, callable $callback, float $beta = null, array &$metadata = null) …
› try {
› $value = $this->pool->get($key, $callback, $beta, $metadata);
› $event->result[$key] = get_debug_type($value);
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
&$metadata : []
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:149 {
App \ Blog->getAuthors(bool $bustCache = false): array …
› $beta = $bustCache ? INF : null;
› $this->authors = $this->cache->get('blog_authors', function (ItemInterface $item) {
› $item->expiresAfter(86400); // cache for 1 day
arguments : {
$key : "blog_authors "
$callback : Closure(CacheItem $item, bool &$save) {#490 …}
$beta : INF
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/Blog.php:37 {
App \ Blog->bustCache(): void …
› {
› $this->getAuthors(true);
› $this->getTags(true);
arguments : {
$bustCache : true
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:45 {
App\EventSubscriber \ ContentRefreshSubscriber->refresh(): void …
›
› $this->blog->bustCache();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info / src/EventSubscriber/ContentRefreshSubscriber.php:34 {
App\EventSubscriber \ ContentRefreshSubscriber->onKernelTerminate(TerminateEvent $event): void …
› if ($lastRefresh < strtotime('-5 minutes')) {
› $this->refresh();
› }
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:270 {
Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher \ {closure} …
› }
› ($closure = \Closure::fromCallable($listener))(...$args);
› };
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
... : {
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:230 {
Symfony\Component\EventDispatcher \ EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event) …
› }
› $listener($event, $eventName, $this);
› }
arguments : {
Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
"kernel.terminate "
Symfony\Component\EventDispatcher \ EventDispatcher {#105 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/event-dispatcher/ EventDispatcher.php:59 {
Symfony\Component\EventDispatcher \ EventDispatcher->dispatch(object $event, string $eventName = null): object …
› if ($listeners) {
› $this->callListeners($listeners, $eventName, $event);
› }
arguments : {
$listeners : [ …2]
$eventName : "kernel.terminate "
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ HttpKernel.php:94 {
Symfony\Component\HttpKernel \ HttpKernel->terminate(Request $request, Response $response) …
› {
› $this->dispatcher->dispatch(new TerminateEvent($this, $request, $response), KernelEvents::TERMINATE);
› }
arguments : {
$event : Symfony\Component\HttpKernel\Event \ TerminateEvent {#215 …}
$eventName : "kernel.terminate "
}
}
/var/www/invoiced/data/www/invoiced.project-release.info/vendor /symfony/http-kernel/ Kernel.php:159 {
Symfony\Component\HttpKernel \ Kernel->terminate(Request $request, Response $response) …
› if ($this->getHttpKernel() instanceof TerminableInterface) {
› $this->getHttpKernel()->terminate($request, $response);
› }
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
/var/www/invoiced/data/www/invoiced.project-release.info / public/index.php:36 {
› $response->send();
› $kernel->terminate($request, $response);
›
arguments : {
$request : Symfony\Component\HttpFoundation \ Request {#54 …}
$response : Symfony\Component\HttpFoundation \ Response {#387 …}
}
}
}