gyselroth / balloon

High performance, feature rich document management system written for the cloud
GNU General Public License v3.0
18 stars 7 forks source link

Unresponding wopi discovery url leads to a 130s timeout (os default) #451

Closed raffis closed 4 years ago

raffis commented 4 years ago

Describe the bug

GET /api/v2/office/hosts takes ~130s. Still returns a 200 OK but with no entry for the loolwsd server.

balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api 2020-13-03 12:27:14 [Balloon\App\Wopi\HostManager,ERROR]: failed to fetch wopi discovery document [array{"name":"LibreOffice Online","url":"http:\/\/balloon-staging-lool-collab:9980\/libreoffice","wopi_url":"https:\/\/balloonstage.tam.ch\/wopi","replace":{"from":"#http.?:\/\/balloon-staging-lool-collab:9980#","to":"{protocol}:\/\/{host}"}}]  [object] (GuzzleHttp\Exception\ConnectException(code: 0): cURL error 28: Failed to connect to balloon-staging-lool-collab port 9980: Operation timed out (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) at /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:200)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api [stacktrace]
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #0 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #1 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #2 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #3 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #4 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #5 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(37): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #6 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Middleware.php(29): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #7 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(70): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #8 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Middleware.php(59): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #9 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/HandlerStack.php(71): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #10 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Client.php(361): GuzzleHttp\HandlerStack->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #11 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Client.php(163): GuzzleHttp\Client->transfer(Object(GuzzleHttp\Psr7\Request), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #12 /usr/share/balloon/vendor/guzzlehttp/guzzle/src/Client.php(183): GuzzleHttp\Client->requestAsync('GET', Object(GuzzleHttp\Psr7\Uri), Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #13 /usr/share/balloon/src/app/Balloon.App.Wopi/HostManager.php(272): GuzzleHttp\Client->request('GET', 'http://balloon-...')
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #14 /usr/share/balloon/src/app/Balloon.App.Wopi/HostManager.php(132): Balloon\App\Wopi\HostManager->fetchDiscovery('http://balloon-...')
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #15 /usr/share/balloon/src/app/Balloon.App.Wopi/Api/v2/Hosts.php(39): Balloon\App\Wopi\HostManager->getHosts()
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #16 [internal function]: Balloon\App\Wopi\Api\v2\Hosts->get()
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #17 /usr/share/balloon/vendor/gyselroth/micro-http/src/Router.php(246): call_user_func_array(Array, Array)
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #18 /usr/share/balloon/src/lib/Bootstrap/Http.php(91): Micro\Http\Router->run()
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #19 /usr/share/balloon/bin/httpdocs/index.php(47): Balloon\Bootstrap\Http->process()
balloon-staging-balloon-api-9f4fcc668-4rbp7 balloon-api #20 {main}

To Reproduce

Killing the unresponsive service will bring back normality.

Expected behavior

Integrate default connect timeout for guzzle.

Environment