OpenConext / OpenConext-engineblock

OpenConext SAML 2.0 IdP/SP Gateway
14 stars 22 forks source link

Improve handling of PDP time out #1285

Open pmeulen opened 9 months ago

pmeulen commented 9 months ago

When the PDP fails to respond due to a timeout a generic engineblock error message with stack trace is logged. The problem is buried in the stacktrace because the exception is wrapped multiple times before it is actually logged.

The timout is also rather long now in EB.

The relevant bit is:

Resource could not be read (status code "504")\n#0 /opt/openconext/OpenConext-engineblock-6.12.2/src/OpenConext/EngineBlockBundle/Pdp/PdpClient.php(53): OpenConext\EngineBlock\Http\HttpClient->post('{"Request\":{"Re...', '/pdp/api/decide...', Array, Array)

The stacktrace is:

engineblock.ERROR: Resource could not be read (status code "504") | Caught Unhandled generic exception {"session_id":"dakpotcr15mn19c1hrk8ink4hf","request_id":"6581c2f8d7306"} {"exception":{"severity":"ERROR","location":"/opt/openconext/OpenConext-engineblock-6.12.2/src/OpenConext/EngineBlockBundle/EventListener/FallbackExceptionListener.php:83","userId":null,"idp":null,"sp":null,"details":"EngineBlock_Exception: Resource could not be read (status code \"504\")\n#0 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php(214): OpenConext\\EngineBlockBundle\\EventListener\\FallbackExceptionListener->onKernelException(Object(Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent), 'kernel.exceptio...', Object(Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher))\n#1 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php(44): Symfony\\Component\\EventDispatcher\\EventDispatcher->doDispatch(Array, 'kernel.exceptio...', Object(Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent))\n#2 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php(227): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch('kernel.exceptio...', Object(Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent))\n#3 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php(79): Symfony\\Component\\HttpKernel\\HttpKernel->handleException(Object(OpenConext\\EngineBlock\\Http\\Exception\\UnreadableResourceException), Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#4 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(200): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#5 /opt/openconext/OpenConext-engineblock-6.12.2/web/app.php(17): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#6 {main}\n\nOpenConext\\EngineBlock\\Http\\Exception\\UnreadableResourceException: Resource could not be read (status code \"504\")\n#0 /opt/openconext/OpenConext-engineblock-6.12.2/src/OpenConext/EngineBlockBundle/Pdp/PdpClient.php(53): OpenConext\\EngineBlock\\Http\\HttpClient->post('{\"Request\":{\"Re...', '/pdp/api/decide...', Array, Array)\n#1 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Filter/Command/EnforcePolicy.php(58): OpenConext\\EngineBlockBundle\\Pdp\\PdpClient->requestDecisionFor(Object(OpenConext\\EngineBlockBundle\\Pdp\\Dto\\Request))\n#2 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Filter/Abstract.php(97): EngineBlock_Corto_Filter_Command_EnforcePolicy->execute()\n#3 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/ProxyServer.php(956): EngineBlock_Corto_Filter_Abstract->filter(Object(EngineBlock_Saml2_ResponseAnnotationDecorator), Array, Object(EngineBlock_Saml2_AuthnRequestAnnotationDecorator), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\ServiceProvider), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\IdentityProvider))\n#4 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/ProxyServer.php(926): EngineBlock_Corto_ProxyServer->callAttributeFilter(Array, Object(EngineBlock_Saml2_ResponseAnnotationDecorator), Object(EngineBlock_Saml2_AuthnRequestAnnotationDecorator), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\ServiceProvider), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\IdentityProvider))\n#5 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Module/Service/AssertionConsumer.php(171): EngineBlock_Corto_ProxyServer->filterInputAssertionAttributes(Object(EngineBlock_Saml2_ResponseAnnotationDecorator), Object(EngineBlock_Saml2_AuthnRequestAnnotationDecorator))\n#6 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Module/Services.php(71): EngineBlock_Corto_Module_Service_AssertionConsumer->serve('assertionConsum...', Object(Symfony\\Component\\HttpFoundation\\Request))\n#7 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/ProxyServer.php(375): EngineBlock_Corto_Module_Services->serve('assertionConsum...')\n#8 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Adapter.php(341): EngineBlock_Corto_ProxyServer->serve('assertionConsum...', '')\n#9 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Adapter.php(107): EngineBlock_Corto_Adapter->_callCortoServiceUri('assertionConsum...')\n#10 /opt/openconext/OpenConext-engineblock-6.12.2/src/OpenConext/EngineBlockBundle/Controller/ServiceProviderController.php(80): EngineBlock_Corto_Adapter->consumeAssertion()\n#11 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php(151): OpenConext\\EngineBlockBundle\\Controller\\ServiceProviderController->consumeAssertionAction(Object(Symfony\\Component\\HttpFoundation\\Request))\n#12 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php(68): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#13 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(200): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#14 /opt/openconext/OpenConext-engineblock-6.12.2/web/app.php(17): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#15 {main}","message_prefix":null},"previous_exceptions":["OpenConext\\EngineBlock\\Http\\Exception\\UnreadableResourceException: Resource could not be read (status code \"504\") in /opt/openconext/OpenConext-engineblock-6.12.2/src/OpenConext/EngineBlock/Http/HttpClient.php:112\nStack trace:\n#0 /opt/openconext/OpenConext-engineblock-6.12.2/src/OpenConext/EngineBlockBundle/Pdp/PdpClient.php(53): OpenConext\\EngineBlock\\Http\\HttpClient->post('{\"Request\":{\"Re...', '/pdp/api/decide...', Array, Array)\n#1 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Filter/Command/EnforcePolicy.php(58): OpenConext\\EngineBlockBundle\\Pdp\\PdpClient->requestDecisionFor(Object(OpenConext\\EngineBlockBundle\\Pdp\\Dto\\Request))\n#2 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Filter/Abstract.php(97): EngineBlock_Corto_Filter_Command_EnforcePolicy->execute()\n#3 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/ProxyServer.php(956): EngineBlock_Corto_Filter_Abstract->filter(Object(EngineBlock_Saml2_ResponseAnnotationDecorator), Array, Object(EngineBlock_Saml2_AuthnRequestAnnotationDecorator), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\ServiceProvider), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\IdentityProvider))\n#4 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/ProxyServer.php(926): EngineBlock_Corto_ProxyServer->callAttributeFilter(Array, Object(EngineBlock_Saml2_ResponseAnnotationDecorator), Object(EngineBlock_Saml2_AuthnRequestAnnotationDecorator), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\ServiceProvider), Object(OpenConext\\EngineBlock\\Metadata\\Entity\\IdentityProvider))\n#5 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Module/Service/AssertionConsumer.php(171): EngineBlock_Corto_ProxyServer->filterInputAssertionAttributes(Object(EngineBlock_Saml2_ResponseAnnotationDecorator), Object(EngineBlock_Saml2_AuthnRequestAnnotationDecorator))\n#6 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Module/Services.php(71): EngineBlock_Corto_Module_Service_AssertionConsumer->serve('assertionConsum...', Object(Symfony\\Component\\HttpFoundation\\Request))\n#7 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/ProxyServer.php(375): EngineBlock_Corto_Module_Services->serve('assertionConsum...')\n#8 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Adapter.php(341): EngineBlock_Corto_ProxyServer->serve('assertionConsum...', '')\n#9 /opt/openconext/OpenConext-engineblock-6.12.2/library/EngineBlock/Corto/Adapter.php(107): EngineBlock_Corto_Adapter->_callCortoServiceUri('assertionConsum...')\n#10 /opt/openconext/OpenConext-engineblock-6.12.2/src/OpenConext/EngineBlockBundle/Controller/ServiceProviderController.php(80): EngineBlock_Corto_Adapter->consumeAssertion()\n#11 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php(151): OpenConext\\EngineBlockBundle\\Controller\\ServiceProviderController->consumeAssertionAction(Object(Symfony\\Component\\HttpFoundation\\Request))\n#12 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php(68): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#13 /opt/openconext/OpenConext-engineblock-6.12.2/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(200): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#14 /opt/openconext/OpenConext-engineblock-6.12.2/web/app.php(17): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#15 {main}"]}