docs: add initial release notes.
parent
d493a3d7ca
commit
894926cf61
@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
2018-04-30 v0.0.1
|
|
||||||
|
|
||||||
* Initial release to support the Mitogen extension for Ansible.
|
|
||||||
|
|
@ -1,6 +1,120 @@
|
|||||||
|
|
||||||
Change Log
|
Release Notes
|
||||||
----------
|
=============
|
||||||
|
|
||||||
.. literalinclude:: ../ChangeLog
|
|
||||||
:language: none
|
.. raw:: html
|
||||||
|
|
||||||
|
<style>
|
||||||
|
div#release-notes h2 {
|
||||||
|
border-bottom: 1px dotted #c0c0c0;
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
v0.2.0 (2018-07-08)
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Mitogen 0.2.x is the inaugural feature-frozen branch eligible for fixes only,
|
||||||
|
except for problem areas listed as in-scope below. While stable from a
|
||||||
|
development perspective, it should still be considered "beta" at least for the
|
||||||
|
initial releases.
|
||||||
|
|
||||||
|
**In Scope**
|
||||||
|
|
||||||
|
* Python 3.x performance improvements
|
||||||
|
* Subprocess reaping improvements
|
||||||
|
* Major documentation improvements
|
||||||
|
* PyPI/packaging improvements
|
||||||
|
* Test suite improvements
|
||||||
|
* Replacement CI system to handle every supported OS
|
||||||
|
* Minor deviations from vanilla Ansible behaviour
|
||||||
|
|
||||||
|
The goal is a *tick/tock* model where even-numbered series are a maturation of
|
||||||
|
the previous unstable series, and unstable series are released on PyPI with
|
||||||
|
``--pre`` enabled. The API and user visible behaviour should remain unchanged
|
||||||
|
within a stable series.
|
||||||
|
|
||||||
|
|
||||||
|
Mitogen for Ansible
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Support for Ansible 2.3 - 2.5.x and any mixture of Python 2.6, 2.7 or 3.6 on
|
||||||
|
controller and target nodes.
|
||||||
|
|
||||||
|
* Drop-in support for many Ansible connection types.
|
||||||
|
|
||||||
|
* Preview of Connection Delegation feature.
|
||||||
|
|
||||||
|
* Built-in file transfer compatible with connection delegation.
|
||||||
|
|
||||||
|
|
||||||
|
**Known Issues**
|
||||||
|
|
||||||
|
* Performance does not scale linearly with target count. This requires
|
||||||
|
significant additional work, as major bottlenecks exist in the surrounding
|
||||||
|
Ansible code. Performance-related bug reports for any scenario remain
|
||||||
|
welcome with open arms.
|
||||||
|
|
||||||
|
* Performance on Python 3 is significantly worse than on Python 2. While this
|
||||||
|
has not yet been investigated, at least some of the regression appears to be
|
||||||
|
part of the core library, and should therefore be straightforward to fix as
|
||||||
|
part of 0.2.x.
|
||||||
|
|
||||||
|
* *Module Replacer* style Ansible modules are not supported.
|
||||||
|
|
||||||
|
* Actions are single-threaded for each `(host, user account)` combination,
|
||||||
|
including actions that execute on the local machine. Certain styles of
|
||||||
|
playbook may experience slowdown compared to vanilla Ansible if they employ
|
||||||
|
long-running ``local_action`` or ``delegate_to`` tasks delegating many target
|
||||||
|
hosts to a single machine and user account.
|
||||||
|
|
||||||
|
* Connection Delegation remains in preview and has bugs around how it infers
|
||||||
|
connections. Connection establishment will remain single-threaded for the 0.2
|
||||||
|
series, however connection inference bugs will be addressed in a future 0.2
|
||||||
|
release.
|
||||||
|
|
||||||
|
|
||||||
|
Core Library
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Synchronous connection establishment via OpenSSH, sudo, su, Docker, LXC and
|
||||||
|
FreeBSD Jails, local subprocesses and :func:`os.fork`. Parallel connection
|
||||||
|
setup is possible using multiple threads. Connections may be used from one or
|
||||||
|
many threads after establishment.
|
||||||
|
|
||||||
|
* UNIX masters and children, with Linux, MacOS, FreeBSD, NetBSD, OpenBSD and
|
||||||
|
Windows Subsystem for Linux explicitly supported.
|
||||||
|
|
||||||
|
* Automatic tests covering Python 2.6, 2.7 and 3.6 on Linux only.
|
||||||
|
|
||||||
|
|
||||||
|
**Known Issues**
|
||||||
|
|
||||||
|
* Serialization is still based on :mod:`pickle`. While there is high confidence
|
||||||
|
remote code execution is impossible in Mitogen's configuration, an untrusted
|
||||||
|
context may at least trigger disproportionately high memory usage injecting
|
||||||
|
small messages (*"billion laughs attack"*). Replacement is an important
|
||||||
|
future priority, but not critical for an initial release.
|
||||||
|
|
||||||
|
* Child processes are not reliably reaped, leading to a pileup of zombie
|
||||||
|
processes when a program makes many short-lived connections in a single
|
||||||
|
invocation. This does not impact Mitogen for Ansible, however it limits the
|
||||||
|
usefulness of the core library. A future 0.2 release will address it.
|
||||||
|
|
||||||
|
* Some races remain around :class:`mitogen.core.Broker <Broker>` destruction,
|
||||||
|
disconnection and corresponding file descriptor closure. These are only
|
||||||
|
problematic in situations where child process reaping is also problematic.
|
||||||
|
|
||||||
|
* The `fakessh` component does not shut down correctly and requires flow
|
||||||
|
control added to the design. While minimal fixes are possible, due to the
|
||||||
|
absense of flow control the original design is functionally incomplete.
|
||||||
|
|
||||||
|
* The multi-threaded :ref:`service` remains in a state of design flux and
|
||||||
|
should be considered obsolete, despite heavy use in Mitogen for Ansible. A
|
||||||
|
future replacement may be integrated more tightly with, or entirely replace
|
||||||
|
the RPC dispatcher on the main thread.
|
||||||
|
|
||||||
|
* Documentation is in a state of disrepair. This will be improved over the 0.2
|
||||||
|
series.
|
||||||
|
Loading…
Reference in New Issue