nextcloud / richdocuments

📑 Collabora Online for Nextcloud
https://nextcloud.com/collaboraonline
355 stars 116 forks source link

GuzzleHttp Error spam #3064

Closed phil-lipp closed 1 year ago

phil-lipp commented 1 year ago

Describe the bug richdocuments is spamming the logs with errors suddenly

To Reproduce Steps to reproduce the behavior:

  1. Log in as admin
  2. Go to Logging
  3. See Log full of errors as seen below (2 per minute)

Expected behavior No error

Screenshots If applicable, add screenshots to help explain your problem.

Client details:

Nextcloud Server details

Operating system: Debian

Web server: Apache

Database: MariaDB

PHP version: 8.1.20

Nextcloud version: 27.0.0

Version of the richdocuments app 8.1.0

Version of Collabora Online 23.05.1.3.1

Misc: Using the demo server it works

Collabora Online Server details

Operating system: Debian

using Docker (compose from: https://techoverflow.net/2021/08/19/how-to-run-collabora-office-for-nextcloud-using-docker-compose/)

manual capabilities test (from browser): using: https://adminuser:password@collabora.mydomain.com:9980/hosting/capabilities returns:

convert-to
available    true
endpoint    "/cool/convert-to"
hasMobileSupport    true
hasProxyPrefix    false
hasTemplateSaveAs    false
hasTemplateSource    true
hasZoteroSupport    true
productName    "Collabora Online Development Edition"
productVersion    "23.05.1.3"
productVersionHash    "10deb70"
serverId    "8f840b18"
Logs #### Nextcloud log (data/nextcloud.log) ``` [richdocuments] Error: GuzzleHttp\Exception\ConnectException: cURL error 6: Could not resolve host: collabora.mydomain.com (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://adminuser:password@collabora.mydomain.com:9980/hosting/capabilities at <> 0. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 158 GuzzleHttp\Handler\CurlFactory::createRejection("*** sensitive parameters replaced ***") 1. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 110 GuzzleHttp\Handler\CurlFactory::finishError() 2. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php line 47 GuzzleHttp\Handler\CurlFactory::finish() 3. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Middleware.php line 142 GuzzleHttp\Handler\CurlHandler->__invoke() 4. /var/www/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php line 114 GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***") 5. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php line 35 OC\Http\Client\DnsPinMiddleware->OC\Http\Client\{closure}("*** sensitive parameters replaced ***") 6. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Middleware.php line 31 GuzzleHttp\PrepareBodyMiddleware->__invoke() 7. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php line 71 GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***") 8. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Middleware.php line 66 GuzzleHttp\RedirectMiddleware->__invoke() 9. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/HandlerStack.php line 75 GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***") 10. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Client.php line 333 GuzzleHttp\HandlerStack->__invoke() 11. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Client.php line 169 GuzzleHttp\Client->transfer() 12. /var/www/nextcloud/apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Client.php line 189 GuzzleHttp\Client->requestAsync("*** sensitive parameters replaced ***") 13. /var/www/nextcloud/lib/private/Http/Client/Client.php line 226 GuzzleHttp\Client->request() 14. /var/www/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php line 135 OC\Http\Client\Client->get() 15. /var/www/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php line 73 OCA\Richdocuments\Service\CapabilitiesService->refetch() 16. /var/www/nextcloud/apps/richdocuments/lib/AppInfo/Application.php line 85 OCA\Richdocuments\Service\CapabilitiesService->getCapabilities() 17. /var/www/nextcloud/lib/private/AppFramework/Bootstrap/FunctionInjector.php line 66 OCA\Richdocuments\AppInfo\Application->OCA\Richdocuments\AppInfo\{closure}("*** sensitive parameters replaced ***") 18. /var/www/nextcloud/lib/private/AppFramework/Bootstrap/BootContext.php line 50 OC\AppFramework\Bootstrap\FunctionInjector->injectFn() 19. /var/www/nextcloud/apps/richdocuments/lib/AppInfo/Application.php line 140 OC\AppFramework\Bootstrap\BootContext->injectFn() 20. /var/www/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php line 200 OCA\Richdocuments\AppInfo\Application->boot() 21. /var/www/nextcloud/lib/private/App/AppManager.php line 437 OC\AppFramework\Bootstrap\Coordinator->bootApp() 22. /var/www/nextcloud/lib/private/App/AppManager.php line 216 OC\App\AppManager->loadApp() 23. /var/www/nextcloud/lib/private/legacy/OC_App.php line 126 OC\App\AppManager->loadApps() 24. /var/www/nextcloud/lib/base.php line 1044 OC_App::loadApps() 25. /var/www/nextcloud/index.php line 36 OC::handleRequest() ```
GitWidi commented 1 year ago

It´s the same at me! I am using an external Collabora CODE service (Docker container) where I have set the access rights via the "alias_groups" element in coolwsd.xml and therefore I do not need account information in the URL.

I found that this still works with the previous version of Collabora CODE (Docker tag: 22.05.14.3.1).

Below I have attached two text files which show the behavior of my system. Once against CODE 22.05, where it works, the second one against CODE 23.05, where I aborted after a timeout. wget-hosting-capabilities-CODE22.05.txt wget-hosting-capabilities-CODE23.05.txt

Unfortunately, I am not familiar with the WOPI api. Therefore, I have no idea if this is a bug in the current version of Collabora, if the API has changed, or if something else has happened. Maybe this information will help someone.

juliusknorr commented 1 year ago

It looks like your collabora server is just not properly reachable. mabye double check if the container is running properly and exposed through http(s). Without knowing more about the setup it is hard to give hints, therefore it might be the best to head over to https://help.nextcloud.com or https://forum.collaboraonline.com

There is nothing we can do on the richdocuments app side if the endpoint is unreachable or timing out.

joshtrichards commented 1 year ago

Hi @phil-lipp - This looks like a configuration issue. The indication is that the DNS entry for collabora.mydomain.com can't be resolved from within your NC container. Can you check DNS resolution via the container (not from the host itself or your browser?

GitWidi commented 1 year ago

Thanks for your hints.

As you read, I use the Collabora service within a Docker environment. The only thing I changed was the tag of the Docker image.

  # docker-compose.yml
  # Collabora Office Development edition (CODE)
  office:
    image: collabora/code:22.05.14.3.1
    #image: collabora/code:23.05.1.3.1
    restart: unless-stopped
    ...

I then restarted the Docker container - ran the whole thing several times and identified it as reproducible.

When CODE V22.05 is running, the http request works, with CODE V23.05 there is no response and the request times out after 45s.

So I assume that the behavior of the Docker images (Collabora CODE between V22.05 and V23.05) has changed.

joshtrichards commented 1 year ago

@GitWidi Are you getting the exact same error in your nextcloud.log that says Could not resolve host: as the original submitter on this Issue... or a somewhat different one? The logs you provided from your wget requests just indicate that your nginx proxy server can't reach your collabora container. I'd check your collabora container logs.

phil-lipp commented 1 year ago

Hi @phil-lipp - This looks like a configuration issue. The indication is that the DNS entry for collabora.mydomain.com can't be resolved from within your NC container. Can you check DNS resolution via the container (not from the host itself or your browser?

The thing is that I previously used the richdocumentscode_arm64 Nextcloud app and it stopped working suddenly with the same error, leading me to believe the error is on the richdocuments side...

GitWidi commented 1 year ago

@joshtrichards

Are you getting the exact same error ...

You are right. I got a slightly different error message (see below).

However, it seems that the new version of Collabora (V23.05) still has a problem. I believe that the service will not be registered correctly in the network environment. In the case of the orginial submitter (@phil-lipp), this results in the machine not being known in the DNS. At my Docker environment, the nginxproxy doesn't quite know what to do with these packets - and waits for any feedback.

My solution: go back to the old version (22.05) and check new versions from time to time - maybe sometime it will work it again.

[richdocuments] Error: GuzzleHttp\Exception\ConnectException: cURL error 28: Operation timed out after 45000 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office-test.fwidmann.net/hosting/capabilities at <<closure>>

 0. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 158
    GuzzleHttp\Handler\CurlFactory::createRejection("*** sensitive parameters replaced ***")
 1. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 110
    GuzzleHttp\Handler\CurlFactory::finishError(["GuzzleHttp\\Handler\\CurlHandler"], "*** sensitive parameters replaced ***", ["GuzzleHttp\\Handler\\CurlFactory"])
 2. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php line 47
    GuzzleHttp\Handler\CurlFactory::finish(["GuzzleHttp\\Handler\\CurlHandler"], "*** sensitive parameters replaced ***", ["GuzzleHttp\\Handler\\CurlFactory"])
 3. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Middleware.php line 142
    GuzzleHttp\Handler\CurlHandler->__invoke("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 4. /var/www/html/lib/private/Http/Client/DnsPinMiddleware.php line 114
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
 5. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php line 35
    OC\Http\Client\DnsPinMiddleware->OC\Http\Client\{closure}("*** sensitive parameters replaced ***")
 6. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Middleware.php line 31
    GuzzleHttp\PrepareBodyMiddleware->__invoke("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 7. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php line 71
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
 8. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Middleware.php line 66
    GuzzleHttp\RedirectMiddleware->__invoke("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 9. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/HandlerStack.php line 75
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
10. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Client.php line 333
    GuzzleHttp\HandlerStack->__invoke("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
11. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Client.php line 169
    GuzzleHttp\Client->transfer("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
12. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Client.php line 189
    GuzzleHttp\Client->requestAsync("*** sensitive parameters replaced ***")
13. /var/www/html/lib/private/Http/Client/Client.php line 226
    GuzzleHttp\Client->request("*** sensitive parameters replaced ***", "https://office- ... s", ["/var/www/html/ ... e])
14. /var/www/html/custom_apps/richdocuments/lib/Service/CapabilitiesService.php line 135
    OC\Http\Client\Client->get("https://office- ... s", [45,[true]])
15. /var/www/html/custom_apps/richdocuments/lib/Service/CapabilitiesService.php line 73
    OCA\Richdocuments\Service\CapabilitiesService->refetch()
16. /var/www/html/custom_apps/richdocuments/lib/AppInfo/Application.php line 85
    OCA\Richdocuments\Service\CapabilitiesService->getCapabilities()
17. /var/www/html/lib/private/AppFramework/Bootstrap/FunctionInjector.php line 45
    OCA\Richdocuments\AppInfo\Application->OCA\Richdocuments\AppInfo\{closure}("*** sensitive parameters replaced ***")
18. /var/www/html/lib/private/AppFramework/Bootstrap/BootContext.php line 50
    OC\AppFramework\Bootstrap\FunctionInjector->injectFn(["Closure"])
19. /var/www/html/custom_apps/richdocuments/lib/AppInfo/Application.php line 84
    OC\AppFramework\Bootstrap\BootContext->injectFn(["Closure"])
20. /var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php line 200
    OCA\Richdocuments\AppInfo\Application->boot(["OC\\AppFramewo ... "])
21. /var/www/html/lib/private/App/AppManager.php line 437
    OC\AppFramework\Bootstrap\Coordinator->bootApp("richdocuments")
22. /var/www/html/lib/private/App/AppManager.php line 216
    OC\App\AppManager->loadApp("richdocuments")
23. /var/www/html/lib/private/legacy/OC_App.php line 126
    OC\App\AppManager->loadApps([])
24. /var/www/html/ocs/v1.php line 58
    OC_App::loadApps()
25. /var/www/html/ocs/v2.php line 23
    require_once("/var/www/html/ocs/v1.php")