Bug 1768268

Summary: Salt-minion wont start after upgrade to 31 with error about 'tornado.stack_context'
Product: [Fedora] Fedora Reporter: Jason Elwell <musikplayr>
Component: saltAssignee: Clint Savage <herlo1>
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 31CC: david-dm.murphy, herlo1, itamar
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-11-05 01:45:27 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jason Elwell 2019-11-03 19:21:50 UTC
Description of problem:
Salt-minion fails to start after upgrade to F31

Version-Release number of selected component (if applicable):
salt-minion-2019.2.1rc0-3.fc31.noarch
python3-tornado-6.0.2-2.fc31.x86_64


How reproducible:
Start service salt-minion after F31 upgrade

Steps to Reproduce:
1. systemctl start salt-minion.service

Actual results:
salt-minion[56324]: ModuleNotFoundError: No module named 'tornado.stack_context'
systemd[1]: salt-minion.service: Main process exited, code=exited, status=247/n/a
systemd[1]: salt-minion.service: Failed with result 'oom-kill'.systemd[1]: salt-minion.service: Consumed 13min 11.123s CPU time.


Expected results:
Start success

Additional info:
--This loops endlessly until oom-killer cleans it up:
Nov 03 13:04:20 localhost salt-minion[12961]: [CRITICAL] Unexpected error while connecting to salt
Nov 03 13:04:20 localhost salt-minion[12961]: Traceback (most recent call last):
Nov 03 13:04:20 localhost salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/minion.py", line 1025, in _connect_minion
Nov 03 13:04:20 localhost salt-minion[12961]:     yield minion.connect_master(failed=failed)
Nov 03 13:04:20 localhost salt-minion[12961]:   File "/usr/lib64/python3.7/site-packages/tornado/gen.py", line 735, in run
Nov 03 13:04:20 localhost salt-minion[12961]:     value = future.result()
Nov 03 13:04:20 localhost salt-minion[12961]:   File "/usr/lib64/python3.7/site-packages/tornado/gen.py", line 742, in run
salt-minion[12961]:     yielded = self.gen.throw(*exc_info)  # type: ignore
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/minion.py", line 1224, in connect_master
salt-minion[12961]:     master, self.pub_channel = yield self.eval_master(self.opts, self.timeout, self.safe, failed)
salt-minion[12961]:   File "/usr/lib64/python3.7/site-packages/tornado/gen.py", line 735, in run
salt-minion[12961]:     value = future.result()
salt-minion[12961]:   File "/usr/lib64/python3.7/site-packages/tornado/gen.py", line 209, in wrapper
salt-minion[12961]:     yielded = next(result)
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/minion.py", line 749, in eval_master
salt-minion[12961]:     pub_channel = salt.transport.client.AsyncPubChannel.factory(self.opts, **factory_kwargs)
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/transport/client.py", line 174, in factory
salt-minion[12961]:     import salt.transport.zeromq
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/transport/zeromq.py", line 36, in <module>
salt-minion[12961]:     import salt.transport.mixins.auth
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/transport/mixins/auth.py", line 16, in <module>
salt-minion[12961]:     import salt.master
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/master.py", line 41, in <module>
salt-minion[12961]:     import salt.runner
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/runner.py", line 19, in <module>
salt-minion[12961]:     from salt.client import mixins
salt-minion[12961]:   File "/usr/lib/python3.7/site-packages/salt/client/mixins.py", line 36, in <module>
salt-minion[12961]:     import tornado.stack_context
salt-minion[12961]: ModuleNotFoundError: No module named 'tornado.stack_context'

Comment 1 Jason Elwell 2019-11-03 20:05:18 UTC
From https://www.tornadoweb.org/en/stable/releases/v5.1.0.html
* Tornado 6.0 will drop support for Python 2.7 and 3.4. The minimum supported Python version will be 3.5.2.
* The tornado.stack_context module is deprecated and will be removed in Tornado 6.0.

Believing that I don't have anything else that requires tornado, here is a super hackish fix:

As root:
#Remove tornado package
rpm -e --nodeps python3-tornado

#install old tornado version from python repos
pip3 install tornado==5.1.1

#I'm not smart enough to know why it works interactively but not within salt-minion, so have a couple links.
ln -s /usr/local/lib64/python3.7/site-packages/tornado /usr/lib64/python3.7/site-packages
ln -s /usr/local/lib64/python3.7/site-packages/tornado-5.1.1-py3.7.egg-info/ /usr/lib64/python3.7/site-packages

Comment 2 Jason Elwell 2019-11-05 01:45:27 UTC

*** This bug has been marked as a duplicate of bug 1748170 ***