Commit Graph

232 Commits (3e2abf36d5a31fd88b0b1846d10d10d5e06db0c9)

Author SHA1 Message Date
David Wilson 54ff1c90fa issue #155: add DEL_ROUTE, propagate ADD_ROUTE upwards
* IDs are allocated by the parent responsible for contructing a new
  child, using ALLOCATE_ID to the master as necessary to allocate new ID
  ranges.

* ADD_ROUTE is sent up the tree rather than down. This permits
  construction of the new context to complete concurrent to parent
  contexts learning about its existence. Since all streams are strictly
  ordered, it's not possible for any parent to observe messages from the
  new context prior to arrival of an ADD_ROUTE from the parent notifying
  of its existence.

  If the new context, for example, implements an Ansible async task, its
  parent can start executing that without waiting for any synchronous
  confirmation from any parent or the master.

* Since routes propagate up, it's no longer possible for a plain
  non-parent child to ever receive ADD_ROUTE, so that code can be moved
  out of core.py and into parent.py (-0.2kb compressed).

* Add a .routes attribute to parent.Stream, and respond to disconnection
  signal on the stream by propagating DEL_ROUTE for any ADD_ROUTE ever
  received from that stream.

* Centralize route management in a new parent.RouteMonitor class
7 years ago
David Wilson aeeeb45ccb docs: farewell, glorious iframe! 7 years ago
David Wilson 1ed86774b5 issue #156: document select exception 7 years ago
David Wilson 20f5d89dfa issue #156: fix several more races
* Don't need to sleep if queue>sleepers, can just pop the right queue
  element and return it.

* If queue>sleeping and waking==sleeping, no mechanism existed to ensure
  a thread newly added to sleeping would ever be woken. Above change
  fixes that.

* Cannot trust select() return value, scheduler might sleep us
  indefinitely while put() writes a byte.

* Sleeping threads didn't pop FIFO, they popped in whatever order
  scheduler woke them up. Must recover index and use it to pick the pop
  index.
7 years ago
David Wilson 526b0a514b issue #156: prevent Latch.close() triggering spurious wakeups 7 years ago
David Wilson 18e2977baf docs: annoying phrasing 7 years ago
David Wilson 2c22c41819 issue #156: don't decrement `waking` if we timed out rather than being woken. 7 years ago
David Wilson 07a8994ff5 issue #156: waking thread result dictionary with an integer. 7 years ago
David Wilson b5398bd17f issue #156: docs typo 7 years ago
David Wilson 512ff77a46 issue #156: prevent non-sleeping threads from starving sleeping threads.
See new docs
7 years ago
David Wilson 148ce1d703 issue #155: increase context ID width to 32 bits
Needed to make large range allocations (1000 per ALLOCATE_ID roundtrip)
feasible.
7 years ago
David Wilson 071d9fbfb3 docs: tidy ansible docs. 7 years ago
David Wilson f241eac5ce parent: allow Python to determine its install prefix from argv[0]
Fixes support for virtualenv. Closes #152.
7 years ago
David Wilson dec3af375a issue #144: ansible: increase default pool size to 16. 7 years ago
David Wilson 4f361be7e7 issue #144: teach Select() to close its latch
Causes all threads sleeping on the select to wake.
7 years ago
David Wilson 8aada2646c core: support throwing LatchError in every sleeping thread
This is to allow Select() to be used as a generic queueing primitive
that supports graceful shutdown.
7 years ago
David Wilson 7a74bb0a39 docs: update ansible risks/differences. 7 years ago
David Wilson bcc15987fc docs: extra ansible paragraph. 7 years ago
David Wilson 7a394dc73e ansible: allow establishment of duplicate SSH connections 7 years ago
David Wilson 4691ce0b95 issue #150: ansible: add basic Docker support. 7 years ago
David Wilson 67ff762ba5 issue #139: docs: remove note about bad buffering 7 years ago
David Wilson d1888f1908 docs: reorder sections 7 years ago
David Wilson 014247ce66 docs: another crazy Ansible success story 7 years ago
Alex Willmer 7063d172e9 tests: Add Tox config for Python 2.6 and 2.7
I could not get Python 2.5 or earlier to work. Too many packages
(critically docker) don't support it.
7 years ago
David Wilson 88c198ea05 issue #141: copy Ansible's connect_timeout for sudo too. 7 years ago
David Wilson 63c3fc623c docs: note the semantic difference in Mitogen vs. Ansible timeouts
Related to issue #141.
7 years ago
David Wilson 8f85943083 issue #139: mention relating buffering issue 7 years ago
David Wilson 1f1d691a28 docs: update to match @moreati's code golf birdies :) 7 years ago
Alex Willmer 9aa83ef77f docs: First round of Pickle-likes survey 7 years ago
Alex Willmer a1fc21bb06 docs: Maximum size of pencode values 7 years ago
Alex Willmer e24db89f3a docs: Disco comparison 7 years ago
Alex Willmer 04f4851138 docs: multiprocessing comparison
Not strictly a rival, but has enough commonalities to be worth noting
7 years ago
Alex Willmer 8c227b2bdd docs: More detail about Baker 7 years ago
Alex Willmer e06e438228 docs: More detail about execnet 7 years ago
Alex Willmer da58f8595d docs: More detail about chopsticks 7 years ago
Alex Willmer d7fbb9aef6 docs: Link compared projects to their website
All outgoing links checked with

```bash
cd docs
make linkcheck
```
7 years ago
Alex Willmer 4615ab1a8e docs: Enable sphinx-autobuild
```bash
cd docs
make
```

to run a webserver that automatically rerenders whenever the rST is
modified.
7 years ago
David Wilson f8c85b549f docs: typo 7 years ago
David Wilson dc9dda08e1 Add link to IRC; closes #116 7 years ago
David Wilson b2a433dcc4 ssh: CompressionLevel is a v1-only option.
It's ignored by newer SSHes, which only pay attention to Compression.
7 years ago
Alex Willmer 1c20c61605 docs: Convert all URLs that support https://
Excluded: graphml XML namespaces, links to e.g. Fabric homepage

Fixes #128
7 years ago
David Wilson 089f39716e docs: beginnings of testimonials section 7 years ago
David Wilson 500c4f419c docs: update limitations list for Ansible. 7 years ago
David Wilson 537a263261 docs: So many typos 7 years ago
David Wilson 6bd4c5ead5 docs: Ansible logging update (#111) 7 years ago
David Wilson 4f352d7d4b Pin Sphinx version 7 years ago
David Wilson 53e51c4af8 docs: update Python 3 support to match reality. 7 years ago
David Wilson ce9a1fef26 docs: fix float 7 years ago
David Wilson 04bb5881b6 ansible: doc updates 7 years ago
David Wilson 9515291024 docs: small fix 7 years ago
David Wilson 3ddbf1a503 ansible: basic support for ssh_args 7 years ago
David Wilson 1b28252ad0 docs: get rid of "medium risk" category 7 years ago
David Wilson da00437f1e ansible: Support ansible_ssh_private_key_file 7 years ago
David Wilson a87b665099 ansible: limited support for become_flags, more docs. 7 years ago
David Wilson 235e1df987 sudo: support parsing sudo flags back out into parameters 7 years ago
David Wilson cd53023768 docs: Fix install docs now Ansible package layout changed. 7 years ago
David Wilson 03e51fdaa7 docs: mitogen.core.Latch docs 7 years ago
David Wilson 712e5dfca1 docs: fix image labels 7 years ago
David Wilson c2793b7102 docs: import but don't link compared.rst 7 years ago
David Wilson 2ecc6f43a4 docs: Import, but do not yet link signals.rst 7 years ago
David Wilson 7cf2edc3a8 ansible: Support many more common playbook variables. 7 years ago
David Wilson ba644e184d docs: Split up limitations list, add warning 7 years ago
David Wilson 3183dd4147 ansible: initial support for async jobs
Running in a thread to begin with, but this must change.
7 years ago
David Wilson e913c11e50 docs: new Ansible limitation 7 years ago
David Wilson 860a635500 docs: remove delegate_to limitation 7 years ago
David Wilson dfdb7ab128 docs: more Ansible 7 years ago
David Wilson cf7f8ff490 docs: document one more Ansible limitation 7 years ago
David Wilson 7179ca163b docs: Replace shifty hacker dude with plebey skater dude
Farewell, shifty hacker dude! May your 0days be many and your
indictments be few
7 years ago
David Wilson 0c056ddbe2 docs: new Ansible limitation, add new heading
Some differences are eventually likely to become permanent, because the
existing behaviour is unforgiveable.
7 years ago
David Wilson 14251539cd docs: Docker typo. 7 years ago
David Wilson 5036a9448f Add Docker method. 7 years ago
David Wilson 77f6b31e5c docs: more images. 7 years ago
David Wilson 56b563161b docs: single-threaded connection is the most important limitation 7 years ago
David Wilson c1bea0dd49 docs: store blog images for fear of laptop crash
There is only so much trackpad-driven yEd work one man can handle
7 years ago
David Wilson dd9d3494e0 docs: small ansible.rst updates 7 years ago
David Wilson ce6648da51 docs: mention CPU usage reduction 7 years ago
David Wilson 270db025c0 docs: fix up Ansible install docs. 7 years ago
David Wilson e9060b3b7f docs: more modest and accurate numbers for Ansible 7 years ago
David Wilson b221eaaa10 ansible: log call timings 7 years ago
David Wilson a817f5e9e8 docs: more marketing, add lots of drama bold. 7 years ago
David Wilson 5933723d70 docs: a little more marketing 7 years ago
David Wilson de1b3602e5 docs: tidy up ansible.rst 7 years ago
David Wilson 52da0d882e ansible: add a new limitation 7 years ago
David Wilson 14b5c4d504 docs: remove fixed Ansible limitation
The solution was that Mitogen's loader should emulate the behaviour of
ansible.executor.module_common, which restricts dependency scanning to
the ansible.module_utils namespace.
7 years ago
David Wilson 91116810a1 ansible: delete utils.py and promote cast() to mitogen.utils 7 years ago
David Wilson 18eaf14dca ansible: migrate logging variables into utils. 7 years ago
David Wilson 10c2de2845 examples: rename playbooks for clarity. 7 years ago
David Wilson ea126bb7e8 docs: add stats tracking 7 years ago
David Wilson 875ee29d4f docs: initial Ansible extension docs. 7 years ago
David Wilson bdd8648bae ssh: enable compression by default
Using the same test as in 7af97c0365,
transmitted wire bytes drops from 135,531 to 133,071 (-1.81%), while
received drops from 21,073 to 14,775 (-30%).

Combined, both changes shave 13,914 bytes (-8.6%) off aggregate
bandwidth usage.

Make it configurable as compression hurts in some scenarios.
7 years ago
David Wilson 4d940f08ae importer: drop redundant prefix from pkg_present
For the 52 submodules of ansible.modules.system, this produced a 1602
byte pkg_present list. After stripping it becomes 406 bytes, and the
entire LOAD_MODULE size drops from 1988 bytes to 792 bytes (-60%).

For the 68 submodules of ansible.module_utils, 1902 bytes pkg_present
becomes 474 bytes (-75%), and LOAD_MODULE size drops from 2867 bytes to
1439 bytes (-49%).

In a simple test running Ansible's "setup" module followed by its "apt"
module, wire bytes sent drops from 140,357 to 135,531 (-3.4%).
7 years ago
David Wilson 71a6b9e32a master: Select.all() sugar 7 years ago
David Wilson ac4a42a43e docs: fix Select() example for new style API. 7 years ago
Alex Willmer a69d9650ad Fix indentation of Router.route anchor 7 years ago
Alex Willmer eb1ad66469 docs: Fix out of date get_data() snippets
As of adc8fe3aed Receiver objects do not
have a get_data() method and Receiver.get() does not unpickle the
message.
7 years ago
David Wilson 20afa5b90c Latch v2: combined queue + one self-pipe-per-thread
Turns out it is far too easy to burn through available file descriptors,
so try something else: self-pipes are per thread, and only temporarily
associated with a Lack that wishes to sleep.

Reduce pointless locking by giving Latch its own queue, and removing
Queue.Queue() use in some places.

Temporarily undo merging of of Waker and Latch, let's do this one step
at a time.
7 years ago
David Wilson e63e9d299e docs: add Message documentation 7 years ago
David Wilson dd088908df select: clean up API. 7 years ago
David Wilson a39cd44bf2 core: add auth_id field. 7 years ago
David Wilson 07d4d799f1 Add mitogen.main() decorator mainly for docs and demo use. 7 years ago