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

Python 2.4 - Stuck on gathering facts - Thread object has no attribute ident #477

Closed
dbiegunski opened this issue Jan 22, 2019 · 8 comments
Closed

Comments

@dbiegunski
Copy link

@dbiegunski dbiegunski commented Jan 22, 2019

As per issue #408 this was fixed. But it is still not working properly.

Log PLAY [all] ******************************************************************************************* [pid 31853] 16:42:49.681035 D mitogen: mitogen.service.Pool(0x7f9bb590af50, size=16, th='MainThread'): initialized [pid 31853] 16:42:49.682498 D ansible_mitogen.process: Service pool configured: size=16

TASK [Gathering Facts] *******************************************************************************
[pid 31872] 16:42:49.713466 D mitogen: unix.connect(path='/tmp/mitogen_unix_ikDEd1')
[pid 31872] 16:42:49.714528 D mitogen: unix.connect(): local ID is 1, remote is 0
[pid 31853] 16:42:49.717632 D mitogen: mitogen.ssh.Stream(u'default').connect()
[pid 31853] 16:42:49.841322 D mitogen: create_child() child 31875 fd 49, parent 31853, cmd: ssh -o "LogLevel ERROR" -o "Compression yes" -o "ServerAliveInterval 15" -o "ServerAliveCountMax 3" -o "BatchMode yes" -o "StrictHostKeyChecking yes" -C -o ControlMaster=auto -o ControlPersist=60s censored /usr/bin/python -c "'import codecs,os,sys;=codecs.decode;exec((_("eNqFkVFLwzAUhZ/XX9G3JCx26eaGFArKHsQHEYq4Bx2SNukMtklI2tX5673rhLXzwbd8nHNzDvdmdJMaH1llJSaBo92AVBkClMZ9YpIEE3iL1s4xozFj5MwZHZIDNT5xURkvcTYEN4TNEDoACPQHiK94A6l1mKYhEtx1SqOQa9GL8ksWbcPzSvbyrPVulis9s4fmw2gEPScXtmnaD+6l88ro12Sx7WOl3isHjO6y+xeGtul47OQBrPBYoGOcIlyrxuykTgopnCqiRlaVku4ql7wVt9bvas+1Z2we1T7KQYwKnizim+WCIBJASudUI3FM0ePD8xNj7E0jaFcYAUcgwTp9x8czCGOlhuUjlyMSOckFjq+XqxWh6FtZ+Km06dm3oajL0fEypf0NWPfv07Yv3N1/7r8t41HLH6MXuB0=".encode(),"base64"),"zip"))'"
[pid 31853] 16:42:49.843274 D mitogen: mitogen.ssh.Stream(u'local.31875').connect(): stdin=49, stdout=46, diag=50
[pid 31853] 16:42:53.393369 D mitogen: mitogen.ssh.Stream(u'local.31875'): received 'MITO000\n'
[pid 31853] 16:42:53.393752 D mitogen: mitogen.ssh.Stream(u'local.31875')._ec0_received()
[pid 31853] 16:42:53.406121 D mitogen: CallChain(Context(2, u'ssh.censored')).call_async(): ansible_mitogen.target.init_child(candidate_temp_dirs=[u'~/.ansible/tmp', u'/var/tmp', u'/tmp'], log_level=10)
[pid 31853] 16:42:53.409804 D mitogen: _build_tuple('/usr/lib/python2.7/site-packages/ansible/init.py', u'ansible') -> [u'cli', u'compat', u'config', u'constants', u'errors', u'executor', u'galaxy', u'inventory', u'module_utils', u'modules', u'parsing', u'playbook', u'plugins', u'release', u'template', u'utils', u'vars']
[pid 31853] 16:42:53.412160 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible.release')
[pid 31853] 16:42:53.412512 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible')
[pid 31853] 16:42:53.414952 D mitogen: _build_tuple('/usr/lib/python2.7/site-packages/ansible/module_utils/init.py', u'ansible.module_utils') -> [u'_text', u'a10', u'ansible_tower', u'aos', u'api', u'asa', u'avi', u'azure_rm_common', u'basic', u'bigswitch_utils', u'cloud', u'cloudengine', u'cloudstack', u'cnos', u'cnos_devicerules', u'cnos_errorcodes', u'connection', u'database', u'dellos10', u'dellos6', u'dellos9', u'dimensiondata', u'docker_common', u'ec2', u'eos', u'exoscale', u'f5_cli', u'f5_utils', u'facts', u'fortios', u'gcdns', u'gce', u'gcp', u'infinibox', u'ios', u'iosxr', u'ipa', u'ismount', u'json_utils', u'junos', u'known_hosts', u'lxd', u'mysql', u'netapp', u'netcfg', u'netcli', u'netconf', u'network', u'network_common', u'nxos', u'openstack', u'openswitch', u'ordnance', u'ovirt', u'postgres', u'pycompat24', u'rax', u'redhat', u'service', u'shell', u'six', u'splitter', u'sros', u'univention_umc', u'urls', u'vca', u'vmware', u'vyos']
[pid 31853] 16:42:53.415285 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible.module_utils')
[pid 31853] 16:42:53.487548 D mitogen: _get_module_via_sys_modules('datetime') -> <module 'datetime' from '/usr/lib64/python2.7/lib-dynload/datetime.so'>
[pid 31853] 16:42:53.488514 D mitogen: get_module_source('datetime'): cannot find source
[pid 31853] 16:42:53.490217 D mitogen: _get_module_via_sys_modules('syslog') -> <module 'syslog' from '/usr/lib64/python2.7/lib-dynload/syslog.so'>
[pid 31853] 16:42:53.490401 D mitogen: get_module_source('syslog'): cannot find source
[pid 31853] 16:42:53.498128 D mitogen: _get_module_via_sys_modules('select') -> <module 'select' from '/usr/lib64/python2.7/lib-dynload/selectmodule.so'>
[pid 31853] 16:42:53.498313 D mitogen: get_module_source('select'): cannot find source
[pid 31853] 16:42:53.500008 D mitogen: _get_module_via_sys_modules('grp') -> <module 'grp' from '/usr/lib64/python2.7/lib-dynload/grpmodule.so'>
[pid 31853] 16:42:53.500188 D mitogen: get_module_source('grp'): cannot find source
[pid 31853] 16:42:53.528401 D mitogen: _get_module_via_sys_modules('itertools') -> <module 'itertools' from '/usr/lib64/python2.7/lib-dynload/itertoolsmodule.so'>
[pid 31853] 16:42:53.528659 D mitogen: get_module_source('itertools'): cannot find source
[pid 31853] 16:42:53.530799 D mitogen: _get_module_via_sys_modules('time') -> <module 'time' from '/usr/lib64/python2.7/lib-dynload/timemodule.so'>
[pid 31853] 16:42:53.531061 D mitogen: get_module_source('time'): cannot find source
[pid 31853] 16:42:53.537002 D mitogen: _get_module_via_sys_modules('operator') -> <module 'operator' from '/usr/lib64/python2.7/lib-dynload/operator.so'>
[pid 31853] 16:42:53.537225 D mitogen: get_module_source('operator'): cannot find source
[pid 31853] 16:42:53.537643 D mitogen: _get_module_via_sys_modules('_locale') -> <module '_locale' from '/usr/lib64/python2.7/lib-dynload/_localemodule.so'>
[pid 31853] 16:42:53.537853 D mitogen: get_module_source('_locale'): cannot find source
[pid 31853] 16:42:53.541660 D mitogen: _get_module_via_sys_modules('_selinux') -> <module '_selinux' from '/usr/lib64/python2.7/site-packages/selinux/_selinux.so'>
[pid 31853] 16:42:53.541914 D mitogen: get_module_source('_selinux'): cannot find source
[pid 31853] 16:42:53.542755 D mitogen: _get_module_via_sys_modules('os.path') -> <module 'posixpath' from '/usr/lib64/python2.7/posixpath.pyc'>
[pid 31853] 16:42:53.556781 D mitogen: _get_module_via_sys_modules('fcntl') -> <module 'fcntl' from '/usr/lib64/python2.7/lib-dynload/fcntlmodule.so'>
[pid 31853] 16:42:53.557441 D mitogen: get_module_source('fcntl'): cannot find source
[pid 31853] 16:42:53.557855 D mitogen: _get_module_via_sys_modules('cStringIO') -> <module 'cStringIO' from '/usr/lib64/python2.7/lib-dynload/cStringIO.so'>
[pid 31853] 16:42:53.558087 D mitogen: get_module_source('cStringIO'): cannot find source
[pid 31853] 16:42:53.572655 D mitogen: _get_module_via_sys_modules('cPickle') -> <module 'cPickle' from '/usr/lib64/python2.7/lib-dynload/cPickle.so'>
[pid 31853] 16:42:53.572921 D mitogen: get_module_source('cPickle'): cannot find source
[pid 31853] 16:42:53.578493 D mitogen: _get_module_via_sys_modules('_collections') -> <module '_collections' from '/usr/lib64/python2.7/lib-dynload/_collectionsmodule.so'>
[pid 31853] 16:42:53.578695 D mitogen: get_module_source('_collections'): cannot find source
[pid 31853] 16:42:53.590307 D mitogen: _get_module_via_sys_modules('_hashlib') -> <module '_hashlib' from '/usr/lib64/python2.7/lib-dynload/_hashlib.so'>
[pid 31853] 16:42:53.590491 D mitogen: get_module_source('_hashlib'): cannot find source
[pid 31853] 16:42:53.590858 D mitogen: _get_module_via_sys_modules('binascii') -> <module 'binascii' from '/usr/lib64/python2.7/lib-dynload/binascii.so'>
[pid 31853] 16:42:53.591143 D mitogen: get_module_source('binascii'): cannot find source
[pid 31853] 16:42:53.599477 D mitogen: _get_module_via_sys_modules('systemd._journal') -> <module 'systemd._journal' from '/usr/lib64/python2.7/site-packages/systemd/_journal.so'>
[pid 31853] 16:42:53.599735 D mitogen: get_module_source('systemd._journal'): cannot find source
[pid 31853] 16:42:53.600018 D mitogen: _get_module_via_sys_modules('systemd._reader') -> <module 'systemd._reader' from '/usr/lib64/python2.7/site-packages/systemd/_reader.so'>
[pid 31853] 16:42:53.600264 D mitogen: get_module_source('systemd._reader'): cannot find source
[pid 31853] 16:42:53.608228 D mitogen: _get_module_via_sys_modules('_functools') -> <module '_functools' from '/usr/lib64/python2.7/lib-dynload/_functoolsmodule.so'>
[pid 31853] 16:42:53.608412 D mitogen: get_module_source('_functools'): cannot find source
[pid 31853] 16:42:53.612665 D mitogen: _get_module_via_sys_modules('_random') -> <module '_random' from '/usr/lib64/python2.7/lib-dynload/_randommodule.so'>
[pid 31853] 16:42:53.612847 D mitogen: get_module_source('_random'): cannot find source
[pid 31853] 16:42:53.613238 D mitogen: _get_module_via_sys_modules('math') -> <module 'math' from '/usr/lib64/python2.7/lib-dynload/math.so'>
[pid 31853] 16:42:53.613424 D mitogen: get_module_source('math'): cannot find source
[pid 31853] 16:42:53.613782 D mitogen: _get_module_via_sys_modules('_io') -> <module '_io' from '/usr/lib64/python2.7/lib-dynload/_io.so'>
[pid 31853] 16:42:53.613981 D mitogen: get_module_source('_io'): cannot find source
[pid 31853] 16:42:53.615189 D mitogen: _get_module_via_sys_modules('strop') -> <module 'strop' from '/usr/lib64/python2.7/lib-dynload/stropmodule.so'>
[pid 31853] 16:42:53.615364 D mitogen: get_module_source('strop'): cannot find source
[pid 31853] 16:42:53.616699 D mitogen: _get_module_via_sys_modules('_json') -> <module '_json' from '/usr/lib64/python2.7/lib-dynload/_json.so'>
[pid 31853] 16:42:53.617016 D mitogen: get_module_source('_json'): cannot find source
[pid 31853] 16:42:53.617464 D mitogen: _get_module_via_sys_modules('_heapq') -> <module '_heapq' from '/usr/lib64/python2.7/lib-dynload/_heapq.so'>
[pid 31853] 16:42:53.617688 D mitogen: get_module_source('_heapq'): cannot find source
[pid 31853] 16:42:53.620212 D mitogen: _get_module_via_sys_modules('_struct') -> <module '_struct' from '/usr/lib64/python2.7/lib-dynload/_struct.so'>
[pid 31853] 16:42:53.620442 D mitogen: get_module_source('_struct'): cannot find source
[pid 31853] 16:42:53.627847 D mitogen: _get_module_via_sys_modules('_ctypes') -> <module '_ctypes' from '/usr/lib64/python2.7/lib-dynload/_ctypes.so'>
[pid 31853] 16:42:53.628107 D mitogen: get_module_source('_ctypes'): cannot find source
[pid 31853] 16:42:53.628412 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible.module_utils._text')
[pid 31853] 16:42:53.629124 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible.module_utils.pycompat24')
[pid 31853] 16:42:53.629481 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible.module_utils.six')
[pid 31853] 16:42:53.630463 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible.module_utils.basic')
[pid 31853] 16:42:53.631439 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible.module_utils.json_utils')
[pid 31853] 16:42:53.632197 D mitogen: _build_tuple('/usr/share/ansible_mitogen/init.py', u'ansible_mitogen') -> [u'connection', u'loaders', u'logging', u'mixins', u'module_finder', u'parsing', u'planner', u'plugins', u'process', u'runner', u'services', u'strategy', u'target']
[pid 31853] 16:42:53.632417 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible_mitogen')
[pid 31853] 16:42:53.658674 D mitogen: _get_module_via_sys_modules('zlib') -> <module 'zlib' from '/usr/lib64/python2.7/lib-dynload/zlibmodule.so'>
[pid 31853] 16:42:53.658930 D mitogen: get_module_source('zlib'): cannot find source
[pid 31853] 16:42:53.673752 D mitogen: _get_module_via_sys_modules('_socket') -> <module '_socket' from '/usr/lib64/python2.7/lib-dynload/_socketmodule.so'>
[pid 31853] 16:42:53.673987 D mitogen: get_module_source('_socket'): cannot find source
[pid 31853] 16:42:53.674387 D mitogen: _get_module_via_sys_modules('_ssl') -> <module '_ssl' from '/usr/lib64/python2.7/lib-dynload/_ssl.so'>
[pid 31853] 16:42:53.674580 D mitogen: get_module_source('_ssl'): cannot find source
[pid 31853] 16:42:53.682062 D mitogen: _get_module_via_sys_modules('termios') -> <module 'termios' from '/usr/lib64/python2.7/lib-dynload/termios.so'>
[pid 31853] 16:42:53.682263 D mitogen: get_module_source('termios'): cannot find source
[pid 31853] 16:42:53.691738 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible_mitogen.target')
[pid 31853] 16:42:53.693748 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'mitogen.fork')
[pid 31853] 16:42:53.694422 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'mitogen.parent')
[pid 31853] 16:42:53.703338 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'mitogen.select')
[pid 31853] 16:42:53.704070 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'mitogen.service')
[pid 31853] 16:42:53.707664 D mitogen: _send_load_module(mitogen.ssh.Stream(u'ssh.censored'), u'ansible_mitogen.runner')
[pid 31853] 16:42:53.708263 D mitogen: _build_tuple('/usr/share/mitogen/init.py', u'mitogen') -> [u'compat', u'core', u'debug', u'doas', u'docker', u'fakessh', u'fork', u'jail', u'kubectl', u'lxc', u'lxd', u'master', u'minify', u'parent', u'select', u'service', u'setns', u'ssh', u'su', u'sudo', u'unix', u'utils']
[pid 31853] 16:42:53.708647 D mitogen: mitogen.parent.DiagLogStream(fd=50, u'ssh.censored'): u'Traceback (most recent call last):'
[pid 31853] 16:42:53.708755 D mitogen: mitogen.parent.DiagLogStream(fd=50, u'ssh.censored'): u' File "", line 3129, in ?'
[pid 31853] 16:42:53.708845 D mitogen: mitogen.parent.DiagLogStream(fd=50, u'ssh.censored'): u' File "", line 3097, in main'
[pid 31853] 16:42:53.708962 D mitogen: mitogen.parent.DiagLogStream(fd=50, u'ssh.censored'): u' File "", line 2966, in _setup_master'
[pid 31853] 16:42:53.709058 D mitogen: mitogen.parent.DiagLogStream(fd=50, u'ssh.censored'): u' File "", line 2633, in init'
[pid 31853] 16:42:53.709139 D mitogen: mitogen.parent.DiagLogStream(fd=50, u'ssh.censored'): u"AttributeError: 'Thread' object has no attribute 'ident'"

@dw
Copy link
Member

@dw dw commented Jan 22, 2019

Good lord, you are trying to use the Ansible extension! Okay, that's a bit of a harder task, but I will look at it. I thought you were just playing with the library.

@dw
Copy link
Member

@dw dw commented Jan 22, 2019

What OS are you targeting? If it is available as a Docker image, this might be very useful for CI (eventually -- there might be quite some work to get this going properly)

@dw
Copy link
Member

@dw dw commented Jan 22, 2019

Which version of Ansible are you using that still supports 2.4?

@dbiegunski
Copy link
Author

@dbiegunski dbiegunski commented Jan 23, 2019

Actually python 2.4 is on the target server.
The OS is RHEL 5.11

Ansible is running with python 2.7.5 and its fine with RHEL 6 and 7 but hangs with RHEL 5 for some reason.

Does the python version on target servers matter ?

dw added a commit that referenced this issue Jan 25, 2019
Allows much more of any tracebacks present to become visible.
dw added a commit that referenced this issue Jan 25, 2019
Otherwise cPickle will not call __reduce__().
dw added a commit that referenced this issue Jan 25, 2019
dw added a commit that referenced this issue Jan 25, 2019
dw added a commit that referenced this issue Jan 25, 2019
dw added a commit that referenced this issue Jan 25, 2019
dw added a commit that referenced this issue Jan 25, 2019
dw added a commit that referenced this issue Jan 25, 2019
Making CallError inherit from object broke 'raise CallError()'.

Instead use pure-Python pickler on 2.4 (grmbl) and force it to emit
new-style-alike output for what is otherwise a classic class.

Remove needless complexity from _unpickle_call_error() that only worked
for new-style classes.
dw added a commit that referenced this issue Jan 25, 2019
dw added a commit that referenced this issue Jan 25, 2019
This is needed to cope Ansible 2.3 doing weird stuff as usual. It serves
up __init__.py for ansible and ansible.module_utils as hard-coded
namespace packages, the real ansible/__init__.py on disk is not 2.4
compatible.
@dbiegunski
Copy link
Author

@dbiegunski dbiegunski commented Jan 27, 2019

Wow thanks for the fast work ! Can't wait to clone your branch once ansible tests will be fixed !

dw added a commit that referenced this issue Jan 27, 2019
Now using Docker to get correct libc.
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
Since Python 2.4 fork is so defective, we must use subprocesses for
mitogen_task_isolation=fork. This has plenty of upside, since the long
term goal is to dump forking altogether. This allows a gentle
introduction of its replacement.
dw added a commit that referenced this issue Jan 27, 2019
os.path.exists physical module name varies across major Python versions.
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
Ansible 2.3/Python 2.4 work revealed there is no guarantee a slow target
will have written the initial job status file out before a fast
controller makes an initial check for it. Therefore, provide AsyncRunner
with a sender it should send a message to when the initial job file has
been written.

As a bonus, also catch and report exceptions happening early in
AsyncRunner, rather than leaving them to end up in -vvv output.
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
We don't care if 2.3 can talk to newer systems, just CentOS 5/Py2.4.
dw added a commit that referenced this issue Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
@dw dw closed this in ac4e61e Jan 27, 2019
dw added a commit that referenced this issue Jan 27, 2019
* origin/dmw: (135 commits)
  tests: just disable the test.
  tests: hopefully fix this dumb test for the final time
  docs: update Changelog; closes #477.
  issue #477: use MITOGEN_INVENTORY_FILE everywhere.
  issue #477: hacksmash weird 2.3 inventory_file var issue.
  issue #477: travis.yml typo.
  issue #477: fix sudo_args selection.
  issue #477: one more conditional test.
  issue #477: enable Ansible 2.3.3 CI.
  issue #477: some more conditional tests.
  docs: update Changelog.
  issue #477 / ansible: avoid a race in async job startup.
  issue #477: use assert_equal for nicer debug.
  issue #477: fix source of become_flags on 2.3.
  issue #477: add Connection.homedir test.
  core: docstring tidyups.
  core: ensure early debug messages are logged correctly.
  core: log disconnection reason.
  issue #477: target.file_exists() wrapper.
  issue #477: introduce subprocess isolation.
  ansible: docstring fixes.
  issue #477: paper over Ansible 2.3 flag handling difference
  issue #477: update forking_correct_parent for subprocess isolation
  issue #477: shlex.split() in 2.4 required bytes input.
  issue #477: get rid of perl JSON module requirement.
  issue #477: Ansible 2.3 did not support gather_facts min subset.
  issue #477: CentOS 5 image requires perl installed too.
  issue #477: missing stub-su.py from 137f5fa
  issue #477: 2.4-compatible syntax.
  issue #477: clearing glibc caches is not possible on Py2.4.
  parent: --with-pydebug bootstrap could fail due to corrupted stream
  issue #477: install simplejson for vanilla tests.
  docs: update Changelog.
  ansible: synchronize module needs '.docker_cmd' attr for Docker plugin.
  issue #477: add basic su_test and Py2.4 polyfill.
  issue #477: import updated Python build scripts
  ci: don't use the TTY->pipe hack except on Travis where it's needed.
  WIP first run of py24 CI
  issue #477: initial Python 2.4.6 build for CI.
  issue #477: enable git-lfs for tests/data/*.tar.bz2.
  issue #477: import build script for Python 2.4.6.
  issue #477: add mitogen_py24 CI test type.
  issue #477: disable Django parts of module_finder_test on 2.4.
  issue #477: clean up globals after unix_test.
  issue #477: remove unused pytest bits from importer_test.
  issue #477: remove fork use from unix_test.
  parent: don't kill child when profiling=True
  issue #485: import new throuhgput bench
  issue #477: more fork removal
  issue #477: Py2.4 startswith() did not support tuples.
  issue #477: util/fakessh/two_three_compat fixes.
  issue #477: call_function_test fixes for 2.4.
  issue #477: promote setup_gil() to mitogen.utils
  issue #477: fix lxc_test any polyfill import.
  issue #477: stop using fork in responder_test.
  issue #477: stop using fork in service_test.
  issue #477: Python<2.5 ioctl() request parameter was signed.
  issue #477: stop using fork() in parent_test, compatible enumerate().
  issue #477: Popen.terminate() polyfill for Py2.4.
  issue #477: stop using .fork() in router_test, one small 2.4 fix.
  issue #477: document master.Router.max_message_size.
  issue #477: old Py zlib did not include extended exception text.
  issue #477: stop using router.fork() in receiver_test
  issue #477: any() polyfill for lxc_test.
  issue #477: replace type(e) -> __class__ for an exception
  issue #477: old Mock does not throw side_effect exceptions from a list
  issue #477: 2.4 stat() returned int timestamps not float.
  issue #477: set().union(a, b, ..) unsupported on Py2.4.
  issue #477: Logger.log(extra=) unsupported on Py2.4.
  issue #477: fix another Threading.getName() call.
  issue #477: %f date format requires Py2.6 or newer.
  issue #477: make mitogen.fork unsupported on Py<2.6.
  issue #477: Py2.4 dep scanner bytecode difference
  Drop 'alpha' trove classifier
  issue #477: fix another str/bytes mixup.
  issue #477: blacklist 'thread' module to avoid roundtrip on 2.x->3.x
  issue #477: fix 3.x failure in new target.set_file_mode() function.
  issue #477: fix 3.x failure in new target.set_file_mode() function.
  issue #477: fix 2 runner tests on Ansible 2.7.
  issue #477: fix 3.x test regressions.
  issue #477: fix new KwargsTest on Python 3.x.
  issue #477: ModuleFinder now returns Unicode module names.
  issue #477: Python3 does not have Pickler.dispatch.
  issue #477: ModuleFinder test fixes.
  issue #477: Ansible 2.3 compatible regression/all.yml.
  issue #477: Ansible 2.3 requires placeholder module for assert_equals
  issue #477: build a CentOS 5/Py2.4 container + playbook compat fixes.
  issue #477: use PY24 constant rather than explicit test.
  issue #477: backport mitogen.master to Python 2.4.
  issue #477: parent: make iter_read() log disconnect reason.
  issue #477: backport ansible_mitogen.runner to 2.4.
  issue #477: backport various test modules to Python 2.4.
  issue #477: backport ansible_mitogen/target.py to Python2.4
  issue #477: add all() polyfill to custom_python_detect_environmnet
  issue #477: polyfill partition() use in mitogen.parent.
  issue #477: polyfill partition() use in mitogen.service.
  issue #477: polyfill partition() use in mitogen.ssh.
  issue #477: vendorize the last 2.4-compatible simplejson
  issue #477: _update_linecache() must append newlines.
  issue #415, #477: Poller must handle POLLHUP too.
  ...
@dw
Copy link
Member

@dw dw commented Jan 27, 2019

This is now on the master branch and will make it into the next release. To be updated when a new release is made, subscribe to https://networkgenomics.com/mail/mitogen-announce/

Thanks for reporting this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants