Skip to content

[EventDispatcher] Unwrap wrapped listeners internally #29305

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

Merged
merged 1 commit into from
Nov 26, 2018
Merged

[EventDispatcher] Unwrap wrapped listeners internally #29305

merged 1 commit into from
Nov 26, 2018

Conversation

ro0NL
Copy link
Contributor

@ro0NL ro0NL commented Nov 24, 2018

Q A
Branch? 3.4
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets partially #24275
License MIT
Doc PR symfony/symfony-docs#...

I believe what happens is we re-register the listeners on the wrapped dispatcher, so in case of sub request we get those and wrap it again. The profiler seems to confirm this in case of an exception (default 404 here) and thus creates a sub-request.

Before: (main request)

No exception: (OK)

image

Exception: (KO)

image

After (main request):

No exception: same

Exception: (OK)

image

I haven't furhter investigated if we should split events per request as done in #23659 for logs. It seems somewhere we deduplicate events.. so im not sure the profiler actually shows correct data.

@chalasr chalasr added this to the 3.4 milestone Nov 24, 2018
@ro0NL
Copy link
Contributor Author

ro0NL commented Nov 25, 2018

I confirm the profiler deduplicates events. Ill try to take another stab at it in master to fully close #24275

@fabpot
Copy link
Member

fabpot commented Nov 26, 2018

Thank you @ro0NL.

@fabpot fabpot merged commit 448e2e2 into symfony:3.4 Nov 26, 2018
fabpot added a commit that referenced this pull request Nov 26, 2018
This PR was merged into the 3.4 branch.

Discussion
----------

[EventDispatcher] Unwrap wrapped listeners internally

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | partially #24275
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

I believe what happens is we re-register the listeners on the wrapped dispatcher, so in case of sub request we get those and wrap it again. The profiler seems to confirm this in case of an exception (default 404 here) and thus creates a sub-request.

## Before: (main request)

No exception: (OK)

![image](https://user-images.githubusercontent.com/1047696/48968597-295ec180-eff2-11e8-982c-756e9019e107.png)

Exception: (KO)

![image](https://user-images.githubusercontent.com/1047696/48968612-4abfad80-eff2-11e8-8556-37bfbd51bc3b.png)

## After (main request):

No exception: same

Exception: (OK)

![image](https://user-images.githubusercontent.com/1047696/48968636-9f632880-eff2-11e8-983e-b4099133600b.png)

I haven't furhter investigated if we should split events per request as done in #23659 for logs. It seems somewhere we deduplicate events.. so im not sure the profiler actually shows correct data.

Commits
-------

448e2e2 [EventDispatcher] Unwrap wrapped listeners internally
@ro0NL ro0NL deleted the event branch November 26, 2018 07:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants