1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-10-02 09:10:11 +02:00

build: close ssh_channel upon timeout

The build can get stuck when running into the timeout and paramiko not
noticing it. This can be reproduced by setting a small build timeout for
an app. I tried setting set_keepalive() but it did not help. This
forcefully closes the ssh channel to the VM so the fdroid build will
continue. As we destroy the VM in the next step anyhow I think this is
fine.
This commit is contained in:
Jochen Sprickerhof 2023-02-02 14:58:02 +01:00 committed by Hans-Christoph Steiner
parent 5e08187567
commit a6700e65ed

View File

@ -49,6 +49,7 @@ except ImportError:
pass
buildserverid = None
ssh_channel = None
# Note that 'force' here also implies test mode.
@ -68,7 +69,7 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
target folder for the build result
force
"""
global buildserverid
global buildserverid, ssh_channel
try:
paramiko
@ -892,6 +893,8 @@ def force_halt_build(timeout):
"""Halt the currently running Vagrant VM, to be called from a Timer."""
logging.error(_('Force halting build after {0} sec timeout!').format(timeout))
timeout_event.set()
if ssh_channel:
ssh_channel.close()
vm = vmtools.get_build_vm('builder')
vm.destroy()