This PR was merged into the 4.3 branch.
Discussion
----------
[Lock] Fix expired lock not cleaned in ZooKeeper
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | ,p
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #31426
| License | MIT
| Doc PR | NA
Following #32071 for 4.3 branch
context:
When a lock is acquired BUT not as fast as expected, a LockExpiredException is thrown.
Issue is, that the lock is not removed which avoid other process to acquire that lock.
This PR clean state of store when a LockExpiredException is triggered in PDO and ZooKeepeer.
Commits
-------
4f808ef4f4 Fix Expiring lock in PDO and ZooKeeper
* 4.2:
[Cache] replace getNsSeparator by NS_SEPARATOR on AbstractTrait
[Cache] fix versioning with SimpleCacheAdapter
Fix expired lock not cleaned
[HttpFoundation] Fix SA/phpdoc JsonResponse
SimpleCacheAdapter fails to cache any item if a namespace is used
validate composite constraints in all groups
[Serializer] Handle true and false appropriately in CSV encoder
Fix binary operation `+`, `-` or `*` on string
[VarDumper] fix dumping objects that implement __debugInfo()
[Routing] fix absolute url generation when scheme is not known
* 3.4:
Fix expired lock not cleaned
[HttpFoundation] Fix SA/phpdoc JsonResponse
SimpleCacheAdapter fails to cache any item if a namespace is used
validate composite constraints in all groups
[Serializer] Handle true and false appropriately in CSV encoder
Fix binary operation `+`, `-` or `*` on string
[VarDumper] fix dumping objects that implement __debugInfo()
[Routing] fix absolute url generation when scheme is not known
This PR was squashed before being merged into the 4.3 branch (closes#32052).
Discussion
----------
[Messenger] fix AMQP delay queue to be per exchange
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #32050
| License | MIT
| Doc PR |
this makes the delay/retry work when having several exchanges or renaming your exchange.
also the delay setup did not declare the target exchange. so if you only do delayed messages for a connection, auto-setup forgot to actually create the target exchange.
Commits
-------
5bc3364167 [Messenger] fix AMQP delay queue to be per exchange
This PR was merged into the 4.3 branch.
Discussion
----------
[HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #31913
| License | MIT
| Doc PR | -
As spotted in the linked issue, we are missing this type of exception. It's a bug at the contracts level.
Commits
-------
3f167417fb [HttpClient] throw DecodingExceptionInterface when toArray() fails because of content-type error
This PR was merged into the 4.3 branch.
Discussion
----------
[DI] Show the right class autowired when providing a non-existing class
| Q | A
| ------------- | ---
| Branch? 4.3
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #31997 <!-- #-prefixed issue number(s), if any -->
| License | MIT
| Doc PR |none <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/roadmap):
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too).
- Features and deprecations must be submitted against branch 4.4.
- Legacy code removals go to the master branch.
-->
This gets the last current id before the error and pass it to the callback in order to get the right error message.
Commits
-------
fbda90af6e [DI] Show the right class autowired when providing a non-existing class in constructor
This PR was merged into the 4.3 branch.
Discussion
----------
[Messenger] fix delay delivery for non-fanout exchanges
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets |
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
Fixes two bugs and outdated phpdoc:
1. When your exchange is not of type fanout, but direct for example, then delivery of delayed (retrying) messages does not work. This is because the delay logics adds a routing key to message. It was fixed if you have a custom routing key in #31355. But if you have no routing key, it still changed the routing key which means the message will not be delivery from your direct exchange to your queue anymore after being in the delay exchange. For fanout, which is the default, it does not matter because the routing key is ignored.
2. also fix dsn parsing of plain `amqp://` which is a valid URI that parse_url cannot handle when you want to pass all parameters as options
Commits
-------
0f15306d61 [Messenger] fix delay delivery for non-fanout exchanges
This PR was squashed before being merged into the 3.4 branch (closes#32025).
Discussion
----------
SimpleCacheAdapter fails to cache any item if a namespace is used
| Q | A
| ------------- | ---
| Branch? |3.4
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| License | MIT
This is a backport of #32019
The SimpleCacheAdapter extends AdapterTestCase.
When adding a namespace, the AdapterTestCase adds ":" after the namespace:
https://github.com/symfony/symfony/blob/v4.3.1/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php#L37
The namespace is prepended to the cache key.
But in PSR-16, the ":" is a forbidden character.
As a result, the cache key is invalid and cache is not persisted. If you use Psr16Adapter + a namespace, the cache simply does not work.
As per @nicolas-grekas advices, a NS_SEPARATOR const is added to change the namespace separator for the `SimpleCacheAdapter` to "_" (that is compatible with PSR-16).
The first commit of this PR starts with an additional test and no fix (to showcase the problem).
Commits
-------
ffd3469ddf SimpleCacheAdapter fails to cache any item if a namespace is used
This PR was merged into the 4.3 branch.
Discussion
----------
[HttpClient] Don't use CurlHttpClient on Windows when curl.cainfo is not set
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
On Windows, curl has no cabundle configured by default.
Commits
-------
a2960a3318 [HttpClient] Don't use CurlHttpClient on Windows when curl.cainfo is not set
This PR was squashed before being merged into the 3.4 branch (closes#32007).
Discussion
----------
[Serializer] Handle true and false appropriately in CSV encoder
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #27642
| License | MIT
| Doc PR | -
Previously, if `true` was passed in as a value to the CSV encoder then `fputcsv()` would correctly treat it as 1. However, if `false` was passed in, it would be treated as a blank value. `null` would also be treated as a blank value.
This fix makes it consistent so that true and false will map to 1 and 0, while null maps to an empty string.
Commits
-------
89cba00c68 [Serializer] Handle true and false appropriately in CSV encoder
This PR was merged into the 4.3 branch.
Discussion
----------
[Messenger] improve logs
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | no
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets |
| License | MIT
| Doc PR |
The logs are currently very confusing and duplicated:
- When handled sync the uncaught error it logged and displayed by the console / http error handler anyway. Currently it the warning is duplicated and useless:
```
14:26:11 WARNING [messenger] An exception occurred while handling message "{class}": OUCH, THAT HURTS! GO TO MOM!
14:26:11 ERROR [console] Error thrown while running command "{class}". Message: "OUCH, THAT HURTS! GO TO MOM!"
In HandleMessageMiddleware.php line 82:
[Symfony\Component\Messenger\Exception\HandlerFailedException]
OUCH, THAT HURTS! GO TO MOM!
```
- When handling async is was even confusing because the actual error was logged as warning and the retry (which is a good thing) was the error.
```
13:48:15 WARNING [messenger] An exception occurred while handling message "{class}": OUCH, THAT HURTS! GO TO MOM!
13:48:15 ERROR [messenger] Retrying {class} - retry #1.
```
Now it's must clearer and adds even context like the delay:
```
16:20:11 ERROR [messenger] Error thrown while handling message {class}. Dispatching for retry #3 using 4000 ms delay. Error: "OUCH, THAT HURTS! GO TO MOM!"
...
16:20:15 CRITICAL [messenger] Error thrown while handling message {class}. Removing from transport after 3 retries. Error: "OUCH, THAT HURTS! GO TO MOM!"
```
Commits
-------
2ac7027b71 [Messenger] improve logs
This PR was merged into the 3.4 branch.
Discussion
----------
[Routing] fix absolute url generation when scheme is not known
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #25491
| License | MIT
| Doc PR |
This fixes two edge cases in the url generator:
1. when the context scheme is not known (empty) generating an absolute url would return an invalid url starting with `://host/path`. #25491 handled the case when the host is unknown which makes sense. but the way it was done, created this new problem.
2. non-http(s) urls do not require a host. e.g. typical `file:///path` urls. url generator is fixed to be in line with rfc3986
Commits
-------
8e04222976 [Routing] fix absolute url generation when scheme is not known
This PR was merged into the 3.4 branch.
Discussion
----------
[VarDumper] fix dumping objects that implement __debugInfo()
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
Right now it fails if the return value is not an array + it doesn't dump the original details from the object's internals.
Commits
-------
a9d0038ec0 [VarDumper] fix dumping objects that implement __debugInfo()
This PR was squashed before being merged into the 4.3 branch (closes#32014).
Discussion
----------
Do not log or call the proxy function when the locale is the same
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| License | MIT
I was the one creating the PR for logging the change of the locale but ATM I am filled with logs of translator about switching the locale from "en" to "en".. Not sure why.
Commits
-------
31bdfb372c Do not log or call the proxy function when the locale is the same
This PR was merged into the 4.3 branch.
Discussion
----------
[HttpClient] fix closing debug stream prematurely
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #31985
| License | MIT
| Doc PR | -
@ElGecko76 can you please confirm this fixes the issue for you?
I'm not able to reproduce so I can't myself. Thanks.
Commits
-------
21857a1edb [HttpClient] fix closing debug stream prematurely
This PR was merged into the 4.3 branch.
Discussion
----------
Fix sender/recipients in SMTP Envelope
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #31986
| License | MIT
| Doc PR | n/a
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/roadmap):
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too).
- Features and deprecations must be submitted against branch 4.4.
- Legacy code removals go to the master branch.
-->
Commits
-------
7a2f9bf134 fixed sender/recipients in SMTP Envelope