Skip to content

Avoid lots of uncessary exceptions during layout XML merge loading #37570

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

Open
wants to merge 7 commits into
base: 2.4-develop
Choose a base branch
from

Conversation

amenk
Copy link
Contributor

@amenk amenk commented Jun 2, 2023

Description

  • Introduce a new function (for B/C compat we don't overwrite the protected _loadXmlString) to load and not throw an exception
  • Use it in extract handlers -> no need to catch the exception any more

Related Pull Requests

See also: justbetter/magento2-sentry#113

Fixed Issues (if relevant)

No magento issue created.

Manual testing scenarios (*)

  1. Install the sentry plugin
  2. Have some invalid XML there
  3. Exception is reported, even it is not necessary

Reason

When using tools like Sentry, because of there inner workings, such exceptions still might be reported. While this is not exactly the root cause, it's always cleaner to not throw an exception and immediately catch it, if invalid cases can happen often.

This might even improve performance a bit and improves developer's experience.

Remarks

There seems some invalid XML at that place in the code happen quite often - it might be also interesting to check if that can be avoided.

This is a simple, trivial change to the code and should not break anything, so hopefully this can get triaged quickly and without to much back-and-forth about the testing procedure :-)

Contribution checklist (*)

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • [not applicable] All new or changed code is covered with unit/integration tests (if applicable)
  • [not applicable] README.md files for modified modules are updated and included in the pull request if any README.md predefined sections require an update
  • [waiting] All automated tests passed successfully (all builds are green)

Resolved issues:

  1. resolves [Issue] Avoid lots of uncessary exceptions during layout XML merge loading #39877: Avoid lots of uncessary exceptions during layout XML merge loading

* Introduce a new function (for B/C compat we don't overwrite the protected _loadXmlString) to load and not throw an exception
* Use it in extract handlers -> no need to catch the exception any more

Reason:

When using tools like Sentry, because of there inner workings, such exceptions still might be reported.
While this is not exactly the root cause, it's always cleaner to not throw an exception and immediately catch it, if invalid cases can happen often.

This might even improve performance a bit and improves developer's experience.
@m2-assistant
Copy link

m2-assistant bot commented Jun 2, 2023

Hi @amenk. Thank you for your contribution!
Here are some useful tips on how you can test your changes using Magento test environment.

Add the comment under your pull request to deploy test or vanilla Magento instance:
  • @magento give me test instance - deploy test instance based on PR changes
  • @magento give me 2.4-develop instance - deploy vanilla Magento instance

❗ Automated tests can be triggered manually with an appropriate comment:

  • @magento run all tests - run or re-run all required tests against the PR changes
  • @magento run <test-build(s)> - run or re-run specific test build(s)
    For example: @magento run Unit Tests

<test-build(s)> is a comma-separated list of build names.

Allowed build names are:
  1. Database Compare
  2. Functional Tests CE
  3. Functional Tests EE
  4. Functional Tests B2B
  5. Integration Tests
  6. Magento Health Index
  7. Sample Data Tests CE
  8. Sample Data Tests EE
  9. Sample Data Tests B2B
  10. Static Tests
  11. Unit Tests
  12. WebAPI Tests
  13. Semantic Version Checker

You can find more information about the builds here
ℹ️ Run only required test builds during development. Run all test builds before sending your pull request for review.


For more details, review the Code Contributions documentation.
Join Magento Community Engineering Slack and ask your questions in #github channel.

@amenk
Copy link
Contributor Author

amenk commented Jun 5, 2023

@magento run all tests

@magento-automated-testing
Copy link

The requested builds are added to the queue. You should be able to see them here within a few minutes. Please message the #magento-devops slack channel if they don't show in a reasonable amount of time and a representative will look into any issues.

@engcom-Hotel engcom-Hotel added the Priority: P3 May be fixed according to the position in the backlog. label Jun 6, 2023
@engcom-Charlie engcom-Charlie added the Project: Community Picked PRs upvoted by the community label Apr 10, 2025
@engcom-Charlie engcom-Charlie moved this to Pending Review in Community Dashboard Apr 10, 2025
@engcom-Bravo engcom-Bravo added the Triage: Dev.Experience Issue related to Developer Experience and needs help with Triage to Confirm or Reject it label Apr 10, 2025
@engcom-Hotel
Copy link
Contributor

@magento run all tests

Copy link
Contributor

@engcom-Hotel engcom-Hotel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @amenk,

Thanks for the contribution!

Please fix the failed static test and also let us know if we can reproduce this original issue without using any 3rd party extensions.

Also please let us know which kind of exceptions are not generating after this fix.

Thanks

@amenk
Copy link
Contributor Author

amenk commented Apr 25, 2025

Almost two years later I am a bit out of context of this.

The issue was mostly visible with the sentry plugin.

Feel free to take over and fix the static tests ... :-) Thank you!

@engcom-Hotel engcom-Hotel moved this from Review in Progress to Changes Requested in Community Dashboard Apr 28, 2025
@engcom-Dash engcom-Dash self-assigned this Apr 29, 2025
@engcom-Dash
Copy link
Contributor

Hi @amenk ,

We attempted to reproduce the exception in Magento by applying some code level tweaks.

We observed that $this->updates[] property used in extractHandlers() method was consistently returning empty array[]. This is because initially it is set as empty and not getting updated anywhere prior to the extractHandlers() call.

To simulate the issue we pushed some invalid xml into $this->updates[] and verified the behaviour against the changes introduced in the PR.

On Magento 2.4-develop (Before applying the PR changes) We encountered the following exception:

image

After PR changes there were no exceptions were observed.

However, since _loadXmlString is invoked in multiple places in the file, there is possibility that similar exception could arise in other scenarios in the future.

However changes in the PR looks good to avoid the unnecessary exceptions during xml merge loading hence we can proceed with the PR. I am taking care of the failing static test cases.

Thank you!

@engcom-Dash
Copy link
Contributor

@magento run all tests

@engcom-Dash
Copy link
Contributor

@magento create issue

@engcom-Dash
Copy link
Contributor

@engcom-Hotel I have fixed static test cases. Could you please review it?

Thanks

Copy link
Contributor

@engcom-Hotel engcom-Hotel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @engcom-Dash,

Please refer to the below review comments.

Thanks

@engcom-Hotel engcom-Hotel moved this from Review in Progress to Changes Requested in Community Dashboard May 2, 2025
@engcom-Dash
Copy link
Contributor

@magento run all tests

@engcom-Dash
Copy link
Contributor

@engcom-Hotel suggested changes has been made hence moving this back to pending review. could you please reviwe it once ?

@engcom-Hotel
Copy link
Contributor

@magento run all tests

@ct-prd-projects-boards-automation ct-prd-projects-boards-automation bot moved this from Review in Progress to Ready for Testing in Community Dashboard May 5, 2025
@engcom-Dash engcom-Dash moved this from Ready for Testing to Testing in Progress in Community Dashboard May 5, 2025
@engcom-Dash
Copy link
Contributor

@magento run all tests

@engcom-Dash
Copy link
Contributor

@amenk Thank you for the contirbution & collaboration!

✔️ QA Passed

Preconditions:
Install fresh magento 2.4-develop

Steps to reproduce:
Please refer comment #37570 (comment)

Before: ❌

Screenshot 2025-05-05 at 2 33 12 PM

After: ✔️

No warnings & error were logged/observed after switching to the PR Branch.

Build is Green hence moving this PR in Merge in Progress

image

@engcom-Dash engcom-Dash moved this from Testing in Progress to Merge in Progress in Community Dashboard May 5, 2025
@amenk
Copy link
Contributor Author

amenk commented May 5, 2025

@engcom-Dash Thank you for finalizing this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: P3 May be fixed according to the position in the backlog. Progress: ready for testing Project: Community Picked PRs upvoted by the community Triage: Dev.Experience Issue related to Developer Experience and needs help with Triage to Confirm or Reject it
Projects
Status: Merge in Progress
Development

Successfully merging this pull request may close these issues.

[Issue] Avoid lots of uncessary exceptions during layout XML merge loading
5 participants