Skip to content

Merge forward 3006.x into 3007.x#68758

Merged
dwoz merged 61 commits intosaltstack:3007.xfrom
dwoz:merge/3006.x/3007.x-25-02-21
Mar 13, 2026
Merged

Merge forward 3006.x into 3007.x#68758
dwoz merged 61 commits intosaltstack:3007.xfrom
dwoz:merge/3006.x/3007.x-25-02-21

Conversation

@dwoz
Copy link
Contributor

@dwoz dwoz commented Feb 22, 2026

Merging 3006.x into 3007.x.

  • introduces uv for requirements generation.

@dwoz dwoz requested a review from a team as a code owner February 22, 2026 01:49
@dwoz dwoz changed the base branch from master to 3007.x February 22, 2026 01:49
@dwoz dwoz added the test:full Run the full test suite label Feb 22, 2026
twangboy
twangboy previously approved these changes Feb 22, 2026
dwoz added 9 commits February 25, 2026 10:36
Let's embrace the AI revolution.
Resolved conflicts in:
- .pre-commit-config.yaml
- pkg/debian/changelog
- pkg/rpm/salt.spec
- pkg/windows/msi/Product.wxs
- pkg/windows/nsis/installer/Salt-Minion-Setup.nsi
- requirements/base.txt
- requirements/constraints.txt
- requirements/static/ci/cloud.in
- requirements/static/ci/common.in
- requirements/static/ci/darwin.in
- tests/pytests/pkg/upgrade/test_salt_upgrade.py
- tests/pytests/unit/beacons/test_telegram_bot_msg.py
- tests/pytests/unit/proxy/test_junos.py
- tests/unit/utils/test_vmware.py
- tools/pkg/build.py
The CI build was failing because pymssql==2.3.13 doesn't exist on PyPI.
This version was failing on x86 Windows builds due to missing binary wheels.
Changed base.txt to pin pymssql==2.3.11 which is the latest available version.
Pre-commit hooks automatically regenerated all compiled requirements files.
twangboy
twangboy previously approved these changes Feb 27, 2026
dwoz and others added 16 commits February 28, 2026 02:38
Use a single lock for both job_queue and state_queue to avoid race
conditions
**1. Concurrent `check_prior_running_states` Access**

Problem: Function read queue directories without locks, causing inconsistent reads.
Fix: Added lock protection to check_prior_running_states() in salt/utils/state.py:

def check_prior_running_states(opts, jid, active_jobs):
    # ...
    with acquire_queue_lock(opts):  # ← Added lock protection
        for queue_name in ("state_queue", "job_queue"):
            # Safe to read both directories

**2. Process Count Check Timing**

Problem: Process count checked once under lock, but became stale during batch processing.
Fix: Re-check process count before each individual job in salt/minion.py:

for fn in files[:slots_available]:
    # Re-check process count before processing each job
    current_process_count = len([p for p in self.subprocess_list.processes if p.is_alive()])
    if current_process_count >= current_process_count_max:
        break  # Stop processing if count changed

**3. Orphaned `running_` Files Cleanup**

Problem: Minion crashes could leave running_ files that block future jobs.
Fix: Added startup cleanup in salt/minion.py:

def _cleanup_orphaned_queue_files(self):
    """Clean up running_ files older than 5 minutes"""
    for fn in os.listdir(queue_dir):
        if fn.startswith("running_"):
            age_seconds = time.time() - os.stat(path).st_mtime
            if age_seconds > 300:  # 5 minutes
                os.remove(path)
twangboy
twangboy previously approved these changes Mar 12, 2026
dwoz added 2 commits March 12, 2026 15:34
- Update tools/testsuite/ci_failure.py with job pagination and improved parsing.
- Fix performance test to handle legacy build environments and skip pull if image exists.
- Move timelib and linode-python out of core requirements to platform-specific package requirements.
- Regenerate all static requirement lockfiles.
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.

5 participants