Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
494 commits
Select commit Hold shift + click to select a range
25b50ce
Disambiguate the "short"-unit y-axis label by panel title
charzl Aug 6, 2026
5c6dc3f
Fix PubServer wedge on slow subscriber
dwoz Aug 9, 2026
546d192
Fix PubServer wedge on slow subscriber (3006.x)
dwoz Aug 9, 2026
bd8ff52
Raise publish_drain_timeout default from 5s to 60s
dwoz Aug 11, 2026
6b51de0
Fix loader race that poisoned OS-specific virtualnames
dwoz Aug 5, 2026
b34eab6
Cache RSA verifier/signer bridge and PublicKey.from_file (3006.x)
dwoz Aug 9, 2026
899bee9
Update tests for PublicKey.from_file cache indirection
dwoz Aug 11, 2026
f949d8f
Fix RequestClient socketpair FD leak via graceful drain on close
dwoz Aug 9, 2026
ab80f9a
RequestClient.close: don't rely on scheduled drain in same-thread case
dwoz Aug 11, 2026
c82d3b8
Cache OptsDict DictProxy/ListProxy wrappers to eliminate hot-path churn
dwoz Aug 9, 2026
46d65c4
Cache RSA verifier/signer bridge objects and mtime-key PublicKey.from…
dwoz Aug 4, 2026
a2a0b91
Add changelog for #69989 (RSA verifier/signer cache on 3008.x)
dwoz Aug 9, 2026
0e12631
Update tests for PublicKey.from_file cache indirection
dwoz Aug 11, 2026
8ce804c
Fix FIPS-mode retry test after PublicKey.from_file cache indirection
dwoz Aug 11, 2026
9654b60
Fix minion crash when grains config option is empty
BrianHa94 Jul 28, 2026
11400b5
Narrow empty grains check and fix log_file ordering in test
BrianHa94 Jul 28, 2026
1455390
Accept any non-dict grains value and document required shape
BrianHa94 Aug 10, 2026
480f0f5
Fix cmd.script bg=True deleting tempfile before child runs
twangboy Aug 6, 2026
95f745d
Fix POSIX cmd.script bg wrapper skipping tempfile cleanup
twangboy Aug 6, 2026
ab743c2
Fix some lint
twangboy Aug 7, 2026
23178f0
Fix silent truncation of large HTTP downloads in cp/fileclient
twangboy Aug 10, 2026
54e478d
Reset event-bus pusher on failed fire_event send (#69914)
twangboy Aug 3, 2026
0563a55
Add functional test for event-bus pusher recovery (#69914)
twangboy Aug 4, 2026
e8c94d7
Give each deltaproxy sub-proxy its own schedule and beacon storage (#…
ggiesen Jul 12, 2026
92e71e7
test: migrate rh_ip unit tests from TestCase to pytest
ggiesen Jul 1, 2026
f55cfe0
Add nm_ip NetworkManager provider for network.managed (#54791)
ggiesen Jul 1, 2026
2fc318a
Bump nm_ip versionadded to 3006.28
ggiesen Jul 2, 2026
ee9736b
Add direct and inverse regression tests for nm_ip test-flag and rh_ip…
ggiesen Jul 6, 2026
149f343
Expand nm_ip NetworkManager keyfile coverage and harden keyfile write
ggiesen Jul 11, 2026
0e99738
Address review: atomic keyfile write, semicolon _listify, clearer bon…
ggiesen Jul 14, 2026
15e78f4
Use salt.utils.files.fopen in the keyfile write test (test-lint W8470)
ggiesen Jul 15, 2026
2ed6766
Make whitelist_modules only apply to remote dispatch
dwoz Aug 9, 2026
ccecccf
wip
dwoz Aug 8, 2026
9fe3a3b
Wire ipc_write_buffer through to TCP transport per-stream cap (#69930)
dwoz Aug 5, 2026
46fc3b1
Fix localfs cache tmp-file leak when key contains a path separator
dwoz Aug 5, 2026
14eb2db
Fix docstring :param: names that do not match the signatures
Aug 6, 2026
ca283a9
Fix nested SyncWrapper deadlock in tcp.TCPPublishServer.publish (3006.x)
dwoz Aug 9, 2026
b668a8a
Address twangboy review: re-resolve active publisher inside lock
dwoz Aug 12, 2026
1b3b09f
Add onedir package test for libyaml-linked PyYAML
dwoz Aug 9, 2026
7011905
Fix yamlloader attribute name in libyaml onedir test
dwoz Aug 10, 2026
12a638c
Skip libyaml onedir test on downgrade flavor
dwoz Aug 11, 2026
ddf673f
test_libyaml: version-conditional assertions across install/upgrade/d…
dwoz Aug 12, 2026
6b373eb
test_libyaml: key on install_salt.use_prev_version, not artifact version
dwoz Aug 12, 2026
098e4be
zeromq: per-instance UUID IDENTITY for daemon AsyncReqMessageClient (…
dwoz Aug 13, 2026
c21f76a
Fix pem_finger so PEM strings match file fingerprints
twangboy Aug 11, 2026
6a3e0f4
Disable pip's periodic version check in salt-pip
dwoz Aug 13, 2026
6c1d1d5
Add functional test for salt-pip PIP_DISABLE_PIP_VERSION_CHECK
dwoz Aug 13, 2026
95c4666
Add configurable/cgroup-aware minion memory headroom check
dwoz Aug 13, 2026
bc6d557
Make salt.loader.resource_modules deny-by-default
dwoz Jul 26, 2026
f52cede
Update aiohttp to version 3.14.3
twangboy Aug 13, 2026
1ae9e23
Add scenario tests for minion memory headroom (#69884)
dwoz Aug 14, 2026
160e62f
Fix handling of specific x509_v2 GeneralNames
lkubb Aug 14, 2026
da45305
Account for issuer's basicConstraints pathlen in CA certs
lkubb Aug 14, 2026
cff853e
Respect `get_encoding` param
lkubb Aug 14, 2026
b82635c
Minor lint fixes
lkubb Aug 14, 2026
99cc5e5
Fix Junos timeout wrappers crashing on dev_timeout=None (#58108)
ggiesen Jul 12, 2026
d467ae5
Strip reserved __kwarg__ marker before forwarding Junos RPC options (…
ggiesen Jul 16, 2026
e7e4b3b
Fix NTP/SNMP/probe config on NAPALM proxy minions (bare-name templates)
ggiesen Jul 12, 2026
cde89ca
Add changelog for #69793
ggiesen Jul 12, 2026
7fd38d8
Drop unused salt.utils.napalm import from the napalm tests
ggiesen Jul 12, 2026
b862e2c
Remove legacy test_napalm_probes.py superseded by the pytest tests
ggiesen Jul 12, 2026
082dc0a
Serialize concurrent NAPALM calls on a shared device connection (#55332)
ggiesen Jul 16, 2026
aa300ad
Optimize EventPublisher fan-out: raw_payload passthrough + tag peek
dwoz Aug 15, 2026
ecc256e
Add tests for EventPublisher fan-out raw_payload passthrough + tag pe…
dwoz Aug 15, 2026
a20cbf5
Fix crash/mutation/log bugs in the shared napalm utils and proxy
ggiesen Jul 12, 2026
8e05b7a
Add changelog for #69796
ggiesen Jul 12, 2026
77e8378
Fix functional tests after pathlen fix
lkubb Aug 15, 2026
f5b2880
Widen retry window for salt-minion service re-registration race
twangboy Aug 11, 2026
bf939d3
Update GitPython to 3.1.59 and pyasn1 to 0.6.4
twangboy Aug 12, 2026
bf17a04
Merge branch '3006.x' into fix-55332-napalm-cli-race
twangboy Aug 17, 2026
df50d24
Fan-out: propagate raw_payload kwarg to base + zeromq + ws PublishSer…
dwozniak-collab Aug 18, 2026
31770c5
Stop the loader from shadowing top-level imports via sys.path (#69139)
ggiesen Jul 11, 2026
248eb32
Add functional regression test for the loader sys.path shadow (#69139)
ggiesen Jul 13, 2026
03014ce
Revert PR #69622 (mis-merge of 3008.x content onto 3007.x)
dwozniak-collab Aug 18, 2026
ac92dec
Merge pull request #69819 from ggiesen/fix-55332-napalm-cli-race
dwoz Aug 18, 2026
d043b42
Merge pull request #70047 from lkubb/fix-x509v2-nameconstraints
dwoz Aug 18, 2026
3c620bc
Merge pull request #70038 from dwoz/dwoz/fix/69884-memory-headroom-co…
dwoz Aug 18, 2026
1ece064
Merge remote-tracking branch 'origin/3006.x' into merge/3006.x/3007.x…
dwozniak-collab Aug 18, 2026
a7d4f73
Fix master-cluster peer traffic honoring cluster_pool_port (#69877)
dwozniak-collab Aug 18, 2026
da2a8c5
tests/stress/ep: fixture + PubServer drain-timeout regression
dwozniak-collab Aug 18, 2026
7745e98
tests/stress/ep: subprocess-level throughput, fanout, fault-injection…
dwozniak-collab Aug 18, 2026
255ef26
Add MWorker-only stress + regression tests
dwozniak-collab Aug 18, 2026
269063a
tests/stress: add isolated MWorkerQueue subprocess stress suite
dwozniak-collab Aug 18, 2026
d0351b4
stress/pubchannel: fixture spawning isolated PublishServer._publish_d…
dwozniak-collab Aug 18, 2026
5f35a88
stress/pubchannel: smoke and throughput tests
dwozniak-collab Aug 18, 2026
2613ecb
stress/pubchannel: slow-subscriber and zmq pub_hwm drop-visibility re…
dwozniak-collab Aug 18, 2026
1491bdb
stress/pubchannel: fault injection and peer churn tests
dwozniak-collab Aug 18, 2026
f3ffc8f
Constrain git-describe tag match to v3007.* on 3007.x
dwozniak-collab Aug 18, 2026
34759af
Rewrite salt.ext.tornado imports to plain tornado in metaproxy tests
dwozniak-collab Aug 18, 2026
9a41326
Merge pull request #70052 from dwoz/dwoz/optimize/ep-fanout-passthrough
dwoz Aug 18, 2026
6993c20
Merge pull request #70079 from dwoz/dwoz/fix/69877-cluster-port-rename
dwoz Aug 19, 2026
f5b74a1
Add Master Inodes (Disk Files) panel to stress-test dashboard
charzl Aug 19, 2026
752bdd6
Ship Python 3.11.15 in 3007.x onedir packages
dwozniak-collab Aug 19, 2026
0da38ee
Add process-level CPU metrics for Master/API to fd_exporter.py
charzl Aug 19, 2026
d3fff81
tcp PubServer: catch StreamBufferFullError in publish_payload
dwozniak-collab Aug 19, 2026
66320e5
Fix missing minion number on Inode panel titles
charzl Aug 19, 2026
4f66179
Add Master Inodes (% Used) panel + fix render_panels.py percent unit
charzl Aug 19, 2026
7c67fd7
Revert Master Inodes (% Used) panel -- cAdvisor overlay2 limitation
charzl Aug 19, 2026
c0a9665
Revert panel 51's container CPU query back to salt-master
charzl Aug 20, 2026
99b37ea
Panel 51: drop redundant container CPU line, revert title
charzl Aug 20, 2026
b58802f
Add Per-Master-Process CPU and FD panel groups
charzl Aug 20, 2026
d2af51f
Combine the 5 MWorker panels into one per CPU/FD section
charzl Aug 20, 2026
3fa8b91
Add a 10m duration option to the stress test dispatch
charzl Aug 20, 2026
8616e3c
Fix test_schema assertions for jsonschema 4.x error wording
dwozniak-collab Aug 20, 2026
a390711
Merge pull request #70097 from dwoz/dwoz/fix/pubserver-buffer-full-3008x
dwoz Aug 20, 2026
915b4c8
Retry chocolatey installer download on transient HTTP errors
dwoz Aug 20, 2026
28e25c9
Restore several dropped 3006.x fixes + adapt tests for py3.11 deps
dwoz Aug 20, 2026
dfdb211
Restore junos/linux_shadow fixes dropped by the botched-merge revert
dwoz Aug 20, 2026
4838a87
Restore more dropped 3006.x fixes on the merge-forward
dwoz Aug 20, 2026
5c701bc
Include minion id on rejected-auth log + guard pillar_refresh functio…
dwoz Aug 20, 2026
9ed7f75
Merge pull request #70105 from dwoz/fix/nightly-chocolatey-504
dwoz Aug 21, 2026
3bae854
Merge pull request #70094 from saltstack/feature/vcops-100030-master-…
dwoz Aug 21, 2026
61cc506
Merge remote-tracking branch 'origin/3008.x' into feature/vcops-10959…
charzl Aug 21, 2026
8b88ad7
Rename nightly-stress-test.yml to run-stress-test.yml, add branch input
charzl Aug 19, 2026
362cebc
Add nightly-stress-test.yml dispatcher (byte-identical to master's)
charzl Aug 19, 2026
df0ca24
Drop branch input's default -- callers must pass it explicitly
charzl Aug 19, 2026
d0da26e
Merge run-stress-test.yml back into a single nightly-stress-test.yml
charzl Aug 20, 2026
d5fbd3e
Drop branch input's default and all hardcoded '3006.x' fallbacks
charzl Aug 20, 2026
fa1a228
Drop the branch-input comment
charzl Aug 20, 2026
758d00e
Discard non-dict frames in tcp.PublishClient.recv
dwoz Aug 21, 2026
7a81922
Restore Amazon-Linux-2 / CentOS-7 skip on test_ansible_playbook
dwoz Aug 21, 2026
781be86
Add changelog entry for 3006.x nightly stress test enablement
charzl Aug 21, 2026
7ab5c7c
Avoid asyncio.wait_for cancel-after-consume in transport recv paths
dwoz Aug 21, 2026
e2cf612
Merge pull request #70096 from saltstack/feature/vcops-109599-master-…
dwoz Aug 21, 2026
425e568
Add debug logging to fileserver dispatch and roots backend
BrianHa94 Aug 21, 2026
96d13fe
Make set_umask/get_umask thread safe
geoffberger Jul 21, 2026
c61c285
Fix changelog entry to describe what this PR actually changes
charzl Aug 21, 2026
14ae27f
Trim changelog entry -- state the effect, not the implementation detail
charzl Aug 21, 2026
46f393d
Narrow the previous transport recv fix; revert breaking bits
dwoz Aug 21, 2026
8164797
tcp transport: cap client-side outbound write buffers per ipc_write_b…
dwozniak-collab Aug 19, 2026
1423f10
Add changelog entry for fileserver debug logging
BrianHa94 Aug 21, 2026
e5aba86
tests/module_names: exclude pubchannel stress helpers.py from test_*.…
dwoz Aug 21, 2026
d77d6ef
stress/master_subprocess: widen aarch64 RSS ceilings on churn tests
dwoz Aug 21, 2026
03fda2b
Fix _lint() to resolve platform-specific requirements lock file
BrianHa94 Jul 28, 2026
452be62
Fix remaining duplicate-key hook bugs and add yamllint regression guard
BrianHa94 Jul 29, 2026
7bd2adb
Give lint.lock per-platform variants and trim it to lint-only deps
BrianHa94 Jul 31, 2026
7ea4061
Skip lint-lock checks that require a Linux host, fix stale doc reference
BrianHa94 Aug 3, 2026
8567cd8
Re-sync darwin/windows boto3 pin with linux/cloud after rebasing onto…
BrianHa94 Aug 22, 2026
db3bdea
Re-sync freebsd boto3 pin with linux/cloud/darwin/windows
BrianHa94 Aug 22, 2026
161b714
Fix ZeroMQSocketMonitor teardown race causing Windows libzmq abort
dwoz Aug 22, 2026
3e6e9a1
Cap Cython < 3.3 for onedir source builds
dwoz Aug 22, 2026
2d2dd52
Merge pull request #70099 from saltstack/feature/run-stress-test
dwoz Aug 22, 2026
2dbf862
Merge pull request #69922 from dwoz/dwoz/perf/zmq-identity-slot-cap-3…
dwoz Aug 22, 2026
942be37
Pin Cython<3.3 for pyzmq source-build compat
dwoz Aug 22, 2026
12f7174
Merge pull request #69933 from BrianHa94/fix-69932-lint-pre-commit-cr…
dwoz Aug 22, 2026
a35f4cd
Pin Cython<3.3 for pyzmq source-build compat
dwoz Aug 22, 2026
fadb107
Merge pull request #70106 from BrianHa94/fix/add-debug-logs-to-filese…
dwoz Aug 23, 2026
7f34881
Merge pull request #69956 from lkubb/x509_v2-wrapper-file-args
dwoz Aug 23, 2026
4eb647b
Merge pull request #70098 from dwoz/dwoz/fix/client-write-buffer-cap-…
dwoz Aug 23, 2026
c74f105
Merge pull request #70121 from dwoz/dwoz/fix/cython-3.3-pin-3006x
dwoz Aug 23, 2026
de002e6
Merge pull request #70118 from dwoz/dwoz/fix/cython-3.3-pin-3008x
dwoz Aug 24, 2026
e89b0d0
Fix RequestClient close/_send_recv teardown race causing Windows libz…
twangboy Aug 24, 2026
6c1a6b3
Preserve EventPublisher setproctitle across MasterPubServerChannel re…
dwoz Aug 23, 2026
beb5acd
Fix _handle_signals TypeError when SIGTERM hits a forked child
dwoz Aug 23, 2026
74472db
Rename changelog to PR number 70123
dwoz Aug 23, 2026
cf91558
Normalize FileserverUpdate process title casing
dwoz Aug 22, 2026
cf93e4c
Rename changelog entry to PR number
dwoz Aug 22, 2026
8485035
resource_warnings: route unclosed-resource warnings through Salt logger
dwoz Aug 20, 2026
9955b89
Restore cleanup in __del__ (keep loud warning as safety-net signal)
dwoz Aug 22, 2026
54c0600
Fix minion graceful-stop path
dwoz Aug 15, 2026
4fae12f
Rename changelog to PR number
dwoz Aug 15, 2026
5ab2260
Fix test setup gaps exposed by graceful-stop fixup
dwoz Aug 20, 2026
5f84235
Fix cross-platform / cross-package test setup for graceful-stop suite
dwoz Aug 22, 2026
4d75202
Bump packaged pip to 26.2
twangboy Aug 24, 2026
01c5c63
Surface pip errors from install_salt.sh's requirements step
twangboy Aug 24, 2026
484784f
Set PIP_BUILD_CONSTRAINT alongside PIP_CONSTRAINT in build.py
twangboy Aug 24, 2026
aa523c6
Address review feedback: dedupe PIP_CONSTRAINT setup, fix missing env…
twangboy Aug 24, 2026
3791704
Scope the pyzmq<26 cap to non-Windows; Windows stays on pyzmq>=27.1.0
twangboy Aug 24, 2026
c3fc30d
Merge pull request #70080 from dwoz/dwoz/tests/master-subprocess-stress
dwoz Aug 24, 2026
1fbfb9a
Merge pull request #70126 from dwoz/dwoz/fix/masterpubserverchannel-p…
dwoz Aug 25, 2026
491de19
Retry chocolatey installer download on transient HTTP errors
dwoz Aug 24, 2026
1788450
Regenerate remaining lock files for windows-scoped pyzmq pins
dwoz Aug 25, 2026
df27f95
test_windows_env_handling: stop relying on duplicate-case env entries
dwoz Jun 26, 2026
d612dde
Merge pull request #70063 from dwoz/merge/3006.x/3007.x-08-14-26
dwoz Aug 25, 2026
1058188
Merge pull request #70110 from twangboy/fix/70109/3008.x
dwoz Aug 25, 2026
e9f2d14
Merge pull request #70123 from dwoz/dwoz/fix/handle-signals-default-i…
dwoz Aug 25, 2026
495f0ee
Merge pull request #70111 from dwoz/dwoz/fix/fileserverupdate-name-co…
dwoz Aug 25, 2026
a64863d
Merge pull request #70100 from dwoz/dwoz/fix/log-unclosed-resource-wa…
dwoz Aug 25, 2026
039bca8
Merge pull request #70051 from dwoz/dwoz/fix/minion-graceful-stop-fixup
dwoz Aug 25, 2026
17c1f44
Merge remote-tracking branch 'origin/3007.x' into merge/3007.x/3008.x…
dwoz Aug 25, 2026
f85447b
Merge pull request #69842 from geoffberger/fix-umask-thread-safety
dwoz Aug 25, 2026
1fde51d
Bump relenv to 0.22.23
dwoz Aug 25, 2026
6072117
Bump onedir Python point versions to match relenv 0.22.23 assets
dwoz Aug 25, 2026
299ce6f
Preserve EventPublisher setproctitle across MasterPubServerChannel re…
dwoz Aug 23, 2026
4db0a57
Rename changelog to PR number
dwoz Aug 23, 2026
a919896
Merge remote-tracking branch 'origin/3008.x' into merge/3007.x/3008.x…
dwoz Aug 25, 2026
1e264b4
MWorker: allow AESFuncs methods to opt into async dispatch
dwoz Aug 9, 2026
f951c5f
MWorker: convert AESFuncs mine family to async dispatch
dwoz Aug 9, 2026
ec64a6a
MWorker: convert AESFuncs minion_pub family to async dispatch
dwoz Aug 9, 2026
9e007e3
MWorker: convert AESFuncs _pillar to async dispatch
dwoz Aug 9, 2026
a7ff00f
MWorker: convert AESFuncs fileserver family to async dispatch
dwoz Aug 9, 2026
8cc6e90
MWorker: convert AESFuncs return/job-cache family to async dispatch
dwoz Aug 9, 2026
32d7698
MWorker: convert AESFuncs resources/verify/master_opts to async dispatch
dwoz Aug 9, 2026
7c8009c
Await presence_callback so async verify_minion actually runs
dwoz Aug 9, 2026
1f4b732
MWorker: convert ClearFuncs non-auth methods to async dispatch
dwoz Aug 9, 2026
f17bc77
MWorker: convert AuthFuncs minion authentication to async dispatch
dwoz Aug 9, 2026
24e4cbf
tests: add asyncio blocking-detection fixture for async MWorker path
dwoz Aug 9, 2026
0360e42
Guard shared caches against executor-thread races
dwoz Aug 9, 2026
fb66a49
MWorker: propagate ContextVars across executor boundary + error tests
dwoz Aug 9, 2026
a837d2a
tests: concurrency + integration coverage for async MWorker handlers
dwoz Aug 9, 2026
f25a79e
Fix nested SyncWrapper deadlock in tcp.PublishServer.publish
dwoz Aug 9, 2026
785a4a0
Fix async-mworker event bus stability
dwoz Aug 11, 2026
df20672
Fix async-mworker TCP PoolRouter fair distribution + auth shims
dwoz Aug 11, 2026
55c6fe3
Make async-mworker opt-in via master_async_mworker (default False on …
dwoz Aug 25, 2026
ffa5062
Fix async-mworker unit test regressions surfaced by CI
dwoz Aug 25, 2026
dafc14b
Fix async-mworker: close stale publisher on StreamClosedError
dwoz Aug 25, 2026
fd4ef06
Fix async-mworker: cache AutoKey on PoolRoutingChannel to preserve mt…
dwoz Aug 25, 2026
f333916
Add master_mworker_max_inflight cap for async-mworker
dwoz Aug 25, 2026
58c89a7
Fix async-mworker test regressions surfaced by CI
dwoz Aug 26, 2026
0bdd112
Ensure RUNTIME_VARS.TMP exists at unit-test session start
dwoz Aug 26, 2026
b959ced
test_shared_state_races: use PKCS1v15-SHA224 for FIPS compatibility
dwoz Aug 26, 2026
b755971
Fix isolated-FS cluster serving stale cluster.pub after join-reply
dwoz Aug 26, 2026
5c6a3fd
Add HAProxy-fronted scenario test for isolated-FS cluster (#70090)
dwoz Aug 26, 2026
27a5130
Bump cryptography, pyopenssl, msgpack, requests, setuptools; add attr…
dwoz Aug 21, 2026
98f2ed4
Add zc.lockfile to --only-binary allow-list
dwoz Aug 25, 2026
a4d130d
Cap cryptography <49 on Windows for win32 wheel availability
dwoz Aug 26, 2026
20f5bd8
Make tls module refuse to load on pyOpenSSL 26+
dwoz Aug 26, 2026
5202ff4
Bump relenv to 0.22.25
dwoz Aug 26, 2026
1e9472d
Add unit + scenario coverage for cluster.pem cache refresh (#70090)
dwoz Aug 26, 2026
a17fee9
Merge remote-tracking branch 'origin/3006.x' into merge/3006.x/3007.x…
dwoz Aug 26, 2026
2bca722
Merge remote-tracking branch 'origin/3008.x' into merge/3007.x/3008.x…
dwoz Aug 26, 2026
e67c307
Fix Combine Code Coverage job on 3007.x
dwoz Aug 25, 2026
34aa5c9
Merge pull request #70146 from dwoz/merge/3006.x/3007.x-08-26-26
dwoz Aug 26, 2026
2a32200
Merge pull request #70145 from dwoz/dwoz/fix/70090-cluster-isolated-h…
dwoz Aug 26, 2026
6d935cb
Merge remote-tracking branch 'origin/3007.x' into merge/3007.x/3008.x…
dwoz Aug 26, 2026
c432617
Fix python_version and regen freebsd locks
dwoz Aug 26, 2026
19f1de7
Force -undefined dynamic_lookup for macOS onedir C-ext builds
dwoz Aug 26, 2026
1369526
Add regression tests for PubServer drain-task cap and Unpacker/ipc_wr…
dwoz Aug 26, 2026
49939ce
Cap in-flight drain tasks per subscriber in PubServer.publish_payload
dwoz Aug 26, 2026
b8f2622
Widen PubServer drain queue default and defer QueueFull to watchdog
dwoz Aug 26, 2026
6d062bf
Merge remote-tracking branch 'origin/3008.x' into merge/3007.x/3008.x…
dwoz Aug 26, 2026
9e68e51
Resync every drifted requirements lock to 3008.x
dwoz Aug 27, 2026
08c307e
Raise SRP floors so lock regen does not drop 3007.x pins
dwoz Aug 27, 2026
ca4f736
Bump setuptools floor to 82.0.1 to match SRP baseline
dwoz Aug 27, 2026
b1c6a42
Merge pull request #70132 from dwoz/merge/3007.x/3008.x-08-25-26
dwoz Aug 27, 2026
1bf1157
nightly: sign RPM packages with whichever key is in the signing secret
dwoz Aug 26, 2026
162c55c
Merge pull request #70155 from dwoz/dwoz/backport/70141-to-3008.x
dwoz Aug 27, 2026
8fcd6c2
templates/build-packages: pass secrets: inherit for nightly too
dwoz Aug 27, 2026
ca4940b
Merge pull request #70160 from dwoz/dwoz/backport/70159-to-3008.x
dwoz Aug 27, 2026
54e8259
version: mark ARGON (3008) as released
dwoz Aug 27, 2026
972deae
Merge pull request #70162 from dwoz/dwoz/backport/70161-to-3008.x
dwoz Aug 27, 2026
20f5ba4
ci: skip CI on saltstack/salt-nightlies (duplicate of upstream)
dwoz Aug 14, 2026
774dfdc
nightly: sign DEB packages with debsigs, mirroring RPM signing path
dwoz Aug 27, 2026
bbab41b
Merge pull request #70166 from dwoz/dwoz/backport/70165-to-3008.x
dwoz Aug 27, 2026
08bed8b
test_version: assert current_release() contract, not a hardcoded code…
dwoz Aug 27, 2026
bef560b
Merge pull request #70163 from dwoz/dwoz/backport/70043-to-3008.x
dwoz Aug 27, 2026
fd8241a
Merge pull request #70167 from dwoz/dwoz/fix/test-current-release-arg…
dwoz Aug 27, 2026
2afdc78
version: constrain git-describe --match to v3008.* on 3008.x
dwoz Aug 28, 2026
4ae4bf9
Merge pull request #70170 from dwoz/dwoz/fix/git-describe-match-3008-…
dwoz Aug 28, 2026
48322d7
Merge remote-tracking branch 'origin/3008.x' into merge/3008.x/master…
dwoz Aug 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/build-deps-ci-action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ jobs:

macos-dependencies:
name: MacOS
runs-on: ${{ matrix.arch == 'x86_64' && 'macos-15-intel' || 'macos-14' }}
runs-on: ${{ matrix.arch == 'x86_64' && 'macos-15-intel' || 'macos-15' }}
if: ${{ toJSON(fromJSON(inputs.matrix)['macos']) != '[]' }}
timeout-minutes: 90
strategy:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ jobs:
env:
PIP_INDEX_URL: https://pypi.org/simple
runs-on:
- ${{ matrix.arch == 'arm64' && 'macos-14' || 'macos-15-intel' }}
- ${{ matrix.arch == 'arm64' && 'macos-15' || 'macos-15-intel' }}

steps:
- name: Check Package Signing Enabled
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-salt-onedir.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ jobs:
matrix:
include: ${{ fromJSON(inputs.matrix)['macos'] }}
runs-on:
- ${{ matrix.arch == 'arm64' && 'macos-14' || 'macos-15-intel' }}
- ${{ matrix.arch == 'arm64' && 'macos-15' || 'macos-15-intel' }}
env:
PIP_INDEX_URL: https://pypi.org/simple
USE_S3_CACHE: 'false'
Expand Down
22 changes: 12 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ on:
- 3006.x
- 3007.x
- 3008.x
- '[0-9][0-9][0-9][0-9].[0-9]*-[0-9]*'
- '[0-9][0-9][0-9][0-9].[0-9]*-patch'
- master
pull_request:
types:
Expand Down Expand Up @@ -464,8 +466,8 @@ jobs:
with:
cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
linux_arm_runner: ${{ fromJSON(needs.prepare-workflow.outputs.config)['linux_arm_runner'] }}
Expand All @@ -481,8 +483,8 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
source: "onedir"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
Expand All @@ -498,8 +500,8 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
source: "src"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
Expand All @@ -514,10 +516,10 @@ jobs:
with:
nox-session: ci-test-onedir
nox-version: 2022.8.7
python-version: "3.14.6"
python-version: "3.14.7"
ci-python-version: "3.14"
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
nox-archive-hash: "${{ needs.prepare-workflow.outputs.nox-archive-hash }}"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
linux_arm_runner: ${{ fromJSON(needs.prepare-workflow.outputs.config)['linux_arm_runner'] }}
Expand All @@ -535,7 +537,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
nox-version: 2022.8.7
ci-python-version: "3.14"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.config)['skip_code_coverage'] }}
testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['pkg-test-matrix']) }}
Expand All @@ -554,7 +556,7 @@ jobs:
ci-python-version: "3.14"
testrun: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['testrun']) }}
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
skip-code-coverage: ${{ fromJSON(needs.prepare-workflow.outputs.config)['skip_code_coverage'] }}
workflow-slug: ci
default-timeout: 180
Expand Down
83 changes: 80 additions & 3 deletions .github/workflows/nightly-stress-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,33 @@ on:
workflow_dispatch:
inputs:
duration:
description: 'Duration of the stress test (e.g., 30m, 1h)'
description: Stress test duration (GitHub-hosted runner caps at 6h)
required: true
default: '30m'
default: '0.5h'
type: choice
options:
- '10m'
- '0.5h'
- '1h'
- '1.5h'
- '2h'
- '2.5h'
- '3h'
- '3.5h'
- '4h'
- '4.5h'
- '5h'
- '5.5h'
enable_metrics:
description: Enable OpenTelemetry metrics (metrics.enabled)
required: false
default: false
type: boolean
worker_threads:
description: Salt master worker_threads
required: false
default: '5'
type: string

jobs:
stress-test:
Expand Down Expand Up @@ -52,6 +76,59 @@ jobs:
docker compose up -d
sleep 30 # Wait for initialization

- name: Configure salt-master
# Apply the workflow_dispatch overrides to ``master.conf`` and,
# if anything actually changed, restart salt-master so it picks
# them up. ``metrics.enabled`` gates the entire
# ``salt.utils.metrics`` stack (including the ``_load_otel``
# deferred OpenTelemetry import); the pip package on disk has
# zero runtime cost when this gate is off, so a config toggle
# is all that is needed to measure the OTel-on vs OTel-off
# profile. ``worker_threads`` sizes the MWorker pool and lets
# a run sweep the parallelism / RSS trade-off.
env:
ENABLE_METRICS: ${{ github.event.inputs.enable_metrics || 'false' }}
WORKER_THREADS: ${{ github.event.inputs.worker_threads || '5' }}
run: |
cd tests/monitoring
need_restart=0

if [ "$ENABLE_METRICS" = "true" ]; then
echo "Enabling OpenTelemetry metrics on salt-master"
# Append the metrics block only if not already present so
# re-runs are idempotent. ``printf`` (not a heredoc) keeps
# the YAML block-scalar indentation intact.
if ! grep -q '^metrics:' master.conf; then
printf '\nmetrics:\n enabled: true\n' >> master.conf
need_restart=1
fi
else
echo "Leaving metrics.enabled at default (false); OTel package is"
echo "shipped but never imported by the lazy loader."
fi

# Update ``worker_threads`` only when it differs from the value
# already in the file, so unchanged defaults skip the restart.
current_workers=$(awk '/^worker_threads:/ {print $2}' master.conf)
if [ -n "$current_workers" ] && [ "$current_workers" != "$WORKER_THREADS" ]; then
echo "Setting worker_threads: $current_workers -> $WORKER_THREADS"
sed -i "s/^worker_threads:.*/worker_threads: $WORKER_THREADS/" master.conf
need_restart=1
fi

if [ "$need_restart" = "1" ]; then
docker restart salt-master
sleep 20
fi

if [ "$ENABLE_METRICS" = "true" ]; then
# Trigger a code path that calls ``metrics.configure`` so
# the OpenTelemetry import fires and any misconfiguration
# surfaces here rather than mid-stress.
docker exec salt-master python3 -c \
"import salt.utils.metrics as m; m._load_otel(); assert m._OTEL_AVAILABLE, 'OTel import failed'"
fi

- name: Verify Connections
# The salt CLI returns exit 0 even when the master returns an
# error string (the legacy ``'str' object has no attribute
Expand Down Expand Up @@ -99,7 +176,7 @@ jobs:
STRESS_PID=$!

# Default to 30m if not workflow_dispatch
DURATION="${{ github.event.inputs.duration || '30m' }}"
DURATION="${{ github.event.inputs.duration || '0.5h' }}"
echo "Running stress test for $DURATION..."

# Use sleep with suffix support (m, h)
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -457,8 +457,8 @@ jobs:
with:
cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
linux_arm_runner: ${{ fromJSON(needs.prepare-workflow.outputs.config)['linux_arm_runner'] }}
Expand All @@ -475,8 +475,8 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
source: "onedir"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
Expand All @@ -498,8 +498,8 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
source: "src"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
Expand All @@ -519,10 +519,10 @@ jobs:
with:
nox-session: ci-test-onedir
nox-version: 2022.8.7
python-version: "3.14.6"
python-version: "3.14.7"
ci-python-version: "3.14"
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
nox-archive-hash: "${{ needs.prepare-workflow.outputs.nox-archive-hash }}"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
linux_arm_runner: ${{ fromJSON(needs.prepare-workflow.outputs.config)['linux_arm_runner'] }}
Expand All @@ -540,7 +540,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
nox-version: 2022.8.7
ci-python-version: "3.14"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
skip-code-coverage: true
testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['pkg-test-matrix']) }}
Expand All @@ -559,7 +559,7 @@ jobs:
ci-python-version: "3.14"
testrun: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['testrun']) }}
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
skip-code-coverage: true
workflow-slug: nightly
default-timeout: 360
Expand Down
18 changes: 14 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@ on:
DO NOT prefix the version with a "v" (use 3006.0, not v3006.0).
For prereleases use the PEP 440 form WITHOUT a hyphen
(use 3008.0rc1, not 3008.0-rc1).
For patch releases use the post-release form with a hyphen and number
(use 3008.1-1 for the first patch of 3008.1).
The Python sdist/wheel and the GitHub tag/release will use this
string verbatim (e.g. "salt-3008.0rc1.tar.gz" / "v3008.0rc1").
string verbatim (e.g. "salt-3008.0rc1.tar.gz" / "v3008.0rc1",
"salt-3008.1-1.tar.gz" / "v3008.1-1").
The RPM "Version:" and the Debian changelog stanza substitute
"rc" for "~rc" so prereleases sort before the GA version
(e.g. "3008.0~rc1" < "3008.0").
(e.g. "3008.0~rc1" < "3008.0"). Patch releases set RPM Release: N
so they sort after the base (e.g. "3008.1-1" > "3008.1-0").
skip-salt-pkg-download-test-suite:
type: boolean
default: false
Expand Down Expand Up @@ -94,6 +98,12 @@ jobs:
salt-version: "${{ inputs.salt-version }}"
validate-version: true

- name: Check For Duplicate Draft Releases
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
tools ci check-draft-releases ${{ steps.setup-salt-version.outputs.salt-version }}

- name: Get Salt Releases
id: get-salt-releases
env:
Expand Down Expand Up @@ -198,7 +208,7 @@ jobs:

publish-pypi:
name: Publish to PyPi
if: ${{ always() && ! failure() && ! cancelled() && github.event.repository.fork != true }}
if: ${{ always() && ! failure() && ! cancelled() && github.event.repository.fork != true && !contains(inputs.salt-version, '-') }}
needs:
- prepare-workflow
- release
Expand Down Expand Up @@ -248,7 +258,7 @@ jobs:

publish-draft:
name: Publish Relase v${{ needs.prepare-workflow.outputs.salt-version }}
if: ${{ !cancelled() && always() }}
if: ${{ !cancelled() && !failure() }}
runs-on: ubuntu-22.04
needs:
- check-requirements
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/scheduled.yml
Original file line number Diff line number Diff line change
Expand Up @@ -511,8 +511,8 @@ jobs:
with:
cache-seed: ${{ needs.prepare-workflow.outputs.cache-seed }}
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
linux_arm_runner: ${{ fromJSON(needs.prepare-workflow.outputs.config)['linux_arm_runner'] }}
Expand All @@ -528,8 +528,8 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
source: "onedir"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
Expand All @@ -545,8 +545,8 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.22.14"
python-version: "3.14.6"
relenv-version: "0.22.25"
python-version: "3.14.7"
ci-python-version: "3.14"
source: "src"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
Expand All @@ -561,10 +561,10 @@ jobs:
with:
nox-session: ci-test-onedir
nox-version: 2022.8.7
python-version: "3.14.6"
python-version: "3.14.7"
ci-python-version: "3.14"
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
nox-archive-hash: "${{ needs.prepare-workflow.outputs.nox-archive-hash }}"
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['build-matrix']) }}
linux_arm_runner: ${{ fromJSON(needs.prepare-workflow.outputs.config)['linux_arm_runner'] }}
Expand All @@ -582,7 +582,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
nox-version: 2022.8.7
ci-python-version: "3.14"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
skip-code-coverage: true
testing-releases: ${{ needs.prepare-workflow.outputs.testing-releases }}
matrix: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['pkg-test-matrix']) }}
Expand All @@ -601,7 +601,7 @@ jobs:
ci-python-version: "3.14"
testrun: ${{ toJSON(fromJSON(needs.prepare-workflow.outputs.config)['testrun']) }}
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.6
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|3.14.7
skip-code-coverage: true
workflow-slug: scheduled
default-timeout: 360
Expand Down
Loading
Loading