Skip to content

[wip] Queue#68694

Open
dwoz wants to merge 3 commits intosaltstack:3006.xfrom
dwoz:queue
Open

[wip] Queue#68694
dwoz wants to merge 3 commits intosaltstack:3006.xfrom
dwoz:queue

Conversation

@dwoz
Copy link
Contributor

@dwoz dwoz commented Feb 7, 2026

What does this PR do?

What issues does this PR fix or reference?

Fixes

Previous Behavior

Remove this section if not relevant

New Behavior

Remove this section if not relevant

Merge requirements satisfied?

[NOTICE] Bug fixes or features added to Salt require tests.

Commits signed with GPG?

Yes/No

dwoz added 2 commits February 6, 2026 17:03
Use filelock to serialize queue checks and validate PIDs in state_queue
files to prevent race conditions and handle stale locks during
state.apply(queue=True).
- Replace blocking `while` loop in `state.apply(queue=True)` with a non-blocking queue-and-return model to prevent connection timeouts.
- Implement `process_state_queue` in the Minion `periodic_callbacks` to asynchronously execute queued jobs.
- Use `filelock` to synchronize access to the queue directory (`cachedir/state_queue`) and prevent race inversions.
- Serialize job payloads to disk (`queued_<timestamp>_<jid>.p`) to ensure strict FIFO ordering and persistence.
- Fix "Invisible Gap" race condition by reserving a process slot before execution.
- Update `_prior_running_states` to respect both currently running jobs and queued jobs.
- Handle local execution (`salt-call`) scenarios where `__pub_jid` is missing.
- Add `filelock` to `salt.utils.thin` to support the queue lock in thin/remote environments.
- Add `test_state_queue.py` integration test to verify queuing behavior and execution order.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:full Run the full test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant