-
Notifications
You must be signed in to change notification settings - Fork 354
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix crash on continue in missing package dialog #5937
Fix crash on continue in missing package dialog #5937
Conversation
Due to the way how exceptions propagate from the Anaconda installation tasks we ended up with a non-critical error exception interrupting the iteration of an important task iteration loop installing the payload. Due to not being handled "deep enough" but instead "bubbling up" to a top level error handler the loop apparently gets interrupted & remaining tasks skipped. This resulted in an unrelated crash ("kernel version list no available") due to all the important installation tasks being skipped, packages not being installed and installation related data not being populated. The end result was that a non-critical error (such as a missing package) would trigger a dialog asking the user to quit or continue - but clicking "continue" would result in a weird crash. So move the error handler check closer to the task execution, to prevent the loop from being interrupted. That way the loop will resume its iteration if "continue" is clicked in the UI. Also convert the non-critical error if it gets raised (user deciding *not* to continue after the non-critical error) to a fatal one. This is necessary, as otherwise the top level error handler would get triggered, asking the user again to quit or continue. NOTE: Longer term we really should clean this up & have all installation tasks gathered, ordered and executed from a single place. Then all the error handling could be in a single place, making things much simpler. Resolves: INSTALLER-4045 Related: rhbz#2238045 Related: RHEL-57699
NOTE, to easily reproduce the original issue, just create a kickstart like this:
And run the installation with it (by for example injecting it to an updated boot.iso via the local development scripts). |
I'll open a RHEL 10 version of this PR once we are sure this is what we want to do to fix this issue (which is IMHO quite likely :) ). |
/kickstart-test --skip-testtypes whatever |
/build-image --boot.iso |
Images built based on commit 73b412f:
Download the images from the bottom of the job status page. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
I think the dialog showed on "No" is fine. Esp given how simple is the patch. (And how hard was to find it :) )
The failed tests seem all like known flakes. When I run scripts/classify-failures (its latest version from rhinstaller/kickstart-tests#1315) on a folder containing only the failures I am getting:
ie known issues, I guess I think we need to support the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks good to me from the user point of view.
/kickstart-test --testtype smoke |
Thank you very much for fixing this. |
Due to the way how exceptions propagate from the Anaconda installation tasks we ended up with a non-critical error exception interrupting the iteration of an important task iteration loop installing the payload.
Due to not being handled "deep enough" but instead "bubbling up" to a top level error handler the loop apparently gets interrupted & remaining tasks skipped.
This resulted in an unrelated crash ("kernel version list no available") due to all the important installation tasks being skipped, packages not being installed and installation related data not being populated.
The end result was that a non-critical error (such as a missing package) would trigger a dialog asking the user to quit or continue - but clicking "continue" would result in a weird crash.
So move the error handler check closer to the task execution, to prevent the loop from being interrupted. That way the loop will resume its iteration if "continue" is clicked in the UI.
Also convert the non-critical error if it gets raised (user deciding not to continue after the non-critical error) to a fatal one. This is necessary, as otherwise the top level error handler would get triggered, asking the user again to quit or continue.
NOTE: Longer term we really should clean this up & have all installation tasks gathered, ordered and executed from a single place. Then all the error handling could be in a single place, making things much simpler.
Resolves: INSTALLER-4045
Related: rhbz#2238045
Related: RHEL-57699