From 6dde0ea0c9cbd8f1b80f2354e1967e8f9eb9691d Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Mar 12 2019 01:34:13 +0000 Subject: Fix #1674045 workaround for bootloader case The initial implementation here has a problem if we spot the 'successful' screen briefly, then the system reboots normally, reaches the bootloader and proceeds past it all within 10 seconds; in this case we'll never actually spot the bootloader and do our stuff. This tweak should continue through the code block immediately if the bootloader shows up during the ten seconds, otherwise check again for the 'successful' screen and reboot. Signed-off-by: Adam Williamson --- diff --git a/lib/utils.pm b/lib/utils.pm index 3350f20..a7e8a54 100644 --- a/lib/utils.pm +++ b/lib/utils.pm @@ -242,14 +242,16 @@ sub do_bootloader { if (match_has_tag "upgrade_complete") { # this is a workaround for RHBZ #1674045 during upgrades # let's check we didn't just happen to catch it for the - # brief time it's displayed normally... - sleep 10; - if (check_screen "upgrade_complete") { - record_soft_failure "Upgrade hung at end - probably RHBZ #1674045"; - power 'reset'; + # brief time it's displayed normally, and catch the boot + # loader if it shows up + unless (check_screen $boottag, 10) { + if (check_screen "upgrade_complete") { + record_soft_failure "Upgrade hung at end - probably RHBZ #1674045"; + power 'reset'; + } + # now let's just assume we'll get to the bootloader soon + assert_screen $boottag, 60; } - # now let's just assume we'll get to the bootloader soon - assert_screen $boottag, 60; } if ($args{mutex}) { # cancel countdown