SyliusPickupPointPlugin icon indicating copy to clipboard operation
SyliusPickupPointPlugin copied to clipboard

Resolution of 'setono_sylius_pickup_point.registry.provider' fails if GLS webservice is down

Open leflings opened this issue 3 years ago • 0 comments

The problem occurs in https://github.com/Setono/GlsWebserviceBundle and/or https://github.com/Setono/gls-webservice-php-sdk but the right course of action to solve problem is unclear.

If the GLS provider is registered (and their webpage is down), resolution will fail like this:

SoapFault: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://www.gls.dk/webservices_v4/wsShopFinder.asmx?WSDL' : failed to load external entity "https://www.gls.dk/webservices_v4/wsShopFinder.asmx?WSDL"

#16 /vendor/setono/gls-webservice-php-sdk/src/Factory/SoapClientFactory.php(26): SoapClient::SoapClient
#15 /vendor/setono/gls-webservice-php-sdk/src/Factory/SoapClientFactory.php(26): Setono\GLS\Webservice\Factory\SoapClientFactory::create
#14 /var/cache/prod/ContainerBZEyIsI/getSetonoSyliusPickupPoint_Registry_ProviderService.php(43): ContainerBZEyIsI\getSetonoSyliusPickupPoint_Registry_ProviderService::do
#13 /var/cache/prod/ContainerBZEyIsI/App_KernelProdContainer.php(2459): ContainerBZEyIsI\App_KernelProdContainer::load
#12 /var/cache/prod/ContainerBZEyIsI/getPickupPointsActionService.php(22): ContainerBZEyIsI\getPickupPointsActionService::do
#11 /var/cache/prod/ContainerBZEyIsI/App_KernelProdContainer.php(2459): ContainerBZEyIsI\App_KernelProdContainer::load
#10 /vendor/symfony/dependency-injection/Container.php(237): Symfony\Component\DependencyInjection\Container::make
#9 /vendor/symfony/dependency-injection/Container.php(219): Symfony\Component\DependencyInjection\Container::get
#8 /vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php(53): Symfony\Component\HttpKernel\Controller\ContainerControllerResolver::instantiateController
#7 /vendor/symfony/framework-bundle/Controller/ControllerResolver.php(29): Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver::instantiateController
#6 /vendor/symfony/http-kernel/Controller/ControllerResolver.php(108): Symfony\Component\HttpKernel\Controller\ControllerResolver::createController
#5 /vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php(42): Symfony\Component\HttpKernel\Controller\ContainerControllerResolver::createController
#4 /vendor/symfony/http-kernel/Controller/ControllerResolver.php(86): Symfony\Component\HttpKernel\Controller\ControllerResolver::getController
#3 /vendor/symfony/http-kernel/HttpKernel.php(139): Symfony\Component\HttpKernel\HttpKernel::handleRaw
#2 /vendor/symfony/http-kernel/HttpKernel.php(78): Symfony\Component\HttpKernel\HttpKernel::handle
#1 /vendor/symfony/http-kernel/Kernel.php(199): Symfony\Component\HttpKernel\Kernel::handle
#0 /public/index.php(25): null

Not sure how to best solve this, but one way might be to allow the "GLS client" to instantiate, but make it throw an exception on usage. Atleast then the control flow would be in the hands of user, rather than failure while building container / resolving services.

leflings avatar Dec 13 '21 09:12 leflings