[12.x] feat: --memory=0 should mean skip memory exceeded verification (Breaking Change) #54393
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Memory Limit Behavior Change for Queue Workers
Current Behavior
When running Laravel queue workers with
--memory=0
:The worker currently exits with
static::EXIT_MEMORY_LIMIT
after processing each job, regardless of the actual memory usage. The only exceptions are when:SIGQUIT
signal is receivedIssue
The current implementation treats
0
as a special value that forces worker termination, but this behavior is inconsistent with how zero values are handled in other parts of the Worker class. Here are the relevant examples:In all these cases, zero is treated as a way to disable the feature rather than trigger special behavior.
Proposed Change
We should modify the memory limit check to align with other worker options' behavior. When
--memory=0
is specified, it should disable memory limit checking entirely instead of forcing worker termination after each job.This change would:
Implementation Notes
The change would involve modifying how zero values are interpreted in the memory limit checks, similar to how other worker options handle zero values:
Backward Compatibility
This is a breaking change as it modifies existing behavior. It should be: