-
Notifications
You must be signed in to change notification settings - Fork 897
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
Avoid calling $evm.backtrace over DRb to prevent DRb-level mutex locks #14239
Conversation
736e478
to
2b75b68
Compare
Found a bug in the actual line count...need to write a test for it :) |
bb63a49
to
3a8e356
Compare
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.
LGTM
In review with @mkanoor we found that nested methods will only have the first method's name because of where I put the method_name hook. So marking as WIP til I fix that. |
3a8e356
to
7325485
Compare
Moves dynamic method building into DrbRemoteInvoker since it isn't needed at all in MiqAeService. Once in DrbRemoteInvoker, we can use the dynamic preamble to inform the generated ruby method body of things like the number of preamble lines and the name of the method for backtrace filtering purposes.
7325485
to
083117c
Compare
Some comments on commits Fryguy/manageiq@1e30d48~...083117c spec/lib/miq_automation_engine/engine/miq_ae_method_spec.rb
|
Checked commits Fryguy/manageiq@1e30d48~...083117c with ruby 2.2.6, rubocop 0.47.1, and haml-lint 0.20.0 |
Merging, @mkanoor gave verbal approval to this change yesterday 👍 |
👍 |
We previously tried to upgrade to 2.3.6 on euwe by backporting: ManageIQ#15993 This was causing a hang in the automation test suite on euwe and we reverted it in: ManageIQ#16087 https://bugzilla.redhat.com/show_bug.cgi?id=1560578 The prior 2 commits contain a manual backport of ManageIQ#14239 which solves the 100% cpu hang of the automate ruby method with ruby 2.3.2+.
Moves dynamic method building into DrbRemoteInvoker since it isn't
needed at all in MiqAeService. Once in DrbRemoteInvoker, we can use
the dynamic preamble to inform the generated ruby method body of things
like the number of preamble lines and the name of the method for
backtrace filtering purposes.
Note, moving this method into
DrbRemoteInvoker
allows us to run it in the launched automate ruby process directly and not over DRb. The latter was causing random DRb thread issues when the ruby method exited or raised an exception.@mkanoor Please review
Paired with @jrafanie on this one, which he originally noticed in #13104 .