solectrus / hosting

Step-by-stypes guides for installing and hosting Solectrus
9 stars 4 forks source link

Update to 0.15 - ERROR: An HTTP request took too long to complete. #54

Closed nk-henning closed 1 month ago

nk-henning commented 1 month ago

Hello there,

tring to update from 0.14.3. to 0.15 this evening, Console drops the following Error on docker-compose pull && docker-compose up -d

ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information. If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).

I am in LAN-Mode, 80mbps.

Any idea, what´s going on & how to get the latest release runnning?

Thanks a lot. Henning

ledermann commented 1 month ago

Der Einfachheit halber antworte ich auf Deutsch. Die Idee, hier alles auf Englisch abzuhalten, war nicht die beste meiner Ideen - das Publikum kommt doch fast ausschließlich aus dem deutschsprachigen Raum, soweit ich das sehe.

Ich vermute, die Fehlermeldung kommt beim pull. Sie lässt ein temporäres Problem bei GitHub vermuten, dort werden die Docker Images von SOLECTRUS gehostet. Ich denke, dass es zu einem späteren Zeitpunkt klappen wird.

Falls nicht, versuche es mal hiermit, vielleicht ergeben sich damit weitere Hinweise auf die Ursache:

docker-compose --verbose pull

Was genau ist hier der Output?

Ansonsten könntest du, wie in der Fehlermeldung vorgeschlagen, das Timeout erhöhen:

export COMPOSE_HTTP_TIMEOUT=200
docker-compose pull

Falls das helfen sollte, kannst die diese Einstellung auch direkt in die .env schreiben, damit du das beim nächsten Mal nicht mehr manuell angeben musst.

# .env
COMPOSE_HTTP_TIMEOUT=200
....

Beim Googeln nach der Fehlermeldung bin ich übrigens auf #18 gestoßen - ebenfalls von dir ;-)

nk-henning commented 1 month ago

Ok, dann mache ich hier mal auf Deutsch weiter. Es scheint tatsächlich was mit Git gewesen zu sein. Heute Morgen startete alles wie erwartet.... um dann mit einer neuen Fehlerkonstellation abzubrechen. Hier die Ausgabe der Konsole:

docker-compose pull && docker-compose up -d

ERROR: for solectrus_senec-collector_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for solectrus_db_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for solectrus_forecast-collector_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for senec-collector  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for db  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for forecast-collector  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
nk-henning commented 1 month ago

Ich habe das Timeout auf 200 erhöht und das Reporting angeschaltet.

Nun wird´s für mich unleserlich :-)

docker-compose --verbose pull

compose.config.config.find: Using configuration files: ./docker-compose.yml
compose.cli.docker_client.get_client: docker-compose version 1.28.5, build 1bbbad71
docker-py version: 4.4.4
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
compose.cli.docker_client.get_client: Docker base_url: http+docker://localhost
compose.cli.docker_client.get_client: Docker version: Platform={'Name': ''}, Components=[{'Name': 'Engine', 'Version': '20.10.3', 'Details': {'ApiVersion': '1.41', 'Arch': 'amd64', 'BuildTime': '2021-06-18T08:26:10.000000000+00:00', 'Experimental': 'false', 'GitCommit': 'e7f7c95', 'GoVersion': 'go1.15.6', 'KernelVersion': '4.4.59+', 'MinAPIVersion': '1.12', 'Os': 'linux'}}, {'Name': 'containerd', 'Version': 'v1.4.3', 'Details': {'GitCommit': 'b1dc45ec561bd867c4805eee786caab7cc83acae'}}, {'Name': 'runc', 'Version': 'v1.0.0-rc93', 'Details': {'GitCommit': '89783e1862a2cc04647ab15b6e88a0af3d66fac3'}}, {'Name': 'docker-init', 'Version': '0.19.0', 'Details': {'GitCommit': '12b6a20'}}], Version=20.10.3, ApiVersion=1.41, MinAPIVersion=1.12, GitCommit=e7f7c95, GoVersion=go1.15.6, Os=linux, Arch=amd64, KernelVersion=4.4.59+, BuildTime=2021-06-18T08:26:10.000000000+00:00
compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('solectrus_default')
compose.cli.verbose_proxy.proxy_callable: docker inspect_network -> {'Attachable': True,
 'ConfigFrom': {'Network': ''},
 'ConfigOnly': False,
 'Containers': {'270205ef534cbcbc3cf2d5a21b42293a20aee7420f6871efb789e9054aa433aa': {'EndpointID': '1e034b7523eaf9843f0c329d8598bc5358e8545b5c980dce7013027ca322884f',
                                                                                     'IPv4Address': '172.18.0.6/16',
                                                                                     'IPv6Address': '',
                                                                                     'MacAddress': '02:42:ac:12:00:06',
                                                                                     'Name': 'solectrus_senec-collector_1'},
                '308caac8aaf40c871d1ef3ec0793094d0bd9832c1434b57d24c1e80aea659f27': {'EndpointID': '5e2608225139e84f100e95fbe112dedd2ab56b0650978b8e8d3bac22f4111f3d',
                                                                                     'IPv4Address': '172.18.0.2/16',
...
Pulling influxdb           ... 
Pulling db                 ... 
Pulling redis              ... 
Pulling app                ... 
Pulling senec-collector    ... 
Pulling forecast-collector ... 
compose.parallel.feed_queue: Pending: {<Service: redis>, <Service: db>, <Service: senec-collector>, <Service: app>, <Service: forecast-collector>, <Service: influxdb>}
compose.parallel.feed_queue: Starting producer thread for <Service: redis>
compose.cli.verbose_proxy.proxy_callable: docker pull <- ('redis', tag='alpine', stream=True, platform=None)
compose.parallel.feed_queue: Starting producer thread for <Service: db>
compose.cli.verbose_proxy.proxy_callable: docker pull <- ('postgres', tag='14-alpine', stream=True, platform=None)
compose.parallel.feed_queue: Starting producer thread for <Service: senec-collector>
compose.cli.verbose_proxy.proxy_callable: docker pull <- ('ghcr.io/solectrus/senec-collector', tag='latest', stream=True, platform=None)
compose.parallel.feed_queue: Starting producer thread for <Service: app>
compose.cli.verbose_proxy.proxy_callable: docker pull <- ('ghcr.io/solectrus/solectrus', tag='latest', stream=True, platform=None)
compose.parallel.feed_queue: Starting producer thread for <Service: forecast-collector>
compose.cli.verbose_proxy.proxy_callable: docker pull <- ('ghcr.io/solectrus/forecast-collector', tag='latest', stream=True, platform=None)
compose.parallel.feed_queue: Starting producer thread for <Service: influxdb>
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
Pulling senec-collector    ... pulling from solectrus/senec-coll...
compose.cli.verbose_proxy.proxy_callable: docker pull -> <generator object APIClient._stream_helper at 0x7fb6afb84a50>
Pulling app                ... pulling from solectrus/solectrus
compose.parallel.feed_queue: Pending: set()
compose.cli.verbose_proxy.proxy_callable: docker pull -> <generator object APIClient._stream_helper at 0x7fb6afb84050>
Pulling redis              ... pulling from library/redis
compose.parallel.feed_queue: Pending: set()
Pulling db                 ... pulling from library/postgres
compose.cli.verbose_proxy.proxy_callable: docker pull -> <generator object APIClient._stream_helper at 0x7fb6afabba50>
Pulling forecast-collector ... status: image is up to date for g...
compose.parallel.feed_queue: Pending: set()
Pulling senec-collector    ... status: image is up to date for g...
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
Pulling forecast-collector ... done
Pulling app                ... status: image is up to date for g...
compose.parallel.feed_queue: Pending: set()
Pulling senec-collector    ... done
compose.parallel.parallel_execute_iter: Finished processing: <Service: senec-collector>
Pulling app                ... done
Pulling db                 ... status: image is up to date for p...
compose.parallel.parallel_execute_iter: Finished processing: <Service: app>
Pulling redis              ... done
Pulling db                 ... done
compose.parallel.feed_queue: Pending: set()
compose.parallel.parallel_execute_iter: Finished processing: <Service: redis>
compose.parallel.feed_queue: Pending: set()
compose.parallel.parallel_execute_iter: Finished processing: <Service: db>
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
Pulling influxdb           ... pulling from library/influxdb
compose.parallel.feed_queue: Pending: set()
Pulling influxdb           ... status: image is up to date for i...
Pulling influxdb           ... done
compose.cli.verbose_proxy.proxy_callable: docker pull -> <generator object APIClient._stream_helper at 0x7fb6afb84050>
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.parallel_execute_iter: Finished processing: <Service: influxdb>
compose.parallel.feed_queue: Pending: set()
root@DiskStationNK:/volume1/docker/solectrus# docker-compose up -d
Removing solectrus_senec-collector_1
solectrus_db_1 is up-to-date
solectrus_redis_1 is up-to-date
solectrus_influxdb_1 is up-to-date
solectrus_forecast-collector_1 is up-to-date
Recreating dcdcb773e60b_solectrus_senec-collector_1 ... done
Recreating solectrus_app_1                          ... done

Aber es scheint geklappt zu haben. ich passe mal den Eintrag in der .env an. :-D

ledermann commented 1 month ago

Super, das scheint wirklich geklappt zu haben. Es lag also am Timeout, warum auch immer. Der Eintrag in der .env ist sicherlich sinnvoll.

Deine Docker-Version 20.10.3 ist übrigens bereits über drei Jahre alt, möglicherweise ist das auch mit Ursache für die Probleme.

In #18 hast du geschrieben, dass du eine "Synology DiscStation DS 718+" hat. Ich vermute, dass darauf noch DSM 6.x läuft. Wenn die Doku bei Synology richtig interpretiere, sollte ein Update auf das aktuelle DSM 7.2 möglich sein, auch wenn man es wohl manuell installieren muss. Das neue DSM enthält dann auch eine neuere Version von Docker.

Ob man ein solches Update auf einer alten DiscStation riskieren will, ist natürlich eine andere Frage. Auf meiner Synology (DS220+, also etwa jünger) waren solche Updates aber immer vollkommen problemlos.