How to fix asyncio.TimeoutError during repository synchronization
Environment
- Red Hat Satellite 6.10
Issue
- During repository synchronization, an error like the following occurs in the Dynflow
Actions::Pulp3::Repository::Syncaction output:
---
pulp_tasks:
...
error:
traceback: |2
File "/usr/lib/python3.6/site-packages/pulpcore/tasking/pulpcore_worker.py", line 272, in _perform_task
result = func(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/pulp_rpm/app/tasks/synchronizing.py", line 489, in synchronize
version = dv.create()
File "/usr/lib/python3.6/site-packages/pulpcore/plugin/stages/declarative_version.py", line 151, in create
loop.run_until_complete(pipeline)
File "/usr/lib64/python3.6/asyncio/base_events.py", line 484, in run_until_complete
return future.result()
File "/usr/lib/python3.6/site-packages/pulpcore/plugin/stages/api.py", line 225, in create_pipeline
await asyncio.gather(*futures)
File "/usr/lib/python3.6/site-packages/pulpcore/plugin/stages/api.py", line 43, in __call__
await self.run()
File "/usr/lib/python3.6/site-packages/pulpcore/plugin/stages/artifact_stages.py", line 174, in run
pb.done += task.result() # download_count
File "/usr/lib/python3.6/site-packages/pulpcore/plugin/stages/artifact_stages.py", line 200, in _handle_content_unit
await asyncio.gather(*downloaders_for_content)
File "/usr/lib/python3.6/site-packages/pulpcore/plugin/stages/models.py", line 89, in download
download_result = await downloader.run(extra_data=self.extra_data)
File "/usr/lib/python3.6/site-packages/pulpcore/download/http.py", line 258, in run
return await download_wrapper()
File "/usr/lib/python3.6/site-packages/backoff/_async.py", line 133, in retry
ret = await target(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/pulpcore/download/http.py", line 256, in download_wrapper
return await self._run(extra_data=extra_data)
File "/usr/lib/python3.6/site-packages/pulp_rpm/app/downloaders.py", line 98, in _run
to_return = await self._handle_response(response)
File "/usr/lib/python3.6/site-packages/pulpcore/download/http.py", line 210, in _handle_response
chunk = await response.content.read(1048576) # 1 megabyte
File "/usr/lib64/python3.6/site-packages/aiohttp/streams.py", line 380, in read
await self._wait("read")
File "/usr/lib64/python3.6/site-packages/aiohttp/streams.py", line 306, in _wait
await waiter
File "/usr/lib64/python3.6/site-packages/aiohttp/helpers.py", line 656, in __exit__
raise asyncio.TimeoutError from None
description: ''
worker: "/pulp/api/v3/workers/ebd061c1-cf7d-4b30-811c-a9d97630ee9f/"
...
Resolution
-
To fix the issue, try changing the Sync Connection Timeout to a higher value, such as 600 seconds.
-
To find the setting, first navigate to Administer > Settings using the bar on the left. Then, click on the Content tab. Sync Connection Timeout will be among the settings below.
For more KB articles/solutions related to Red Hat Satellite 6.x Repository Issues, please refer to the Red Hat Satellite Consolidated Troubleshooting Article for Red Hat Satellite 6.x Repository Issues.
Root Cause
-
During repository synchronization, if a request from the Satellite to the upstream repository takes longer than the Sync Connection Timeout time, then there will be an error and the synchronization will fail.
-
Some network configurations cause Satellite to require more time to complete an upstream repository connection than others. The presence of HTTP proxies could be one possible reason, for example.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.