filesystem: double probert timeout when running os-prober

We know that running os-prober on some systems is slow, potentially very
slow, especially when multiple removable devices are present.

This results in many bug reports showing "block probing crashed with
TimeoutError".

For now, I suggest we double the probert timeout when os-prober is
involved.

Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This commit is contained in:
Olivier Gayot 2024-01-17 14:51:17 +01:00
parent 753ce9f701
commit 3d914e9e30
1 changed files with 6 additions and 1 deletions

View File

@ -1271,6 +1271,11 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
(False, ErrorReportKind.BLOCK_PROBE_FAIL, "block"), (False, ErrorReportKind.BLOCK_PROBE_FAIL, "block"),
(True, ErrorReportKind.DISK_PROBE_FAIL, "disk"), (True, ErrorReportKind.DISK_PROBE_FAIL, "disk"),
]: ]:
probert_timeout = 90.0
if self.app.opts.use_os_prober:
# We know that os-prober is going to be (very) slow on some
# systems, let's give probert more time.
probert_timeout *= 2
try: try:
start = time.time() start = time.time()
await self._probe_once_task.start( await self._probe_once_task.start(
@ -1279,7 +1284,7 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
# We wait on the task directly here, not # We wait on the task directly here, not
# self._probe_once_task.wait as if _probe_once_task # self._probe_once_task.wait as if _probe_once_task
# gets cancelled, we should be cancelled too. # gets cancelled, we should be cancelled too.
await asyncio.wait_for(self._probe_once_task.task, 90.0) await asyncio.wait_for(self._probe_once_task.task, probert_timeout)
except asyncio.CancelledError: except asyncio.CancelledError:
# asyncio.CancelledError is a subclass of Exception in # asyncio.CancelledError is a subclass of Exception in
# Python 3.6 (sadface) # Python 3.6 (sadface)