1907 Commits

Author SHA1 Message Date
Valentin Nazarov
0ca3038bf0 [Messenger] Add AmqpPriorityStamp for per-message priority on AMQP transport 2026-03-17 17:13:13 +01:00
Nicolas Grekas
b6e678f3a6 [Messenger] Allow configuring the service reset interval in the messenger:consume command via the --no-reset option 2026-03-16 09:53:28 +01:00
Nicolas Grekas
d3c42232c7 [Messenger] Add MessageExecutionStrategyInterface and refactor Worker to use it 2026-03-16 09:25:23 +01:00
Nicolas Grekas
0bbc8f28e8 [Messenger] Add a --fetch-size option to the messenger:consume command to control how many messages are fetched per iteration 2026-03-16 08:45:09 +01:00
Nicolas Grekas
428ba4c94e minor #63566 [Messenger] Make $clock nullable in PostgreSqlNotifyOnIdleListener (nicolas-grekas)
This PR was merged into the 8.1 branch.

Discussion
----------

[Messenger] Make $clock nullable in PostgreSqlNotifyOnIdleListener

| Q             | A
| ------------- | ---
| Branch?       | 8.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Issues        | -
| License       | MIT

This makes conditional wiring easier, as spotted in https://github.com/doctrine/DoctrineBundle/pull/2204

Commits
-------

52e6cd3f1de [Messenger] Make $clock nullable in PostgreSqlNotifyOnIdleListener
2026-03-04 16:08:05 +01:00
Nicolas Grekas
ba21d3d8e6 Merge branch '8.0' into 8.1
* 8.0:
  [HttpKernel] Fix int-to-float coercion for JSON #[MapRequestPayload] with pre-parsed array data
  [Messenger] Flush batch handlers after inactivity timeout when worker is busy
  [PhpUnitBridge] fix tests
  [TypeInfo] Fix StringTypeResolver calling Type::enum() on interfaces extending BackedEnum
  [FrameworkBundle] Remove dead code related to removed XML configuration
  [Mailer] [Mailjet] Fix inline attachments with custom Content-ID.
  [RateLimiter] Ensure hit count is always positive
2026-03-04 16:01:13 +01:00
Nicolas Grekas
bd81abbef2 [Messenger] Make $clock nullable in PostgreSqlNotifyOnIdleListener 2026-03-04 15:29:43 +01:00
Nicolas Grekas
6ba5f08c15 Merge branch '7.4' into 8.0
* 7.4:
  [HttpKernel] Fix int-to-float coercion for JSON #[MapRequestPayload] with pre-parsed array data
  [Messenger] Flush batch handlers after inactivity timeout when worker is busy
  [PhpUnitBridge] fix tests
  [TypeInfo] Fix StringTypeResolver calling Type::enum() on interfaces extending BackedEnum
  [Mailer] [Mailjet] Fix inline attachments with custom Content-ID.
  [RateLimiter] Ensure hit count is always positive
v8.0.7
2026-03-04 14:55:34 +01:00
Nicolas Grekas
13a00f01a4 Merge branch '6.4' into 7.4
* 6.4:
  [HttpKernel] Fix int-to-float coercion for JSON #[MapRequestPayload] with pre-parsed array data
  [Messenger] Flush batch handlers after inactivity timeout when worker is busy
  [PhpUnitBridge] fix tests
  [Mailer] [Mailjet] Fix inline attachments with custom Content-ID.
  [RateLimiter] Ensure hit count is always positive
v7.4.7
2026-03-04 14:54:41 +01:00
Nicolas Grekas
4f37783749 [Messenger] Flush batch handlers after inactivity timeout when worker is busy v6.4.35 2026-03-04 14:20:04 +01:00
Nicolas Grekas
e358f6ebf9 Merge branch '8.0' into 8.1
* 8.0: (26 commits)
  Fix merge
  [RateLimiter] Fix retryAfter when consuming exactly all remaining tokens in FixedWindow and TokenBucket
  [RateLimiter] Fix retryAfter value on last token consume (SlidingWindow)
  [RateLimiter] Fix reservations outside the second fixed window
  [Filesystem] makePathRelative with existing files, remove ending /
  [Config][Routing] Fix exclude option being ignored for non-glob and PSR-4 resources
  [Serializer][Validator] Fix propertyPath in ConstraintViolationListNormalizer with MetadataAwareNameConverter
  [Messenger][Amqp] Don't use retry routing key when sending to failure transport
  [Messenger] Fix re-sending failed messages to a different failure transport
  [DependencyInjection] Fix #[AsTaggedItem] discovery through multi-level decoration chains
  [Config] Fix ArrayShapeGenerator required keys with deep merging
  [Validator] Add a guard when `Parser::IGNORE_UNKNOWN_VARIABLES` is not defined
  [Validator] Correctly handle null `allowedVariables` in `ExpressionSyntaxValidator`
  [DependencyInjection] Fix PriorityTaggedServiceTrait not discovering #[AsTaggedItem] on decorated services
  [Mailer] Clarify the purpose of SentMessage's "message id" concept
  [ObjectMapper] fix nested mapping with class-level transform
  [TwigBridge] Fix Bootstrap 4 form error layout
  [Form] Fix merging POST params and files when collection entries have mismatched indices
  [Validator] Fix type error for non-array items when Unique::fields is set
  [HttpKernel] Fix default locale ignored when Accept-Language has no enabled-locale match
  ...
2026-02-25 18:08:26 +01:00
Nicolas Grekas
4be925bf01 Merge branch '7.4' into 8.0
* 7.4: (25 commits)
  [RateLimiter] Fix retryAfter when consuming exactly all remaining tokens in FixedWindow and TokenBucket
  [RateLimiter] Fix retryAfter value on last token consume (SlidingWindow)
  [RateLimiter] Fix reservations outside the second fixed window
  [Filesystem] makePathRelative with existing files, remove ending /
  [Config][Routing] Fix exclude option being ignored for non-glob and PSR-4 resources
  [Serializer][Validator] Fix propertyPath in ConstraintViolationListNormalizer with MetadataAwareNameConverter
  [Messenger][Amqp] Don't use retry routing key when sending to failure transport
  [Messenger] Fix re-sending failed messages to a different failure transport
  [DependencyInjection] Fix #[AsTaggedItem] discovery through multi-level decoration chains
  [Config] Fix ArrayShapeGenerator required keys with deep merging
  [Validator] Add a guard when `Parser::IGNORE_UNKNOWN_VARIABLES` is not defined
  [Validator] Correctly handle null `allowedVariables` in `ExpressionSyntaxValidator`
  [DependencyInjection] Fix PriorityTaggedServiceTrait not discovering #[AsTaggedItem] on decorated services
  [Mailer] Clarify the purpose of SentMessage's "message id" concept
  [ObjectMapper] fix nested mapping with class-level transform
  [TwigBridge] Fix Bootstrap 4 form error layout
  [Form] Fix merging POST params and files when collection entries have mismatched indices
  [Validator] Fix type error for non-array items when Unique::fields is set
  [HttpKernel] Fix default locale ignored when Accept-Language has no enabled-locale match
  [FrameworkBundle] Make `ConfigDebugCommand` use its container to resolve env vars
  ...
v8.0.6
2026-02-25 17:59:43 +01:00
Nicolas Grekas
9da6166eb9 Merge branch '6.4' into 7.4
* 6.4:
  [RateLimiter] Fix retryAfter when consuming exactly all remaining tokens in FixedWindow and TokenBucket
  [RateLimiter] Fix retryAfter value on last token consume (SlidingWindow)
  [RateLimiter] Fix reservations outside the second fixed window
  [Filesystem] makePathRelative with existing files, remove ending /
  [Config][Routing] Fix exclude option being ignored for non-glob and PSR-4 resources
  [Serializer][Validator] Fix propertyPath in ConstraintViolationListNormalizer with MetadataAwareNameConverter
  [Messenger][Amqp] Don't use retry routing key when sending to failure transport
  [Messenger] Fix re-sending failed messages to a different failure transport
  [DependencyInjection] Fix #[AsTaggedItem] discovery through multi-level decoration chains
  [DependencyInjection] Fix PriorityTaggedServiceTrait not discovering #[AsTaggedItem] on decorated services
  [Mailer] Clarify the purpose of SentMessage's "message id" concept
  [TwigBridge] Fix Bootstrap 4 form error layout
  [Form] Fix merging POST params and files when collection entries have mismatched indices
  [Validator] Fix type error for non-array items when Unique::fields is set
  [HttpKernel] Fix default locale ignored when Accept-Language has no enabled-locale match
  [FrameworkBundle] Make `ConfigDebugCommand` use its container to resolve env vars
  [Console] Fix various completion edge cases
  [Messenger][AmazonSqs] Add test for default queue_name when not set in DSN path or options
v7.4.6
2026-02-25 17:50:00 +01:00
Nicolas Grekas
e40ae4ff54 feature #62888 [Messenger] Route decode failures through failure handling (nicolas-grekas)
This PR was merged into the 8.1 branch.

Discussion
----------

[Messenger] Route decode failures through failure handling

| Q             | A
| ------------- | ---
| Branch?       | 8.1
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Issues        | Fix #44117, also related to #39622
| License       | MIT

Previously, when a transport could not decode a message, `MessageDecodingFailedException` was thrown inside receivers' `get()`, causing the message to be deleted from the queue with no retry or DLQ routing.

This PR routes decode failures through the normal failure-handling path instead of silently losing messages.

This changes a bit the contracts of serializers: they should now return `Envelope<MessageDecodingFailedException>` on decode failure, wrapping the raw encoded envelope. Throwing is still supported for BC with custom serializers - receivers catch and wrap it as a fallback.

A new `DecodeFailedMessageMiddleware` sits early in the default middleware stack (before `failed_message_processing_middleware`). When it encounters an envelope whose message is a `MessageDecodingFailedException`, it:

1. Determines the original transport name to look up the correct serializer.
2. Re-decodes the raw payload; if decoding still fails, the `MessageDecodingFailedException` is thrown so that standard retry/DLQ handling kicks in.
3. If decoding succeeds (e.g. after a deployment that adds the missing class), merges all stamps from the wrapping envelope onto the freshly decoded one and continues through the stack normally.

Receivers no longer delete-then-throw. Instead they yield the wrapped envelope with the same stamps as a successful decode, so `ack()`/`reject()` work correctly downstream. The old catch-and-throw path is kept only as a BC fallback for custom serializers that still throw.

A message that cannot be decoded is therefore no longer lost. It travels through the bus as a `MessageDecodingFailedException`, hits the failure/retry infrastructure like any other failed message, and is automatically retried (triggering `DecodeFailedMessageMiddleware` again) once the serializer or class definition is fixed.

Commits
-------

37c7e90ee72 [Messenger] Route decode failures through failure handling
2026-02-24 19:08:25 +01:00
Barthold Bos
465d8eae41 [Messenger] Fix re-sending failed messages to a different failure transport v6.4.34 2026-02-24 17:00:52 +01:00
Nicolas Grekas
0bfda0137a [Messenger] Route decode failures through failure handling 2026-02-24 16:12:54 +01:00
Nicolas Grekas
8909731b9f [Messenger] Inject ClockInterface into HandleMessageMiddleware/Acknowledger/BatchHandlerTrait 2026-02-22 14:47:19 +01:00
Nicolas Grekas
36b7376e21 Merge branch '8.0' into 8.1
* 8.0:
  [Serializer] Fix handling of constructor enum denormalization errors
  [Console] ProgressIndicator console helper display with multiple processes
  [HttpFoundation] Handle empty session data in updateTimestamp() to fix compat with PHP 8.6
  [Console] Fix arguments set via #[Ask] wrongly considered null in profiler
  [Cache] Wrap `DoctrineDbalAdapter::doSave()` in savepoint to prevent transaction poisoning
  Update security-1.0.xsd with missing oauth2 element
  [Console] Silence shell_exec warning in hasSttyAvailable
  [Validator] Sync validators.pt.xlf
  Minor: Review and finalize Latvian translations for validators
  streamline ini settings in phpunit.xml.dist files
  stop using with*() without expects()
  stop using with*() without expects()
  TypeContextFactory::collectTemplates now also works with @phpstan-template and @psalm-template
2026-02-21 17:40:49 +01:00
Philipp Scheit
031fe3ae41 [Messenger] Add return type PHPDoc for TraceableMessageBus::getDispatchedMessages() 2026-02-20 10:48:04 +01:00
Christian Flothmann
7a4005495a Merge branch '7.4' into 8.0
* 7.4:
  [Validator] Sync validators.pt.xlf
  Minor: Review and finalize Latvian translations for validators
  streamline ini settings in phpunit.xml.dist files
  stop using with*() without expects()
  stop using with*() without expects()
  TypeContextFactory::collectTemplates now also works with @phpstan-template and @psalm-template
2026-02-20 08:51:53 +01:00
Christian Flothmann
d20b340a55 stop using with*() without expects() 2026-02-18 10:46:18 +01:00
Christian Flothmann
f042e5aea1 Merge branch '6.4' into 7.4
* 6.4:
  stop using with*() without expects()
2026-02-18 10:40:04 +01:00
Christian Flothmann
b3a00167b1 stop using with*() without expects() 2026-02-18 08:27:25 +01:00
Nicolas Grekas
541382b8b5 [Messenger] Improve PostgreSQL LISTEN/NOTIFY idle listener 2026-02-16 22:20:33 +01:00
Nicolas Grekas
2339a68c1f Merge branch '8.0' into 8.1
* 8.0:
  [Console] Fix ProgressBar %remaining% and %estimated% placeholder guards
  [Validator] Fix missing null type in ValidatorInterface::validate() phpdoc
  use PHPUnit 13 on PHP 8.4+
  [PropertyInfo] Prioritize property type over is/has/can accessors
2026-02-13 10:59:04 +01:00
Nicolas Grekas
81e72aa12b Merge branch '7.4' into 8.0
* 7.4:
  [Console] Fix ProgressBar %remaining% and %estimated% placeholder guards
  [Validator] Fix missing null type in ValidatorInterface::validate() phpdoc
  use PHPUnit 13 on PHP 8.4+
  [PropertyInfo] Prioritize property type over is/has/can accessors
2026-02-13 10:57:13 +01:00
Christian Flothmann
affa113ae0 use PHPUnit 13 on PHP 8.4+ 2026-02-11 17:03:16 +01:00
Nicolas Grekas
eb7ee0d80b Merge branch '8.0' into 8.1
* 8.0:
  [Messenger] Fix merge
  [Workflow] Fix swapped workflow/transition names in WorkflowValidator
  fix merge
  [DependencyInjection] Fix stale binding lookup in ResolveBindingsPass error message
  fix: correct romanian translations and add missing paucal forms
  [Cache] Fix DSN auth not passed to Redis/RedisCluster/Relay in RedisTrait
  [Cache] Fix DSN auth not passed to Redis/RedisCluster/Relay in RedisTrait
  skip a test case that doesn't work with PCRE < 10.40
  sync ICU stub version
  do not use PHPUnit mock objects without configured expectations
  [WebProfilerBundle] Fix EventSource is missing static properties
  [FrameworkBundle] express that raw strings are mapped to senders for messenger routing
  [Asset] Fix JsonManifestVersionStrategy exception on missing manifest in non-strict mode
  [Yaml] Fix parsing nested mappings in sequences
2026-02-09 11:17:21 +01:00
Nicolas Grekas
21f91ba1cb Merge branch '7.4' into 8.0
* 7.4:
  [Messenger] Fix merge
  [Workflow] Fix swapped workflow/transition names in WorkflowValidator
  fix merge
  [DependencyInjection] Fix stale binding lookup in ResolveBindingsPass error message
  fix: correct romanian translations and add missing paucal forms
  [Cache] Fix DSN auth not passed to Redis/RedisCluster/Relay in RedisTrait
  [Cache] Fix DSN auth not passed to Redis/RedisCluster/Relay in RedisTrait
  skip a test case that doesn't work with PCRE < 10.40
  sync ICU stub version
  do not use PHPUnit mock objects without configured expectations
  [WebProfilerBundle] Fix EventSource is missing static properties
  [FrameworkBundle] express that raw strings are mapped to senders for messenger routing
  [Asset] Fix JsonManifestVersionStrategy exception on missing manifest in non-strict mode
  [Yaml] Fix parsing nested mappings in sequences
2026-02-09 11:14:57 +01:00
Nicolas Grekas
02ec025730 [Messenger] Fix merge 2026-02-09 11:14:39 +01:00
Nicolas Grekas
39be981180 Merge branch '8.0' into 8.1
* 8.0:
  [JsonStreamer] Fix DateTime handling in union types
  Revert "bug #62852 [Cache] Fix DSN auth not passed to clusters in RedisTrait (wikando-ck)"
  [Messenger][Cache] Fix forwarding SSL settings to the redis sentinel
  [FrameworkBundle] Fix autoconfiguring controllers using legacy Route annotations as attributes
  fix compatibility with PCRE < 10.40
  fix forward compatibility with JsonStreamer 8.1+
  [Intl] Update data to ICU 78.2
  [Messenger] Fix AMQP heartbeat reconnection during in-flight message handling
  [JsonStreamer] Fix composite node provider arguments in stream mode
  [PropertyInfo] Fix union with mixed handling
  [Messenger] Optimize serialized size of ErrorDetailsStamp
  fix compatibility with DBAL 4.4+
2026-02-06 19:10:41 +01:00
Nicolas Grekas
ebe92f5cb2 Merge branch '7.4' into 8.0
* 7.4:
  [JsonStreamer] Fix DateTime handling in union types
  Revert "bug #62852 [Cache] Fix DSN auth not passed to clusters in RedisTrait (wikando-ck)"
  [Messenger][Cache] Fix forwarding SSL settings to the redis sentinel
  [FrameworkBundle] Fix autoconfiguring controllers using legacy Route annotations as attributes
  fix compatibility with PCRE < 10.40
  fix forward compatibility with JsonStreamer 8.1+
  [Intl] Update data to ICU 78.2
  [Messenger] Fix AMQP heartbeat reconnection during in-flight message handling
  [JsonStreamer] Fix composite node provider arguments in stream mode
  [PropertyInfo] Fix union with mixed handling
  [Messenger] Optimize serialized size of ErrorDetailsStamp
  fix compatibility with DBAL 4.4+
2026-02-06 19:09:31 +01:00
Nicolas Grekas
a4c304e494 Merge branch '6.4' into 7.4
* 6.4:
  Revert "bug #62852 [Cache] Fix DSN auth not passed to clusters in RedisTrait (wikando-ck)"
  [Messenger][Cache] Fix forwarding SSL settings to the redis sentinel
  fix compatibility with PCRE < 10.40
  [Intl] Update data to ICU 78.2
  [Messenger] Fix AMQP heartbeat reconnection during in-flight message handling
  [Messenger] Optimize serialized size of ErrorDetailsStamp
2026-02-06 18:57:29 +01:00
Nicolas Grekas
1b76f7e6ad feature #63277 [Messenger] Add idle timeout option to BatchHandlerTrait (HypeMC)
This PR was merged into the 8.1 branch.

Discussion
----------

[Messenger] Add idle timeout option to `BatchHandlerTrait`

| Q             | A
| ------------- | ---
| Branch?       | 8.1
| Bug fix?      | maybe?
| New feature?  | yes
| Deprecations? | no
| Issues        | Fix #63205
| License       | MIT

This PR adds a `getIdleTimeout()` method to `BatchHandlerTrait`, allowing batches to be flushed after a configured idle time when the required batch size is not reached.

This ensures that low-throughput workloads are processed regardless of batch size, rather than waiting indefinitely for the batch to fill up.

For older Symfony versions, users can copy this updated `BatchHandlerTrait` implementation and use it directly in their projects.

Commits
-------

93ae755cd84 [Messenger] Add idle timeout option to `BatchHandlerTrait`
2026-02-06 17:28:34 +01:00
HypeMC
c2118ab8ca [Messenger] Add idle timeout option to BatchHandlerTrait 2026-02-06 17:25:23 +01:00
Nicolas Grekas
c3eac119c8 [Messenger] Optimize serialized size of ErrorDetailsStamp 2026-02-06 10:03:35 +01:00
Nicolas Grekas
d8308f1a51 [Messenger] Cleanup some type declarations 2026-02-06 09:04:25 +01:00
Nicolas Grekas
c461d43e41 Merge branch '8.0' into 8.1
* 8.0:
  [Console] Fix failing test
  Revert "bug #62872 [Messenger] Fix processing batches (HypeMC)"
  [FrameworkBundle] Fix BrowserKitAssertionsTrait compatibility with HttpBrowser
  Add support for Mailjet SMTP relay X-MJ-TemplateErrorReporting header format to MailjetApiTransport.
2026-02-06 08:13:11 +01:00
Nicolas Grekas
8e8bccb600 Merge branch '7.4' into 8.0
* 7.4:
  [Console] Fix failing test
  Revert "bug #62872 [Messenger] Fix processing batches (HypeMC)"
  [FrameworkBundle] Fix BrowserKitAssertionsTrait compatibility with HttpBrowser
  Add support for Mailjet SMTP relay X-MJ-TemplateErrorReporting header format to MailjetApiTransport.
2026-02-06 08:13:04 +01:00
Nicolas Grekas
fd474e9345 Merge branch '6.4' into 7.4
* 6.4:
  [Console] Fix failing test
  Revert "bug #62872 [Messenger] Fix processing batches (HypeMC)"
  [FrameworkBundle] Fix BrowserKitAssertionsTrait compatibility with HttpBrowser
  Add support for Mailjet SMTP relay X-MJ-TemplateErrorReporting header format to MailjetApiTransport.
2026-02-06 08:12:55 +01:00
HypeMC
3d0080223d Revert "bug #62872 [Messenger] Fix processing batches (HypeMC)"
This reverts commit 2fb2fd16846d2039a3120ad28056e283dead3459, reversing
changes made to 28d40448010cdf1bbd97be56dd1ad0a6fa1f819c.
2026-02-05 22:18:33 +01:00
Nicolas Grekas
f5569d0ccc Merge branch '8.0' into 8.1
* 8.0: (21 commits)
  [WebProfilerBundle] Fix hot reload support (FrankenPHP)
  [Serializer] Normalize static methods when they have groups
  [PropertyInfo] fix compatibility with phpdocumentor/reflection-docblock 6.x
  [DoctrineBridge] Respect schema_filter in schema listeners
  [HttpClient] Fix destructor throwing while timeout was handled
  [HttpClient] Test throwing destructor together with retryable
  [Mime] Update mime types
  [HttpFoundation] Reject invalid paths
  [HttpKernel] Fix handling empty MapUploadedFile arrays
  [FrameworkBundle] Add missing `useAttributeAsKey` calls
  [Di] Fix invalid reference behavior
  When calling UploadedFile::getErrorMessage() to a file which has no error and is uploaded successfully, it should not return an error
  [HttpKernel] Bypass mapping construction when `RedirectController::urlRedirectAction` is triggered
  cs fix
  [Console] fall back to 0 when getCode() does not provide an integer
  fix merge
  [FrameworkBundle] Fix accessing the test container when using KernelTestCase in non-debug mode
  Fix running HttpClient tests
  [FrameworkBundle] Fix clearing the HttpCache store in tests
  [DependencyInjection][HttpKernel] Fix parsing Target attributes on properties and on controllers
  ...
2026-02-05 17:09:24 +01:00
Nicolas Grekas
99d9ca775a Merge branch '7.4' into 8.0
* 7.4: (21 commits)
  [WebProfilerBundle] Fix hot reload support (FrankenPHP)
  [Serializer] Normalize static methods when they have groups
  [PropertyInfo] fix compatibility with phpdocumentor/reflection-docblock 6.x
  [DoctrineBridge] Respect schema_filter in schema listeners
  [HttpClient] Fix destructor throwing while timeout was handled
  [HttpClient] Test throwing destructor together with retryable
  [Mime] Update mime types
  [HttpFoundation] Reject invalid paths
  [HttpKernel] Fix handling empty MapUploadedFile arrays
  [FrameworkBundle] Add missing `useAttributeAsKey` calls
  [Di] Fix invalid reference behavior
  When calling UploadedFile::getErrorMessage() to a file which has no error and is uploaded successfully, it should not return an error
  [HttpKernel] Bypass mapping construction when `RedirectController::urlRedirectAction` is triggered
  cs fix
  [Console] fall back to 0 when getCode() does not provide an integer
  fix merge
  [FrameworkBundle] Fix accessing the test container when using KernelTestCase in non-debug mode
  Fix running HttpClient tests
  [FrameworkBundle] Fix clearing the HttpCache store in tests
  [DependencyInjection][HttpKernel] Fix parsing Target attributes on properties and on controllers
  ...
2026-02-05 17:06:41 +01:00
Nicolas Grekas
5c01a818bb Merge branch '6.4' into 7.4
* 6.4:
  [WebProfilerBundle] Fix hot reload support (FrankenPHP)
  [Serializer] Normalize static methods when they have groups
  [DoctrineBridge] Respect schema_filter in schema listeners
  [HttpClient] Fix destructor throwing while timeout was handled
  [HttpClient] Test throwing destructor together with retryable
  [Mime] Update mime types
  [HttpFoundation] Reject invalid paths
  [FrameworkBundle] Add missing `useAttributeAsKey` calls
  [Di] Fix invalid reference behavior
  When calling UploadedFile::getErrorMessage() to a file which has no error and is uploaded successfully, it should not return an error
  cs fix
  [Console] fall back to 0 when getCode() does not provide an integer
  [FrameworkBundle] Fix accessing the test container when using KernelTestCase in non-debug mode
  [Messenger] Avoid skipping batch handlers on flush
2026-02-05 16:57:06 +01:00
Nicolas Grekas
bc85223ba0 feature #62875 [Messenger] Add regex support for transport name matching in messenger:consume command (santysisi)
This PR was merged into the 8.1 branch.

Discussion
----------

[Messenger] Add regex support for transport name matching in `messenger:consume` command

| Q             | A
| ------------- | ---
| Branch?       | 8.1
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Issues        | Fix #61259
| License       | MIT

### Overview:
This PR adds support for regex patterns in the `messenger:consume` command, allowing devs to match transport names dynamically (e.g., scheduler_.*).

### Key Changes:
* Introduced regex matching for transport names.

### Example Usage:
* `php bin/console messenger:consume '(?i)THIRD.*' second.*` – Match multiple transports using regex patterns.
* `php bin/console messenger:consume second.*` – Match transports starting with second.
* `php bin/console messenger:consume one.* normal` – Match using both a regex (one.*) and a specific name (normal).

### Note:
This feature does not work when the `messenger:consume` command is run in interactive mode.

Commits
-------

4e534339627 [Messenger] Add regex support for transport name matching in `messenger:consume` command
2026-01-31 10:44:46 +01:00
Santiago San Martin
776aa313e4 [Messenger] Add regex support for transport name matching in messenger:consume command 2026-01-31 10:44:38 +01:00
Dariusz Ruminski
7db1c30a4c PHP CS Fixer: cleanup config and minor detected issues 2026-01-30 16:36:26 +01:00
Nicolas Grekas
0036fdc8db bug #58433 [Messenger] Avoid skipping batch handlers on flush (Erwin Houtsma)
This PR was merged into the 6.4 branch.

Discussion
----------

[Messenger] Avoid skipping batch handlers on flush

| Q             | A
| ------------- | ---
| Branch?       | 6.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Issues        | Fix #59958
| License       | MIT

When using multiple Batch handlers, the situation can occur that there are multiple batch handlers that have messages that aren't processed and therefor not acked yet. The issue is caused by a optimalization that unsets the current batch handler in a foreach loop.

"The acknowledger was not called by the ... batch handler." is thrown when a worker is stopped and the batch isn't handled.

The issue is reproducable and testable with the attached unit test.

Commits
-------

76588d0d68d [Messenger] Avoid skipping batch handlers on flush
2026-01-29 18:34:08 +01:00
Grégoire Pineau
9ceb5b390b [Messenger] Add support for custom type in Serializer Transport 2026-01-29 15:37:54 +01:00
Nicolas Grekas
2d7ce7e071 minor #63198 PHP CS Fixer: enable `@PHP8x1Migration:risky` (keradus)
This PR was squashed before being merged into the 8.1 branch.

Discussion
----------

 PHP CS Fixer: enable ``@PHP8x1Migration`:risky`

| Q             | A
| ------------- | ---
| Branch?       | 8.1
| Bug fix?      | no
| New feature?  | no <!-- if yes, also update src/**/CHANGELOG.md -->
| Deprecations? | no <!-- if yes, also update UPGRADE-*.md and src/**/CHANGELOG.md -->
| Issues        | Fix CS <!-- prefix each issue number with "Fix #"; no need to create an issue if none exists, explain below -->
| License       | MIT

Commits
-------

3373aa5aa76  PHP CS Fixer: enable ``@PHP8x1Migration`:risky`
2026-01-29 10:42:48 +01:00