Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Memory leak in master ProcessManager #60049

Closed
pprkut opened this issue Apr 19, 2021 · 17 comments · Fixed by #60262
Closed

[BUG] Memory leak in master ProcessManager #60049

pprkut opened this issue Apr 19, 2021 · 17 comments · Fixed by #60262
Assignees
Labels
Aluminium Release Post Mg and Pre Si Bug broken, incorrect, or confusing behavior Core relates to code central or existential to Salt info-needed waiting for more info point-release minor release Regression The issue is a bug that breaks functionality known to work in previous releases. severity-high 2nd top severity, seen by most users, causes major problems ZD The issue is related to a Zendesk customer support ticket.
Milestone

Comments

@pprkut
Copy link
Contributor

pprkut commented Apr 19, 2021

Description
We updated our infrastructure from 3002.6 to 3003 and observed a rather severe memory leak in the ProcessManager of the salt master. We have both OSS and SSE masters and could observe the same behavior on all of them.

Steps to Reproduce the behavior
Issue is repeatable here and immediately visible after restarting salt-master (trend is visible after 5-15 minutes)

Screenshots
Screenshot_20210419_090141

Versions Report

salt --versions-report
Salt Version:
          Salt: 3003

Dependency Versions:
          cffi: 1.14.1
      cherrypy: unknown
      dateutil: Not Installed
     docker-py: Not Installed
         gitdb: Not Installed
     gitpython: Not Installed
        Jinja2: 2.11.1
       libgit2: 1.0.1
      M2Crypto: 0.35.2
          Mako: Not Installed
       msgpack: 0.6.2
  msgpack-pure: Not Installed
  mysql-python: 1.3.12
     pycparser: 2.14
      pycrypto: Not Installed
  pycryptodome: 3.10.1
        pygit2: 1.2.1
        Python: 3.6.8 (default, Nov 16 2020, 16:55:22)
  python-gnupg: Not Installed
        PyYAML: 3.13
         PyZMQ: 17.0.0
         smmap: Not Installed
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.1.4

Salt Extensions:
        sseape: 8.3.0+4

System Versions:
          dist: centos 7 Core
        locale: UTF-8
       machine: x86_64
       release: 3.10.0-1127.19.1.el7.x86_64
        system: Linux
       version: CentOS Linux 7 Core
@pprkut pprkut added Bug broken, incorrect, or confusing behavior needs-triage labels Apr 19, 2021
@OrangeDog OrangeDog added Core relates to code central or existential to Salt Regression The issue is a bug that breaks functionality known to work in previous releases. severity-high 2nd top severity, seen by most users, causes major problems and removed needs-triage labels Apr 19, 2021
@OrangeDog
Copy link
Contributor

Further details would probably be useful. Heap dump, config files, what the minions are doing.

@OrangeDog OrangeDog added this to the Approved milestone Apr 19, 2021
@pprkut
Copy link
Contributor Author

pprkut commented Apr 19, 2021

I had to downgrade the server to 3002 again because it ran out of RAM within a couple hours. I can temporarily upgrade again to debug some things, but then I need to know what I'd need to check for exactly, as we only have production systems where I can try that :-/

From what I can tell there's no specific minion action that triggered this. Memory increase happened when the system was essentially in neutral. We check once an hour on each minion whether the pillar rendered correctly, that's probably about the traffic that's going on.

I'll add the master config in a separate comment.

@pprkut
Copy link
Contributor Author

pprkut commented Apr 19, 2021

/etc/salt/master.d/f_defaults.conf
worker_threads: 10
external_auth:
  pam:
    user1:
      - '.*'
      - '@runner'
      - '@wheel'
    user2:
      - '.*'
      - '@runner'
      - '@wheel'
    user3:
      - '.*'
      - '@runner'
      - '@wheel'
    jenkinsbot:
      - 'event.send'
file_roots:
  base:
    - /srv/salt
hash_type: "sha256"
fileserver_backend:
  - git
  - roots
gitfs_provider: "pygit2"
gitfs_remotes:
    - ssh://git@git.example.com:7999/mms/saltstack-top.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-modules.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-grains.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-artifactory.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-systemd.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-crowd.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-curator.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-elasticsearch.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-epel.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-grafana.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-icinga2.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-incron.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-jenkins.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-jira.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-keepalived.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-kibana.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-letsencrypt.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-m2mobi.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-maxscale.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-network.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-nexus.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-packages.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-resque.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-reviewboard.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-bitbucket.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-telegraf.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-telegraf-m2mobi.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-mariadb.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-reactor-m2mobi.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-orchestrate-deploy.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-orchestrate-m2mobi.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-orchestrate-pkg.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-sonarqube.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-mattermost.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-matterbridge.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-percona.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-gradle.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-node.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-chronograf.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-pam.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-mounts.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-skel.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-rsyslog.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-users-m2mobi.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-cloud-init.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-git.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-teleport.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-androidsdk.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-raas.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-backup.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-kernel.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - ssh://git@git.example.com:7999/mms/saltstack-formula-banner.git:
      - pubkey: /root/.ssh/id_rsa.pub
      - privkey: /root/.ssh/id_rsa
    - https://github.com/M2Mobi/users-formula
    - https://github.com/M2Mobi/firewalld-formula.git
    - https://github.com/M2Mobi/selinux-formula.git
    - https://github.com/M2Mobi/openssh-formula.git
    - https://github.com/M2Mobi/vnstat-formula.git
    - https://github.com/M2Mobi/mysql-formula.git
    - https://github.com/M2Mobi/postfix-formula.git
    - https://github.com/M2Mobi/nginx-formula.git
    - https://github.com/M2Mobi/redis-formula.git
    - https://github.com/M2Mobi/php-formula.git
    - https://github.com/M2Mobi/logrotate-formula
    - https://github.com/M2Mobi/vim-formula.git
    - https://github.com/M2Mobi/timezone-formula
    - https://github.com/M2Mobi/newrelic-formula.git
    - https://github.com/M2Mobi/sysctl-formula.git
    - https://github.com/M2Mobi/influxdb-formula.git
    - https://github.com/M2Mobi/salt-formula.git
    - https://github.com/M2Mobi/logstash-formula.git
    - https://github.com/M2Mobi/filebeat-formula.git
    - https://github.com/M2Mobi/apache-formula
    - https://github.com/M2Mobi/svn-formula
    - https://github.com/M2Mobi/nfs-formula.git
    - https://github.com/M2Mobi/cron-formula.git
    - https://github.com/M2Mobi/salt-teleport.git
    - https://github.com/saltstack-formulas/nano-formula.git
    - https://github.com/saltstack-formulas/postgres-formula.git
pillar_roots:
  base:
    - /srv/pillar
ext_pillar:
  - git:
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-androidsdk.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-apache.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-artifactory.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-backup.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-banner.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-chronograf.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-cron.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-curator.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-elasticsearch.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-epel.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-filebeat.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-gradle.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-grafana.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-icinga2.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-influxdb.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-jenkins.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-keepalived.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-kernel.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-kibana.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-letsencrypt.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-logrotate.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-logstash.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-m2mobi.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-mariadb.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-matterbridge.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-mattermost.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-maxscale.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-mounts.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-network.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-newrelic.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-nfs.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-nginx.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-pam.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-percona.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-php.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-postfix.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-postgresql.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-raas.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-redis.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-rsyslog.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-salt.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-selinux.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-sonarqube.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-svn.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-sysctl.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-telegraf.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-teleport.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-timezone.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-users.git
    - ssh://git@git.example.com:7999/mms/saltstack-pillar-vim.git
ext_pillar_first: true
pillar_merge_lists: true
git_pillar_provider: "pygit2"
git_pillar_env: "base"
git_pillar_global_lock: false
git_pillar_pubkey: "/root/.ssh/id_rsa.pub"
git_pillar_privkey: "/root/.ssh/id_rsa"
pillar_cache: true
peer:
  
  .*:
    
      - grains.get
    
      - m2mobi_icinga2.*
    
      - m2mobi_teleport.*
    
      - teleport.*
    
  
log_level: "warning"
log_level_logfile: "warning"
log_granular_levels:
  
  salt: warning
  
  salt.utils.verify: debug
  
  tornado.access: debug
  
rest_tornado:
  port: 8008
  address: 0.0.0.0
  debug: True
  ssl_crt: /etc/letsencrypt/live/pepper.example.com/fullchain.pem
  ssl_key: /etc/letsencrypt/live/pepper.example.com/privkey.pem
  websockets: False
  cors_origin: '*'
startup_states:
  sls
sls_list:
  - epel
  - influxdb.pkgrepo
  - packages
  - salt.pkgrepo
  - salt.gitfs.pygit2
  - salt.minion
  - network.hosts
git_pillar_update_interval:
  120
gitfs_global_lock:
  false
gitfs_update_interval:
  120

@sagetherage sagetherage modified the milestones: Approved, Silicon Apr 19, 2021
@sagetherage sagetherage added the Silicon v3004.0 Release code name label Apr 19, 2021
@msteed
Copy link
Contributor

msteed commented Apr 19, 2021

Possible breadcrumb: On an idle 3003 master with no minions connected, I see a leak of 50-100MB per hour. I do have an engine running that does nothing except call salt.utils.event.get_master_event() every few seconds. If I comment out the call to get_master_event() but leave the engine running, the leak stops.

@whytewolf
Copy link
Collaborator

another breadcrumb, although I'm not sure it is for the ProcessManager

if I set up the status beacon to send lots of requests to the master it loses memory more quickly.

@mahresohl
Copy link

We see this issue on our system too. Salt-master becomes non-responsive and requires a restart. Depending on the load, the memory leak accumulates faster or slower. Sometimes it is workable for a couple of weeks, sometimes it exhausts the memory in a day.
A single process out of all spanned by the salt-master is responsible for this. Not sure what it does.

top -p 24530 
    PID USER   PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
24530 root   20   0 10.539g 9.972g   3096 R  66.7 85.0  21:40.25 salt-master  <- memory use at the time of non-responsiveness

Soon after restart:

ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | grep salt-master
  1394   1107  3.0  0.3 /usr/bin/python3 /usr/bin/salt-master  <- note this process. It grew-up from 0 to 3% in a few hours
  1396   1107  0.7  0.8 /usr/bin/python3 /usr/bin/salt-master
  1429   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1423   1398  0.6  0.6 /usr/bin/python3 /usr/bin/salt-master
  1427   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1436   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1434   1398  0.6  0.3 /usr/bin/python3 /usr/bin/salt-master
  1435   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1418   1398  0.6  0.5 /usr/bin/python3 /usr/bin/salt-master
  1420   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1428   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1431   1398  0.6  0.5 /usr/bin/python3 /usr/bin/salt-master
  1430   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1402   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1400   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1419   1398  0.5  0.4 /usr/bin/python3 /usr/bin/salt-master
  1401   1398  0.5  0.5 /usr/bin/python3 /usr/bin/salt-master
  1395   1107  0.5  0.3 /usr/bin/python3 /usr/bin/salt-master
  1399   1398  0.5  0.1 /usr/bin/python3 /usr/bin/salt-master
  1391   1107  0.4  0.0 /usr/bin/python3 /usr/bin/salt-master
  1107      1  0.4  0.0 /usr/bin/python3 /usr/bin/salt-master
  1417   1107  0.3  0.2 /usr/bin/python3 /usr/bin/salt-master
  1398   1107  0.3  0.0 /usr/bin/python3 /usr/bin/salt-master
  1180   1107  0.2  0.0 /usr/bin/python3 /usr/bin/salt-master

Versions:

Salt Version:
          Salt: 3002.2

Dependency Versions:
          cffi: 1.14.4
      cherrypy: 3.5.0
      dateutil: 2.4.2
     docker-py: Not Installed
         gitdb: 0.6.4
     gitpython: 1.0.1
        Jinja2: 2.11.2
       libgit2: Not Installed
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 0.6.2
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     pycparser: 2.17
      pycrypto: Not Installed
  pycryptodome: 3.4.7
        pygit2: Not Installed
        Python: 3.5.2 (default, Jan 26 2021, 13:30:48)
  python-gnupg: 0.3.8
        PyYAML: 3.12
         PyZMQ: 17.0.0
         smmap: 0.9.0
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.1.6

System Versions:
          dist: ubuntu 16.04 Xenial Xerus
        locale: UTF-8
       machine: x86_64
       release: 4.4.0-141-generic
        system: Linux
       version: Ubuntu 16.04 Xenial Xerus

@whytewolf
Copy link
Collaborator

We see this issue on our system too. Salt-master becomes non-responsive and requires a restart. Depending on the load, the memory leak accumulates faster or slower. Sometimes it is workable for a couple of weeks, sometimes it exhausts the memory in a day.
A single process out of all spanned by the salt-master is responsible for this. Not sure what it does.

top -p 24530 
    PID USER   PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
24530 root   20   0 10.539g 9.972g   3096 R  66.7 85.0  21:40.25 salt-master  <- memory use at the time of non-responsiveness

Soon after restart:

ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | grep salt-master
  1394   1107  3.0  0.3 /usr/bin/python3 /usr/bin/salt-master  <- note this process. It grew-up from 0 to 3% in a few hours
  1396   1107  0.7  0.8 /usr/bin/python3 /usr/bin/salt-master
  1429   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1423   1398  0.6  0.6 /usr/bin/python3 /usr/bin/salt-master
  1427   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1436   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1434   1398  0.6  0.3 /usr/bin/python3 /usr/bin/salt-master
  1435   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1418   1398  0.6  0.5 /usr/bin/python3 /usr/bin/salt-master
  1420   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1428   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1431   1398  0.6  0.5 /usr/bin/python3 /usr/bin/salt-master
  1430   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1402   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1400   1398  0.6  0.4 /usr/bin/python3 /usr/bin/salt-master
  1419   1398  0.5  0.4 /usr/bin/python3 /usr/bin/salt-master
  1401   1398  0.5  0.5 /usr/bin/python3 /usr/bin/salt-master
  1395   1107  0.5  0.3 /usr/bin/python3 /usr/bin/salt-master
  1399   1398  0.5  0.1 /usr/bin/python3 /usr/bin/salt-master
  1391   1107  0.4  0.0 /usr/bin/python3 /usr/bin/salt-master
  1107      1  0.4  0.0 /usr/bin/python3 /usr/bin/salt-master
  1417   1107  0.3  0.2 /usr/bin/python3 /usr/bin/salt-master
  1398   1107  0.3  0.0 /usr/bin/python3 /usr/bin/salt-master
  1180   1107  0.2  0.0 /usr/bin/python3 /usr/bin/salt-master

Versions:

Salt Version:
          Salt: 3002.2

Dependency Versions:
          cffi: 1.14.4
      cherrypy: 3.5.0
      dateutil: 2.4.2
     docker-py: Not Installed
         gitdb: 0.6.4
     gitpython: 1.0.1
        Jinja2: 2.11.2
       libgit2: Not Installed
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 0.6.2
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     pycparser: 2.17
      pycrypto: Not Installed
  pycryptodome: 3.4.7
        pygit2: Not Installed
        Python: 3.5.2 (default, Jan 26 2021, 13:30:48)
  python-gnupg: 0.3.8
        PyYAML: 3.12
         PyZMQ: 17.0.0
         smmap: 0.9.0
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.1.6

System Versions:
          dist: ubuntu 16.04 Xenial Xerus
        locale: UTF-8
       machine: x86_64
       release: 4.4.0-141-generic
        system: Linux
       version: Ubuntu 16.04 Xenial Xerus

If you install setproctitle python module it will list what most of the processes do. there are two or three that don't have labels though. for troubleshooting memory leaks it is important to know which process is causing the problems.

Also since you are running 3002.2 the memory leak you are reporting will be vastly different then the one in this ticket. 3002.2 had it's own memory issues. this ticket should be for 3003+

@sagetherage sagetherage assigned dwoz and krionbsd and unassigned cmcmarrow Apr 21, 2021
@sagetherage
Copy link
Contributor

@pprkut and @mahresohl what is process name, please?

@pprkut
Copy link
Contributor Author

pprkut commented Apr 22, 2021

The name of the affected process on my side is in the screenshot. It's /usr/bin/python3 /usr/bin/salt-master ProcessManager

@dwoz
Copy link
Contributor

dwoz commented Apr 22, 2021

@pprkut can you provide me a full process list of the salt master when this issue is happening. Also, if you can get me some debug logs it'll be a big help. The thing that is concerning me is that I don't see any changes ProcessManager code in the last several releases.

@sagetherage sagetherage added Aluminium Release Post Mg and Pre Si point-release minor release and removed Silicon v3004.0 Release code name labels Apr 22, 2021
@sagetherage sagetherage removed this from the Silicon milestone Apr 22, 2021
@sagetherage sagetherage unpinned this issue May 19, 2021
dwoz added a commit to dwoz/salt that referenced this issue May 27, 2021
Fixes saltstack#60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
dwoz added a commit to dwoz/salt that referenced this issue May 27, 2021
@sagetherage sagetherage added Aluminium Release Post Mg and Pre Si point-release minor release and removed Silicon v3004.0 Release code name labels May 27, 2021
@sagetherage sagetherage modified the milestones: Silicon, Aluminium May 27, 2021
@sagetherage sagetherage pinned this issue May 27, 2021
Ch3LL pushed a commit that referenced this issue Jun 1, 2021
Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
Ch3LL pushed a commit that referenced this issue Jun 1, 2021
Ch3LL pushed a commit to Ch3LL/salt that referenced this issue Jun 1, 2021
Fixes saltstack#60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
Ch3LL pushed a commit to Ch3LL/salt that referenced this issue Jun 1, 2021
@sagetherage sagetherage unpinned this issue Jun 1, 2021
Ch3LL pushed a commit that referenced this issue Jun 4, 2021
Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
Ch3LL pushed a commit that referenced this issue Jun 4, 2021
xeacott pushed a commit to xeacott/salt that referenced this issue Jun 8, 2021
Fixes saltstack#60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
xeacott pushed a commit to xeacott/salt that referenced this issue Jun 8, 2021
xeacott pushed a commit to xeacott/salt that referenced this issue Jun 8, 2021
Fixes saltstack#60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
xeacott pushed a commit to xeacott/salt that referenced this issue Jun 8, 2021
xeacott pushed a commit to xeacott/salt that referenced this issue Jun 8, 2021
Fixes saltstack#60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.
xeacott pushed a commit to xeacott/salt that referenced this issue Jun 8, 2021
Ch3LL added a commit that referenced this issue Jun 23, 2021
* Merge 3002.6 bugfix changes (#59822)

* Pass `CI_RUN` as an environment variable to the test run.

This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed

* Migrate `unit.setup` to PyTest

* Backport ae36b15 just for test_install.py

* Only skip tests on CI runs

* Always store git sha in _version.py during installation

* Fix PEP440 compliance.

The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.

This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`

* Fix and migrate `tests/unit/test_version.py` to PyTest

* Skip test if `easy_install` is not available

* We also need to be PEP440 compliant when there's no git history

* Allow extra_filerefs as sanitized kwargs for SSH client

* Fix regression on cmd.run when passing tuples as cmd

Co-authored-by: Alexander Graul <agraul@suse.com>

* Add unit tests to ensure cmd.run accepts tuples

* Add unit test to check for extra_filerefs on SSH opts

* Add changelog file

* Fix comment for test case

* Fix unit test to avoid failing on Windows

* Skip failing test on windows

* Fix test to work on Windows

* Add all ssh kwargs to sanitize_kwargs method

* Run pre-commit

* Fix pylint

* Fix cmdmod loglevel and module_names tests

* Fix pre-commit

* Skip ssh tests if binary does not exist

* Use setup_loader for cmdmod test

* Prevent argument injection in restartcheck

* Add changelog for restartcheck fix

* docs_3002.6

* Add back tests removed in merge

Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>

* Remove glance state module in favor of glance_image

* update wording in changelog

* bump deprecation warning to Silicon.

* Updating warnutil version to Phosphorous.

* Update salt/modules/keystone.py

Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>

* Check $HOMEBREW_PREFIX when linking against libcrypto

When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable.  If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:

    Application Specific Information:
    /usr/lib/libcrypto.dylib
    abort() called
    Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.

* Add test case

* Add changelog for 59808

* Add changelog entry

* Make _find_libcrypto fail on Big Sur if it can't find a library

Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.

* Update _find_libcrypto tests

This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.

* Fix description of test_find_libcrypto_with_system_before_catalina

* Patch sys.platform for test_rsax931 tests

* modules/match: add missing "minion_id" in Pillar example

The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
  - to prove the misbehavior of the documented example
  - to prove the proper behaviour when supplying `minion_id`
  - to ensure some misbehaviour observed with compound matchers doesn't occur

* Fix for issue #59773

- When instantiating the loader grab values of grains and pillars if
  they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.

* Add changelog for #59773

* _get_initial_pillar function returns pillar

* Fix linter issues

* Clean up test

* Bump deprecation release for neutron

* Uncomment Sulfur release name

* Removing the _ext_nodes deprecation warning and alias.

* Adding changelog.

* Renaming changelog file.

* Update 59804.removed

* Initial pass at fips_mode config option

* Fix pre-commit

* Fix tests and add changelog

* update docs 3003

* update docs 3003 - newline

* Fix warts in changelog

* update releasenotes 3003

* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests

* add distro_arch

* changing the cloud platforms file missed in 1a9b7be

* Update __utils__ calls to import utils in azure

* Add changelog for 59744

* Fix azure unit tests and move to pytest

* Use contextvars from site-packages for thin

If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes #59942)

* Add regression test for #59942

* Add changelog for #59942

* Update filemap to include test_py_versions

* Fix broken thin tests

* Always install the `contextvars` backport, even on Py3.7+

Without this change, salt-ssh cannot target systems with Python <= 3.6

* Use salt-factories to handle the container. Don't override default roster

* Fix thin tests on windows

* No need to use warn log level here

* Fix getsitepackages for old virtualenv versions

* Add explicit pyobjc reqs

* Add back the passthrough stuff

* Remove a line so pre-commit will run

* Bugfix release docs

* Bugfix release docs

* Removing pip-compile log files

* Bump requirements to address a few security issues

* Address traceback on macOS

```
Traceback (most recent call last):
  File "setup.py", line 1448, in <module>
    setup(distclass=SaltDistribution)
  File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
    return distutils.core.setup(**attrs)
  File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
    _setup_distribution = dist = klass(attrs)
  File "setup.py", line 1068, in __init__
    self.update_metadata()
  File "setup.py", line 1074, in update_metadata
    attrvalue = getattr(self, attrname, None)
  File "setup.py", line 1182, in _property_install_requires
    install_requires += _parse_requirements_file(reqfile)
  File "setup.py", line 270, in _parse_requirements_file
    platform.python_version(), _parse_op(op), _parse_ver(ver)
  File "setup.py", line 247, in _check_ver
    return getattr(operator, "__{}__".format(op))(pyver, wanted)
  File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
    c = self._cmp(other)
  File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
    if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```

* Replace `saltstack.com` with `saltproject.io` on URLs being tested

* Add back support to load old entrypoints by iterating instead of type checking

Fixes #59961

* Fix issue #59975

* Fix pillar serialization for jinja #60083

* Fix test

* Add changelog for #60083

* Update changelog and release for 3003.1

* Remove the changelog source refs

* Add connect to IPCMessageSubscriber's async_methods

Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.

* Add changelog for #60049

* Update 60049.fixed

* Fix coroutine spelling error

Co-authored-by: Wayne Werner <waynejwerner@gmail.com>

* IPC on windows cannot use socket paths

Fixes #60298

* Update Jinja2 and lxml due to security related bugfix releases

Jinja2
------

CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3

This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.

lxml
----

CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3

An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.

* fix github actions jobs on branch until bullseye comes out

* Upgrade to `six==1.16.0` to avoid problems on CI runs

```
13:59:02  nox > Session invoke-pre-commit was successful.
13:59:02  nox > Running session invoke-pre-commit
13:59:02  nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02  Collecting blessings==1.7
13:59:02    Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02  Collecting invoke==1.4.1
13:59:02    Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02  Collecting pyyaml==5.3.1
13:59:02    Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02  Collecting six==1.15.0
13:59:02    Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02  Building wheels for collected packages: pyyaml
13:59:02    Building wheel for pyyaml (setup.py) ... -� �\� �|� �/� �-� �\� �|� �done
13:59:02    Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02    Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02  Successfully built pyyaml
13:59:02  Installing collected packages: six, pyyaml, invoke, blessings
13:59:02    Attempting uninstall: six
13:59:02      Found existing installation: six 1.16.0
13:59:02      Uninstalling six-1.16.0:
13:59:02  ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02  nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02  nox > Session invoke-pre-commit failed.
```

* add changelog for #59982

* Regression test for #56273

* Fix race condition in batch. #56273

* Add changelog for #56273

* Update salt/client/__init__.py

Co-authored-by: Pedro Algarvio <pedro@algarvio.me>

* Update doc for salt/client

* Update changelog/56273.fixed

Thoreau said, "Simplify, Simplify"

* Update docs

* Update docs

* Update CHANGELOG.md

* Update 3003.1.rst

* Fix changelog

Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
truzzon pushed a commit to truzzon/salt that referenced this issue Aug 10, 2021
* Merge 3002.6 bugfix changes (saltstack#59822)

* Pass `CI_RUN` as an environment variable to the test run.

This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed

* Migrate `unit.setup` to PyTest

* Backport ae36b15 just for test_install.py

* Only skip tests on CI runs

* Always store git sha in _version.py during installation

* Fix PEP440 compliance.

The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.

This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`

* Fix and migrate `tests/unit/test_version.py` to PyTest

* Skip test if `easy_install` is not available

* We also need to be PEP440 compliant when there's no git history

* Allow extra_filerefs as sanitized kwargs for SSH client

* Fix regression on cmd.run when passing tuples as cmd

Co-authored-by: Alexander Graul <agraul@suse.com>

* Add unit tests to ensure cmd.run accepts tuples

* Add unit test to check for extra_filerefs on SSH opts

* Add changelog file

* Fix comment for test case

* Fix unit test to avoid failing on Windows

* Skip failing test on windows

* Fix test to work on Windows

* Add all ssh kwargs to sanitize_kwargs method

* Run pre-commit

* Fix pylint

* Fix cmdmod loglevel and module_names tests

* Fix pre-commit

* Skip ssh tests if binary does not exist

* Use setup_loader for cmdmod test

* Prevent argument injection in restartcheck

* Add changelog for restartcheck fix

* docs_3002.6

* Add back tests removed in merge

Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>

* Remove glance state module in favor of glance_image

* update wording in changelog

* bump deprecation warning to Silicon.

* Updating warnutil version to Phosphorous.

* Update salt/modules/keystone.py

Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>

* Check $HOMEBREW_PREFIX when linking against libcrypto

When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable.  If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:

    Application Specific Information:
    /usr/lib/libcrypto.dylib
    abort() called
    Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.

* Add test case

* Add changelog for 59808

* Add changelog entry

* Make _find_libcrypto fail on Big Sur if it can't find a library

Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.

* Update _find_libcrypto tests

This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.

* Fix description of test_find_libcrypto_with_system_before_catalina

* Patch sys.platform for test_rsax931 tests

* modules/match: add missing "minion_id" in Pillar example

The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
  - to prove the misbehavior of the documented example
  - to prove the proper behaviour when supplying `minion_id`
  - to ensure some misbehaviour observed with compound matchers doesn't occur

* Fix for issue saltstack#59773

- When instantiating the loader grab values of grains and pillars if
  they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.

* Add changelog for saltstack#59773

* _get_initial_pillar function returns pillar

* Fix linter issues

* Clean up test

* Bump deprecation release for neutron

* Uncomment Sulfur release name

* Removing the _ext_nodes deprecation warning and alias.

* Adding changelog.

* Renaming changelog file.

* Update 59804.removed

* Initial pass at fips_mode config option

* Fix pre-commit

* Fix tests and add changelog

* update docs 3003

* update docs 3003 - newline

* Fix warts in changelog

* update releasenotes 3003

* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests

* add distro_arch

* changing the cloud platforms file missed in 1a9b7be

* Update __utils__ calls to import utils in azure

* Add changelog for 59744

* Fix azure unit tests and move to pytest

* Use contextvars from site-packages for thin

If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes saltstack#59942)

* Add regression test for saltstack#59942

* Add changelog for saltstack#59942

* Update filemap to include test_py_versions

* Fix broken thin tests

* Always install the `contextvars` backport, even on Py3.7+

Without this change, salt-ssh cannot target systems with Python <= 3.6

* Use salt-factories to handle the container. Don't override default roster

* Fix thin tests on windows

* No need to use warn log level here

* Fix getsitepackages for old virtualenv versions

* Add explicit pyobjc reqs

* Add back the passthrough stuff

* Remove a line so pre-commit will run

* Bugfix release docs

* Bugfix release docs

* Removing pip-compile log files

* Bump requirements to address a few security issues

* Address traceback on macOS

```
Traceback (most recent call last):
  File "setup.py", line 1448, in <module>
    setup(distclass=SaltDistribution)
  File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
    return distutils.core.setup(**attrs)
  File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
    _setup_distribution = dist = klass(attrs)
  File "setup.py", line 1068, in __init__
    self.update_metadata()
  File "setup.py", line 1074, in update_metadata
    attrvalue = getattr(self, attrname, None)
  File "setup.py", line 1182, in _property_install_requires
    install_requires += _parse_requirements_file(reqfile)
  File "setup.py", line 270, in _parse_requirements_file
    platform.python_version(), _parse_op(op), _parse_ver(ver)
  File "setup.py", line 247, in _check_ver
    return getattr(operator, "__{}__".format(op))(pyver, wanted)
  File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
    c = self._cmp(other)
  File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
    if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```

* Replace `saltstack.com` with `saltproject.io` on URLs being tested

* Add back support to load old entrypoints by iterating instead of type checking

Fixes saltstack#59961

* Fix issue saltstack#59975

* Fix pillar serialization for jinja saltstack#60083

* Fix test

* Add changelog for saltstack#60083

* Update changelog and release for 3003.1

* Remove the changelog source refs

* Add connect to IPCMessageSubscriber's async_methods

Fixes saltstack#60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.

* Add changelog for saltstack#60049

* Update 60049.fixed

* Fix coroutine spelling error

Co-authored-by: Wayne Werner <waynejwerner@gmail.com>

* IPC on windows cannot use socket paths

Fixes saltstack#60298

* Update Jinja2 and lxml due to security related bugfix releases

Jinja2
------

CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3

This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.

lxml
----

CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3

An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.

* fix github actions jobs on branch until bullseye comes out

* Upgrade to `six==1.16.0` to avoid problems on CI runs

```
13:59:02  nox > Session invoke-pre-commit was successful.
13:59:02  nox > Running session invoke-pre-commit
13:59:02  nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02  Collecting blessings==1.7
13:59:02    Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02  Collecting invoke==1.4.1
13:59:02    Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02  Collecting pyyaml==5.3.1
13:59:02    Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02  Collecting six==1.15.0
13:59:02    Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02  Building wheels for collected packages: pyyaml
13:59:02    Building wheel for pyyaml (setup.py) ... -� �\� �|� �/� �-� �\� �|� �done
13:59:02    Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02    Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02  Successfully built pyyaml
13:59:02  Installing collected packages: six, pyyaml, invoke, blessings
13:59:02    Attempting uninstall: six
13:59:02      Found existing installation: six 1.16.0
13:59:02      Uninstalling six-1.16.0:
13:59:02  ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02  nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02  nox > Session invoke-pre-commit failed.
```

* add changelog for saltstack#59982

* Regression test for saltstack#56273

* Fix race condition in batch. saltstack#56273

* Add changelog for saltstack#56273

* Update salt/client/__init__.py

Co-authored-by: Pedro Algarvio <pedro@algarvio.me>

* Update doc for salt/client

* Update changelog/56273.fixed

Thoreau said, "Simplify, Simplify"

* Update docs

* Update docs

* Update CHANGELOG.md

* Update 3003.1.rst

* Fix changelog

Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
garethgreenaway added a commit that referenced this issue Sep 23, 2021
* Merge 3002.6 bugfix changes (#59822)

* Pass `CI_RUN` as an environment variable to the test run.

This allows us to know if we're running the test suite under a CI
environment or not and adapt/adjust if needed

* Migrate `unit.setup` to PyTest

* Backport ae36b15 just for test_install.py

* Only skip tests on CI runs

* Always store git sha in _version.py during installation

* Fix PEP440 compliance.

The wheel metadata version 1.2 states that the package version MUST be
PEP440 compliant.

This means that instead of `3002.2-511-g033c53eccb`, the salt version
string should look like `3002.2+511.g033c53eccb`, a post release of
`3002.2` ahead by 511 commits with the git sha `033c53eccb`

* Fix and migrate `tests/unit/test_version.py` to PyTest

* Skip test if `easy_install` is not available

* We also need to be PEP440 compliant when there's no git history

* Allow extra_filerefs as sanitized kwargs for SSH client

* Fix regression on cmd.run when passing tuples as cmd

Co-authored-by: Alexander Graul <agraul@suse.com>

* Add unit tests to ensure cmd.run accepts tuples

* Add unit test to check for extra_filerefs on SSH opts

* Add changelog file

* Fix comment for test case

* Fix unit test to avoid failing on Windows

* Skip failing test on windows

* Fix test to work on Windows

* Add all ssh kwargs to sanitize_kwargs method

* Run pre-commit

* Fix pylint

* Fix cmdmod loglevel and module_names tests

* Fix pre-commit

* Skip ssh tests if binary does not exist

* Use setup_loader for cmdmod test

* Prevent argument injection in restartcheck

* Add changelog for restartcheck fix

* docs_3002.6

* Add back tests removed in merge

Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>

* Remove glance state module in favor of glance_image

* update wording in changelog

* bump deprecation warning to Silicon.

* Updating warnutil version to Phosphorous.

* Update salt/modules/keystone.py

Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>

* Check $HOMEBREW_PREFIX when linking against libcrypto

When loading `libcrypto`, Salt checks for a Homebrew installation of `openssl`
at Homebrew's default prefix of `/usr/local`. However, on Apple Silicon Macs,
Homebrew's default installation prefix is `/opt/homebrew`. On all platforms,
the prefix is configurable.  If Salt doesn't find one of those `libcrypto`s,
it will fall back on the un-versioned `/usr/lib/libcrypto.dylib`, which will
cause the following crash:

    Application Specific Information:
    /usr/lib/libcrypto.dylib
    abort() called
    Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

This commit checks $HOMEBREW_PREFIX instead of hard-coding `/usr/local`.

* Add test case

* Add changelog for 59808

* Add changelog entry

* Make _find_libcrypto fail on Big Sur if it can't find a library

Right now, if `_find_libcrypto` can't find any externally-managed versions of
libcrypto, it will fall back on the pre-Catalina un-versioned system libcrypto.
This does not exist on Big Sur and it would be better to raise an exception
here rather than crashing later when trying to open it.

* Update _find_libcrypto tests

This commit simplifies the unit tests for _find_libcrypto by mocking out the
host's filesystem and testing the common libcrypto installations (brew, ports,
etc.) on Big Sur. It simplifies the tests for falling back on system versions
of libcrypto on previous versions of macOS.

* Fix description of test_find_libcrypto_with_system_before_catalina

* Patch sys.platform for test_rsax931 tests

* modules/match: add missing "minion_id" in Pillar example

The documented Pillar example for `match.filter_by` lacks the `minion_id` parameter. Without it, the assignment won't work as expected.
- fix documentation
- add tests:
  - to prove the misbehavior of the documented example
  - to prove the proper behaviour when supplying `minion_id`
  - to ensure some misbehaviour observed with compound matchers doesn't occur

* Fix for issue #59773

- When instantiating the loader grab values of grains and pillars if
  they are NamedLoaderContext instances.
- The loader uses a copy of opts.
- Impliment deepcopy on NamedLoaderContext instances.

* Add changelog for #59773

* _get_initial_pillar function returns pillar

* Fix linter issues

* Clean up test

* Bump deprecation release for neutron

* Uncomment Sulfur release name

* Removing the _ext_nodes deprecation warning and alias.

* Adding changelog.

* Renaming changelog file.

* Update 59804.removed

* Initial pass at fips_mode config option

* Fix pre-commit

* Fix tests and add changelog

* update docs 3003

* update docs 3003 - newline

* Fix warts in changelog

* update releasenotes 3003

* add ubuntu-2004-amd64 m2crypto pycryptodome and tcp tests

* add distro_arch

* changing the cloud platforms file missed in 1a9b7be

* Update __utils__ calls to import utils in azure

* Add changelog for 59744

* Fix azure unit tests and move to pytest

* Use contextvars from site-packages for thin

If a contextvars package exists one of the site-packages locations use
it for the generated thin tarball. This overrides python's builtin
contextvars and allows salt-ssh to work with python <=3.6 even when the
master's python is >3.6 (Fixes #59942)

* Add regression test for #59942

* Add changelog for #59942

* Update filemap to include test_py_versions

* Fix broken thin tests

* Always install the `contextvars` backport, even on Py3.7+

Without this change, salt-ssh cannot target systems with Python <= 3.6

* Use salt-factories to handle the container. Don't override default roster

* Fix thin tests on windows

* No need to use warn log level here

* Fix getsitepackages for old virtualenv versions

* Add explicit pyobjc reqs

* Add back the passthrough stuff

* Remove a line so pre-commit will run

* Bugfix release docs

* Bugfix release docs

* Removing pip-compile log files

* Bump requirements to address a few security issues

* Address traceback on macOS

```
Traceback (most recent call last):
  File "setup.py", line 1448, in <module>
    setup(distclass=SaltDistribution)
  File "/Users/jenkins/setup-tests/.venv/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
    return distutils.core.setup(**attrs)
  File "/opt/salt/lib/python3.7/distutils/core.py", line 108, in setup
    _setup_distribution = dist = klass(attrs)
  File "setup.py", line 1068, in __init__
    self.update_metadata()
  File "setup.py", line 1074, in update_metadata
    attrvalue = getattr(self, attrname, None)
  File "setup.py", line 1182, in _property_install_requires
    install_requires += _parse_requirements_file(reqfile)
  File "setup.py", line 270, in _parse_requirements_file
    platform.python_version(), _parse_op(op), _parse_ver(ver)
  File "setup.py", line 247, in _check_ver
    return getattr(operator, "__{}__".format(op))(pyver, wanted)
  File "/opt/salt/lib/python3.7/distutils/version.py", line 46, in __eq__
    c = self._cmp(other)
  File "/opt/salt/lib/python3.7/distutils/version.py", line 337, in _cmp
    if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'
```

* Replace `saltstack.com` with `saltproject.io` on URLs being tested

* Add back support to load old entrypoints by iterating instead of type checking

Fixes #59961

* Fix issue #59975

* Fix pillar serialization for jinja #60083

* Fix test

* Add changelog for #60083

* Update changelog and release for 3003.1

* Remove the changelog source refs

* Add connect to IPCMessageSubscriber's async_methods

Fixes #60049 by making sure an IPCMessageSubscriber that is wrapped by
SyncWrapper has a connect method that runs the coroutine rather than
returns a fugure.

* Add changelog for #60049

* Update 60049.fixed

* Fix coroutine spelling error

Co-authored-by: Wayne Werner <waynejwerner@gmail.com>

* IPC on windows cannot use socket paths

Fixes #60298

* Update Jinja2 and lxml due to security related bugfix releases

Jinja2
------

CVE-2020-28493
moderate severity
Vulnerable versions: < 2.11.3
Patched version: 2.11.3

This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9.-]+.[a-zA-Z0-9.-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory.

lxml
----

CVE-2021-28957
moderate severity
Vulnerable versions: < 4.6.3
Patched version: 4.6.3

An XSS vulnerability was discovered in the python lxml clean module versions before 4.6.3. When disabling the safe_attrs_only and forms arguments, the Cleaner class does not remove the formaction attribute allowing for JS to bypass the sanitizer. A remote attacker could exploit this flaw to run arbitrary JS code on users who interact with incorrectly sanitized HTML. This issue is patched in lxml 4.6.3.

* fix github actions jobs on branch until bullseye comes out

* Upgrade to `six==1.16.0` to avoid problems on CI runs

```
13:59:02  nox > Session invoke-pre-commit was successful.
13:59:02  nox > Running session invoke-pre-commit
13:59:02  nox > pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt
13:59:02  Collecting blessings==1.7
13:59:02    Using cached blessings-1.7-py3-none-any.whl (18 kB)
13:59:02  Collecting invoke==1.4.1
13:59:02    Using cached invoke-1.4.1-py3-none-any.whl (210 kB)
13:59:02  Collecting pyyaml==5.3.1
13:59:02    Using cached PyYAML-5.3.1.tar.gz (269 kB)
13:59:02  Collecting six==1.15.0
13:59:02    Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
13:59:02  Building wheels for collected packages: pyyaml
13:59:02    Building wheel for pyyaml (setup.py) ... -� �\� �|� �/� �-� �\� �|� �done
13:59:02    Created wheel for pyyaml: filename=PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl size=546391 sha256=e42e1d66cc32087f4d33ceb81268c86b59f1a97029b19459f91b8d6ad1430167
13:59:02    Stored in directory: /var/jenkins/.cache/pip/wheels/5e/03/1e/e1e954795d6f35dfc7b637fe2277bff021303bd9570ecea653
13:59:02  Successfully built pyyaml
13:59:02  Installing collected packages: six, pyyaml, invoke, blessings
13:59:02    Attempting uninstall: six
13:59:02      Found existing installation: six 1.16.0
13:59:02      Uninstalling six-1.16.0:
13:59:02  ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/var/jenkins/.cache/pre-commit/repomw8oee1s/py_env-python3/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc'
13:59:02
13:59:02  nox > Command pip install --progress-bar=off -r requirements/static/ci/py3.7/invoke.txt failed with exit code 1
13:59:02  nox > Session invoke-pre-commit failed.
```

* add changelog for #59982

* Regression test for #56273

* Fix race condition in batch. #56273

* Add changelog for #56273

* Update salt/client/__init__.py

Co-authored-by: Pedro Algarvio <pedro@algarvio.me>

* Update doc for salt/client

* Update changelog/56273.fixed

Thoreau said, "Simplify, Simplify"

* Update docs

* Update docs

* Update CHANGELOG.md

* Update 3003.1.rst

* Ignore configuration for 'enable_fqdns_grains' for AIX, Solaris and Juniper

* Added changelog

* Let Mac OS Mojave run for 8 hours to avoid timeout

* Remove FreeBSD-12.2

* Use Popen for VT

* Still allow shell True

* Drop shlex split

* Add crypto re-init

* Fix pre-commit

* Do not call close in isalive

* Skip tests not valid on windows

* Cleanup things that are not really needed

* We do not support irix

* Fix pre-commit

* Remove commented out lines

* Add changelog for #60504

* Fix pre-commit issues

* pyupgrade does not remove six imports

* Fix OSErrors in some test cases

* Remove un-needed args processing

* Make state_running test more reliable

* Removing tmpfs from Fedora 33.

* Address leaks in fileserver caused by git backends

At this time we do not have the ability to fix the upstream memory leaks
in the gitfs backend providers. Work around their limitations by
periodically restarting the file server update proccess. This will at
least partially address #50313

* Remove un-used import

* Fix warts caused by black version

* Add changelog

* We don't need two changelogs

* Also pin the ``pip`` upgrade to be ``<21.2``

* Update the external ipaddress to the latest 3.9.5 version which has some security fixes.  Updating the compat.p to use the vendored version if the python version is below 3.9.5 and only run the test_ipaddress.py tests if below 3.9.5.

* Adding changelog

* Requested changes.

* Add shh_timeout to ssh_kwargs

* move to with blocks

* one with block

* reight crypto

* add back test file

* add changelog

* change log file number

* add m2crypt support

* only check m2crpto

* Delete 60571.fixed

* add back log

* add newline

* add newline for log file

* Work around pypa/pip#9450

See pypa/pip#10212

* Drop six and Py2

* [3003.2] Add server alive (#60573)

* add server alive

* rename log

* change default alive time

* add requested changes

* format string

* reformat string again

* run pre

* customize

* space

* remove EOF dead space

* fix pre-commit

* run pre

Co-authored-by: Megan Wilhite <megan.wilhite@gmail.com>

* Changelog for 3003.2

* Man pages update for 3003.2

* Allow CVE entries in `changelog/`

* Add security type for towncrier changelog

* Add security type for changelog entries pre-commit check

* Pin to ``pip>=20.2.4,<21.2``

Refs pypa/pip#9450

* Drop six and Py2

* Fix bug introduced in #59648

Fixes #60046

* Add changelog

* Fix doc builds

* fix release notes about dropping ubuntu 16.04

* update file client

* add changelog file

* update changelog

* Check permissions of minion config directory

* Fix some wording in the messagebox and in comments

* Add changelog

* Fix extension for changelog

* Add missing commas. It also worked, but now is better

* docs_3003.3

* fixing version numbers in man pages.

* removing newlines.

* removing newlines.

* Fixing release notes.

* Fix changelog file for 3003.2 release

* Fix test_state test using loader.context

* Re-add test_context test

* Allow Local System account, add timestamp

* swaping the git-source for vsphere-automation-sdk-python

* Remove destroy, handled in context manager

Co-authored-by: Daniel Wozniak <dwozniak@saltstack.com>
Co-authored-by: Pedro Algarvio <pedro@algarvio.me>
Co-authored-by: Bryce Larson <brycel@vmware.com>
Co-authored-by: Pablo Suárez Hernández <psuarezhernandez@suse.com>
Co-authored-by: Alexander Graul <agraul@suse.com>
Co-authored-by: Frode Gundersen <fgundersen@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@saltstack.com>
Co-authored-by: Gareth J. Greenaway <gareth@wiked.org>
Co-authored-by: Hoa-Long Tam <hoalong@apple.com>
Co-authored-by: krionbsd <krion@freebsd.org>
Co-authored-by: Elias Probst <e.probst@ssc-services.de>
Co-authored-by: Daniel A. Wozniak <dwozniak@vmware.com>
Co-authored-by: Frode Gundersen <frogunder@gmail.com>
Co-authored-by: twangboy <slee@saltstack.com>
Co-authored-by: twangboy <leesh@vmware.com>
Co-authored-by: ScriptAutomate <derek@icanteven.io>
Co-authored-by: Wayne Werner <waynejwerner@gmail.com>
Co-authored-by: David Murphy < dmurphy@saltstack.com>
Co-authored-by: Joe Eacott <jeacott@vmware.com>
Co-authored-by: cmcmarrow <charles.mcmarrow.4@gmail.com>
Co-authored-by: Twangboy <shane.d.lee@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Aluminium Release Post Mg and Pre Si Bug broken, incorrect, or confusing behavior Core relates to code central or existential to Salt info-needed waiting for more info point-release minor release Regression The issue is a bug that breaks functionality known to work in previous releases. severity-high 2nd top severity, seen by most users, causes major problems ZD The issue is related to a Zendesk customer support ticket.
Projects
None yet
Development

Successfully merging a pull request may close this issue.