Conversation
❌ ErrorsYour PR has failed checks. Please review the issues below and take necessary action before merging. 🚦 5 Pipeline jobs failed
ℹ️ InfoNo other issues found (see more)❄️ No new flaky tests detected 🎯 Code Coverage (details) Useful? React with 👍 / 👎 This comment will be updated automatically if new data arrives.🔗 Commit SHA: a0a383c | Docs | View more details | Give us feedback! |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5df4f429e0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| $currentSize = (int) @filesize($errorLog); | ||
| if ($currentSize < $this->errorLogSize) { |
There was a problem hiding this comment.
Detect log replacement independently of file size
When the log is truncated or rotated and the replacement grows to at least the previous offset before the next check, this size-only condition does not reset the cursor. file_get_contents() then starts partway through the new file, so an error marker near its beginning can be skipped and the associated test can incorrectly pass. Track the file identity or otherwise detect replacement/truncation rather than relying solely on currentSize < errorLogSize.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
@cgcote This is a proper issue, and a mere size check isn't enough for that.
A retry might abort earlier, the successful run run for longer.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5df4f429e0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
/gitlab retry-pipeline |
|
View all feedbacks in Devflow UI.
All failed jobs have been retried successfully. The following job IDs have been retried: 2102078658, 2102078822, 2102079357, 2102079579 |
|
/gitlab retry-pipeline |
|
View all feedbacks in Devflow UI.
All failed jobs have been retried successfully. The following job IDs have been retried: |
A size-only comparison misses a rotated/replaced error log whose replacement has already grown to at least the previous offset, causing checkErrors() to skip entries at the beginning of the new file. Track the log's inode in addition to its size and reset the cursor whenever either changes.
Summary
Root cause
WebServer::checkErrors()always read from the offset captured when the server started, but never advanced that offset. A single transient error was therefore reported by every retry and every subsequent test sharing the server. In Symfony 6.2, this amplified one error into synchronized failures across the four automated login-event tests.CI Visibility evidence
Aggregated default-branch data for the previous 14 days showed 416 Symfony 6.2 known-flaky failures across 8 commits:
testLoggedInCalls: 104 failurestestUserLoginFailureEvent: 104 failurestestUserLoginSuccessEvent: 104 failurestestUserSignUp: 104 failuresEach affected commit had the same failure count for all four tests. The failures spanned every PHP 8.3 web-server SAPI (148
apache2handler, 128cgi-fcgi, and 140cli-server) and shared theGot error from webserver:signature atWebFrameworkTestCase.php:74. This synchronized shape supports a shared harness-state problem rather than four independent Symfony assertions.The same signature also appeared at much lower volume in Swoole (68 events) and FrankenPHP (6 events), confirming that the underlying behavior is generic to the web-server harness and is simply most visible in Symfony.
CI Visibility for this PR reports all instrumented tests passing, no new flaky tests, 100% patch coverage, and no code-quality or security findings.
Validation
Red before / green after
The same deterministic PHP 8.3 check was run against the committed pre-fix implementation and this change:
Tests
cli-server,cgi-fcgi, andapache2handlergit diff --checkpassed