Editing settings not possible if Drupal can't connect to zendesk
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #3228453. -->
Reported by: [jurgenhaas](https://www.drupal.org/user/168924)
>>>
<p>Context: there already exists a Zendesk instance in a Drupal site, and you want to edit that by going to <code>/admin/config/services/helpdesk/zendesk</code>, if the subdomain is misconfigured or if Zendesk is down, then some of the requests to Zendesk can't be executed and the modules throws exceptions so that the form is not even opening. Problem being that you therefore can't correct a broken setting like the wrong subdomain.</p>
<p>The stack trace looks like this:</p>
<pre>Drupal\helpdesk_integration\HelpdeskPluginException: GuzzleHttp\Exception\ConnectException: cURL error 35: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in /var/www/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:200 Stack trace:<br>#0 /var/www/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)<br>#1 /var/www/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))<br>#2 /var/www/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))<br>#3 /var/www/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array)<br>#4 /var/www/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)<br>#5 /var/www/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php(70): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)<br>#6 /var/www/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php(126): GuzzleHttp\RetryMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)<br>#7 /var/www/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php(115): GuzzleHttp\RetryMiddleware->doRetry(Object(GuzzleHttp\Psr7\Request), Array)<br>#8 /var/www/vendor/guzzlehttp/promises/src/RejectedPromise.php(42): GuzzleHttp\RetryMiddleware->GuzzleHttp\{closure}(Object(GuzzleHttp\Exception\ConnectException))<br>#9 /var/www/vendor/guzzlehttp/promises/src/TaskQueue.php(48): GuzzleHttp\Promise\RejectedPromise::GuzzleHttp\Promise\{closure}()<br>#10 /var/www/vendor/guzzlehttp/promises/src/Promise.php(248): GuzzleHttp\Promise\TaskQueue->run(true)<br>#11 /var/www/vendor/guzzlehttp/promises/src/Promise.php(224): GuzzleHttp\Promise\Promise->invokeWaitFn()<br>#12 /var/www/vendor/guzzlehttp/promises/src/Promise.php(269): GuzzleHttp\Promise\Promise->waitIfPending()<br>#13 /var/www/vendor/guzzlehttp/promises/src/Promise.php(226): GuzzleHttp\Promise\Promise->invokeWaitList()<br>#14 /var/www/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending()<br>#15 /var/www/vendor/guzzlehttp/guzzle/src/Client.php(129): GuzzleHttp\Promise\Promise->wait()<br>#16 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Http.php(92): GuzzleHttp\Client->send(Object(GuzzleHttp\Psr7\Request), Array)<br>#17 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/HttpClient.php(469): Zendesk\API\Http::send(Object(Zendesk\API\HttpClient), 'ticket_fields.j...', Array)<br>#18 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Traits/Resource/FindAll.php(34): Zendesk\API\HttpClient->get('ticket_fields.j...', Array)<br>#19 /var/www/web/modules/contrib/helpdesk_zendesk/src/Plugin/HelpdeskIntegration/Zendesk.php(133): Zendesk\API\Resources\Core\TicketFields->findAll()<br>#20 /var/www/web/modules/contrib/helpdesk_zendesk/src/Plugin/HelpdeskIntegration/Zendesk.php(79): Drupal\helpdesk_zendesk\Plugin\HelpdeskIntegration\Zendesk->getStates(Object(Drupal\helpdesk_integration\Entity\Helpdesk))<br>#21 /var/www/web/modules/contrib/helpdesk_integration/src/Form/Helpdesk.php(111): Drupal\helpdesk_zendesk\Plugin\HelpdeskIntegration\Zendesk->buildConfigurationForm(Object(Drupal\helpdesk_integration\Entity\Helpdesk), Array)<br>#22 /var/www/web/core/lib/Drupal/Core/Entity/EntityForm.php(106): Drupal\helpdesk_integration\Form\Helpdesk->form(Array, Object(Drupal\Core\Form\FormState))<br>#23 [internal function]: Drupal\Core\Entity\EntityForm->buildForm(Array, Object(Drupal\Core\Form\FormState))<br>#24 /var/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(532): call_user_func_array(Array, Array)<br>#25 /var/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(278): Drupal\Core\Form\FormBuilder->retrieveForm('helpdesk_edit_f...', Object(Drupal\Core\Form\FormState))<br>#26 /var/www/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm(Object(Drupal\helpdesk_integration\Form\Helpdesk), Object(Drupal\Core\Form\FormState))<br>#27 /var/www/web/core/modules/layout_builder/src/Controller/LayoutBuilderHtmlEntityFormController.php(39): Drupal\Core\Controller\FormController->getContentResult(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\RouteMatch))<br>#28 [internal function]: Drupal\layout_builder\Controller\LayoutBuilderHtmlEntityFormController->getContentResult(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\RouteMatch))<br>#29 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)<br>#30 /var/www/web/core/lib/Drupal/Core/Render/Renderer.php(578): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()<br>#31 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))<br>#32 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)<br>#33 /var/www/vendor/symfony/http-kernel/HttpKernel.php(158): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()<br>#34 /var/www/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)<br>#35 /var/www/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#36 /var/www/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#37 /var/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#38 /var/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#39 /var/www/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#40 /var/www/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#41 /var/www/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#42 /var/www/web/core/lib/Drupal/Core/DrupalKernel.php(717): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#43 /var/www/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))<br>#44 {main} Next GuzzleHttp\Exception\RequestException: Error completing request in /var/www/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:72 Stack trace:<br>#0 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Http.php(94): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), NULL, Object(GuzzleHttp\Exception\ConnectException))<br>#1 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/HttpClient.php(469): Zendesk\API\Http::send(Object(Zendesk\API\HttpClient), 'ticket_fields.j...', Array)<br>#2 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Traits/Resource/FindAll.php(34): Zendesk\API\HttpClient->get('ticket_fields.j...', Array)<br>#3 /var/www/web/modules/contrib/helpdesk_zendesk/src/Plugin/HelpdeskIntegration/Zendesk.php(133): Zendesk\API\Resources\Core\TicketFields->findAll()<br>#4 /var/www/web/modules/contrib/helpdesk_zendesk/src/Plugin/HelpdeskIntegration/Zendesk.php(79): Drupal\helpdesk_zendesk\Plugin\HelpdeskIntegration\Zendesk->getStates(Object(Drupal\helpdesk_integration\Entity\Helpdesk))<br>#5 /var/www/web/modules/contrib/helpdesk_integration/src/Form/Helpdesk.php(111): Drupal\helpdesk_zendesk\Plugin\HelpdeskIntegration\Zendesk->buildConfigurationForm(Object(Drupal\helpdesk_integration\Entity\Helpdesk), Array)<br>#6 /var/www/web/core/lib/Drupal/Core/Entity/EntityForm.php(106): Drupal\helpdesk_integration\Form\Helpdesk->form(Array, Object(Drupal\Core\Form\FormState))<br>#7 [internal function]: Drupal\Core\Entity\EntityForm->buildForm(Array, Object(Drupal\Core\Form\FormState))<br>#8 /var/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(532): call_user_func_array(Array, Array)<br>#9 /var/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(278): Drupal\Core\Form\FormBuilder->retrieveForm('helpdesk_edit_f...', Object(Drupal\Core\Form\FormState))<br>#10 /var/www/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm(Object(Drupal\helpdesk_integration\Form\Helpdesk), Object(Drupal\Core\Form\FormState))<br>#11 /var/www/web/core/modules/layout_builder/src/Controller/LayoutBuilderHtmlEntityFormController.php(39): Drupal\Core\Controller\FormController->getContentResult(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\RouteMatch))<br>#12 [internal function]: Drupal\layout_builder\Controller\LayoutBuilderHtmlEntityFormController->getContentResult(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\RouteMatch))<br>#13 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)<br>#14 /var/www/web/core/lib/Drupal/Core/Render/Renderer.php(578): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()<br>#15 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))<br>#16 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)<br>#17 /var/www/vendor/symfony/http-kernel/HttpKernel.php(158): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()<br>#18 /var/www/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)<br>#19 /var/www/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#20 /var/www/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#21 /var/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#22 /var/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#23 /var/www/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#24 /var/www/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#25 /var/www/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#26 /var/www/web/core/lib/Drupal/Core/DrupalKernel.php(717): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#27 /var/www/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))<br>#28 {main} Next Zendesk\API\Exceptions\ApiResponseException: Error completing request [url] https://mattenhof.zendesk.com.zendesk.com/api/v2/ticket_fields.json [http method] GET [body] in /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Http.php:95 Stack trace:<br>#0 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/HttpClient.php(469): Zendesk\API\Http::send(Object(Zendesk\API\HttpClient), 'ticket_fields.j...', Array)<br>#1 /var/www/vendor/zendesk/zendesk_api_client_php/src/Zendesk/API/Traits/Resource/FindAll.php(34): Zendesk\API\HttpClient->get('ticket_fields.j...', Array)<br>#2 /var/www/web/modules/contrib/helpdesk_zendesk/src/Plugin/HelpdeskIntegration/Zendesk.php(133): Zendesk\API\Resources\Core\TicketFields->findAll()<br>#3 /var/www/web/modules/contrib/helpdesk_zendesk/src/Plugin/HelpdeskIntegration/Zendesk.php(79): Drupal\helpdesk_zendesk\Plugin\HelpdeskIntegration\Zendesk->getStates(Object(Drupal\helpdesk_integration\Entity\Helpdesk))<br>#4 /var/www/web/modules/contrib/helpdesk_integration/src/Form/Helpdesk.php(111): Drupal\helpdesk_zendesk\Plugin\HelpdeskIntegration\Zendesk->buildConfigurationForm(Object(Drupal\helpdesk_integration\Entity\Helpdesk), Array)<br>#5 /var/www/web/core/lib/Drupal/Core/Entity/EntityForm.php(106): Drupal\helpdesk_integration\Form\Helpdesk->form(Array, Object(Drupal\Core\Form\FormState))<br>#6 [internal function]: Drupal\Core\Entity\EntityForm->buildForm(Array, Object(Drupal\Core\Form\FormState))<br>#7 /var/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(532): call_user_func_array(Array, Array)<br>#8 /var/www/web/core/lib/Drupal/Core/Form/FormBuilder.php(278): Drupal\Core\Form\FormBuilder->retrieveForm('helpdesk_edit_f...', Object(Drupal\Core\Form\FormState))<br>#9 /var/www/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm(Object(Drupal\helpdesk_integration\Form\Helpdesk), Object(Drupal\Core\Form\FormState))<br>#10 /var/www/web/core/modules/layout_builder/src/Controller/LayoutBuilderHtmlEntityFormController.php(39): Drupal\Core\Controller\FormController->getContentResult(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\RouteMatch))<br>#11 [internal function]: Drupal\layout_builder\Controller\LayoutBuilderHtmlEntityFormController->getContentResult(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\RouteMatch))<br>#12 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)<br>#13 /var/www/web/core/lib/Drupal/Core/Render/Renderer.php(578): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()<br>#14 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))<br>#15 /var/www/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)<br>#16 /var/www/vendor/symfony/http-kernel/HttpKernel.php(158): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()<br>#17 /var/www/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)<br>#18 /var/www/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#19 /var/www/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#20 /var/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#21 /var/www/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#22 /var/www/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#23 /var/www/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#24 /var/www/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#25 /var/www/web/core/lib/Drupal/Core/DrupalKernel.php(717): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)<br>#26 /var/www/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))<br>#27 {main} in Drupal\helpdesk_zendesk\Plugin\HelpdeskIntegration\Zendesk->getStates() (Zeile 141 in /var/www/web/modules/contrib/helpdesk_zendesk/src/Plugin/HelpdeskIntegration/Zendesk.php).</pre><p>Proposed solution:</p>
<p>Catch such exceptions and return empty results instead.</p>
issue