← Back to issue list

Make store downloads more robust

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1671817
Type
issue
State
closed
Author
~sergiusens
Labels
—
Created
Updated
Closed

Current evaluation

Connection resets during store snap downloads were fixed by adding a configurable retry class for GETs; PR #1212 merged as commit c6bf989ae ("store: better retry strategy for GETs"), following earlier retries in #1184.

Resolution: closed resolved

Reason: Maintainer sergiusens linked PR #1212 as the fix; it merged as commit c6bf989ae, replacing the ad-hoc GET retry logic with a configurable, status-code-aware retry class. Related prerequisite retry work landed earlier in commit 473dd5e7d (#1184).

Evaluated by: mr-cal-bot

No scores available.

Issue body

We constantly get reset by the peer which slows down our development and makes for an unhappy user as well: ====================================================================== ERROR: test_classic_confinement (test_stage.StageTestCase) test_stage.StageTestCase.test_classic_confinement ---------------------------------------------------------------------- testtools.testresult.real._StringException: output: {{{ Starting snapcraft devel from /home/travis/build/snapcore/snapcraft/snapcraft. Setting up part 'hello' with plugin 'make' and properties {'snap': [], 'prime': [], 'plugin': 'make', 'stage': []}. Getting details for core Starting new HTTPS connection (1): search.apps.ubuntu.com "GET /api/v1/snaps/details/core?fields=status%2Canon_download_url%2Cdownload_url%2Cdownload_sha3_384%2Cdownload_sha512%2Csnap_id%2Crevision%2Crelease&channel=stable HTTP/1.1" 200 992 Downloading core Starting new HTTPS connection (1): public.apps.ubuntu.com "GET /anon/download-snap/99T7MUlRhtI3U0QFgl5mXXESAiSwt776_1337.snap HTTP/1.1" 302 0 Starting new HTTPS connection (1): 068ed04f23.site.internapcdn.net "GET /download-snap/99T7MUlRhtI3U0QFgl5mXXESAiSwt776_1337.snap?t=2017-03-11T12:01:29Z&h=4ddf6b981dd18e366f0c8b1e2584565134b52679 HTTP/1.1" 200 78807040 Downloading 'core.snap' 0% Downloading 'core.snap' 1% Downloading 'core.snap' 2% Downloading 'core.snap' 3% Downloading 'core.snap' 4% Downloading 'core.snap' 5% Downloading 'core.snap' 6% Downloading 'core.snap' 7% Downloading 'core.snap' 8% Downloading 'core.snap' 9% Downloading 'core.snap' 10% Downloading 'core.snap' 11% Downloading 'core.snap' 12% Traceback (most recent call last): File "/usr/local/lib/python3.5/dist-packages/requests/packages/urllib3/response.py", line 226, in _error_catcher yield File "/usr/local/lib/python3.5/dist-packages/requests/packages/urllib3/response.py", line 301, in read data = self._fp.read(amt) File "/usr/lib/python3.5/http/client.py", line 448, in read n = self.readinto(b) File "/usr/lib/python3.5/http/client.py", line 488, in readinto n = self.fp.readinto(b) File "/usr/lib/python3.5/socket.py", line 575, in readinto return self._sock.recv_into(b) File "/usr/lib/python3.5/ssl.py", line 929, in recv_into return self.read(nbytes, buffer) File "/usr/lib/python3.5/ssl.py", line 791, in read return self._sslobj.read(len, buffer) File "/usr/lib/python3.5/ssl.py", line 575, in read v = self._sslobj.read(len, buffer) ConnectionResetError: [Errno 104] Connection reset by peer

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Connection resets during store snap downloads were fixed by adding a configurable retry class for GETs; PR #1212 merged as commit c6bf989ae ("store: better retry strategy for GETs"), following earlier retries in #1184.
stealth/space-bunny-alpha — closed resolved Store download resilience was completed by PR #1212, merged as c6bf989ae, adding configurable, status-code-aware GET retries after earlier work in #1184.
stealth/space-bunny-alpha — closed resolved Store downloads were made resumable by PR #1330 (commit 117c32872), allowing interrupted snap transfers to continue after peer resets.
qwen/qwen3.6-35b-a3b — — Requests to make store downloads more robust against connection resets were closed without resolution. No fix was implemented, and the request appears abandoned due to inactivity.
qwen/qwen3.6-35b-a3b — — Closed without resolution. The request to implement robust error handling for store downloads was abandoned due to inactivity, leaving connection reset failures unaddressed.
qwen/qwen3.6-35b-a3b — — Abandoned. The report detailed ConnectionResetError failures during store downloads disrupting tests. No patches or follow-up comments were provided, and the ticket was closed without resolution.
qwen3.6-35b-a3b-mtp-q6 — — Closed without discussion. Likely superseded or fixed by subsequent code changes that added retry logic and improved connection handling for store downloads.

Update history

Date Change
created

Related work

  • Likely Fixed By: canonical/snapcraft#1212 (confidence 95%)

    Merged PR 'store: better retry strategy for GETs.' (commit c6bf989ae), cited by the reporter as the resolution.

  • Related To: canonical/snapcraft#1184 (confidence 70%)

    Earlier commit 473dd5e7d 'store: enable retries for store calls' introduced initial retry support for the same problem.

  • Related To: canonical/snapcraft#2094 (confidence 35%)

    Later commit 0d8602cc5 further improved storeapi handling of network errors and retries.

Related issues

Issue Project State Summary Similarity
#1184 store: enable retries for store calls. snapcraft merged Merged PR #1184 as 473dd5e7d, adding retry handling for store calls so transient connection resets are retried up to five times.
78%
#1212 store: better retry strategy for GETs. snapcraft merged Merged in canonical/snapcraft#1212 (c6bf989ae), replacing GET retry logic with a configurable, status-code-aware retry class for LP #1671817.
73%