-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[HttpKernel] DumpDataCollector: do not flush when a dumper is provided #26675
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
[HttpKernel] DumpDataCollector: do not flush when a dumper is provided #26675
Conversation
@@ -131,6 +131,7 @@ public function dump(Data $data) | |||
|
|||
if ($this->dumper) { | |||
$this->doDump($data, $name, $file, $line); | |||
$this->isCollected = true; |
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.
Instead we could tweak https://github.com/symfony/symfony/pull/26675/files#diff-b043f95afd7daa1be0bdd864620c510dR70 to check if $this->dumper
is set. But I find it more expressive as is. Let me know.
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.
if we can achieve the same without mutating any state, that may be better?
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.
if we can achieve the same without mutating any state, that may be better?
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.
Alright
Thank you @ogizanagi. |
… is provided (ogizanagi) This PR was merged into the 2.7 branch. Discussion ---------- [HttpKernel] DumpDataCollector: do not flush when a dumper is provided | Q | A | ------------- | --- | Branch? | 2.7 <!-- see below --> | Bug fix? | yes | New feature? | no <!-- don't forget to update src/**/CHANGELOG.md files --> | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | https://github.com/ogizanagi/symfony/blob/3db14045d41eecf78e3557c2d64f28fe27ed3a66/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php#L208-L209 <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | N/A This explains [the workaround I initially used](https://github.com/ogizanagi/symfony/blob/3db14045d41eecf78e3557c2d64f28fe27ed3a66/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php#L208-L209) in the server dumper PR original code. I might be wrong on the intent, but as soon as a dumper is provided (e.g by setting `debug.dump_destination: php://stderr`), I think there is no need to set the `DumpDataCollector::$isCollected` flag to `false` as we explicitly ask for the dump to be output directly somewhere. So ne need to output again on `__destruct`. Spotted by running tests on the `symfony/demo` with the server dumper enabled: dumps were output twice. Once on the server, once at the end of the tests. But this can be easily seen as well by using `debug.dump_destination: php://stderr` on `test` env: ```diff diff --git a/src/Controller/BlogController.php b/src/Controller/BlogController.php index e3e30aa..bf9744e 100644 --- a/src/Controller/BlogController.php +++ b/src/Controller/BlogController.php @@ -50,6 +50,7 @@ class BlogController extends AbstractController */ public function index(int $page, string $_format, PostRepository $posts): Response { + dump(get_class($posts)); $latestPosts = $posts->findLatest($page); // Every template name also has two extensions that specify the format and ``` ### Before ```sh vendor/bin/simple-phpunit --filter=BlogControllerTest::testIndex PHPUnit 6.5.7 by Sebastian Bergmann and contributors. Testing Project Test Suite BlogController.php on line 53: "App\Repository\PostRepository" . 1 / 1 (100%) Time: 3.34 seconds, Memory: 44.25MB OK (1 test, 1 assertion) BlogController.php on line 53: "App\Repository\PostRepository" ``` ### After ```sh vendor/bin/simple-phpunit --filter=BlogControllerTest::testIndex PHPUnit 6.5.7 by Sebastian Bergmann and contributors. Testing Project Test Suite BlogController.php on line 53: "App\Repository\PostRepository" . 1 / 1 (100%) Time: 731 ms, Memory: 28.00MB OK (1 test, 1 assertion) ``` Commits ------- 11a0392 [HttpKernel] DumpDataCollector: do not flush when a dumper is provided
This explains the workaround I initially used in the server dumper PR original code.
I might be wrong on the intent, but as soon as a dumper is provided (e.g by setting
debug.dump_destination: php://stderr
), I think there is no need to set theDumpDataCollector::$isCollected
flag tofalse
as we explicitly ask for the dump to be output directly somewhere. So ne need to output again on__destruct
.Spotted by running tests on the
symfony/demo
with the server dumper enabled: dumps were output twice. Once on the server, once at the end of the tests.But this can be easily seen as well by using
debug.dump_destination: php://stderr
ontest
env:Before
After