Commit Graph

1315 Commits (a61212ffb78c7d72062080c96bf1c0505166a1c1)
 

Author SHA1 Message Date
David Wilson 1eb5c20f57 ansible: add dummy init.pys so setup.py find_packages() DTRT. 7 years ago
David Wilson 2c58591129 Bump Ansible version in dev_requirements.txt 7 years ago
David Wilson 7d0209d8de issue #249: have upgrade_router() upgrade the poller too.
Now when a child becomes a parent, it gets a new poller suitable for
many more children than was possible using select().
7 years ago
David Wilson 55fff54774 core: make try/catch logic a little clearer in Latch.get() 7 years ago
David Wilson 05a5f2b6e5 core: if Poller.poll() fails, TimeoutError would be raised.
We must check whether poller threw an exception both in the case that we
weren't woken and the case that we were.
7 years ago
David Wilson 5bdc1719c5 issue #249: epoll() raises IOError for EINTR, not select.error. 7 years ago
David Wilson 70376d861a issue #217: docs: remove limitation 7 years ago
David Wilson 6d18ce81d8 issue #249: restore duplex behaviour for epoll
With epoll() there is only one kernel-side object per file descriptor,
which is why _control() is such a pain. Since we merge receive/transmit
watching into that single object, we must always test the mask for both
conditions when reading results.

Kqueue isn't/doesn't appear to be like this. The identity of a Kqueue
event is keyed on (fd, filter), and we register a separate event for
both transmit and receive, so the 'elif' in KqueuePoller.poll() does not
appear to need to change.

Previously, a FD marked for read+write would not indicate writeability
until it was no longer readable.
7 years ago
David Wilson 6b98818046 issue #249: epoll distinguishes between hangup and disconnect
..typical Linux, for certain descriptor types only. So our receive mask
must match both, and normalize it into a read event like every other
poller.
7 years ago
David Wilson 07056b0dd1 issue #249: fix ordering bug masked by previous implementation 7 years ago
David Wilson 4cd9e09130 issue #249: docs: remove limitation 7 years ago
David Wilson 36a1024861 issue #249: port Latch to poller too.
This is probably going to suck for perf :/
7 years ago
David Wilson 1070dfae72 issue #249: fix iter_read() regression. 7 years ago
David Wilson dcf0aa351e issue #249: whoops, fix new poller timeouts. 7 years ago
David Wilson aa8f786413 issue #249: fix Poller.from_existing() for v2 API 7 years ago
David Wilson 5645629e5d issue #249: the new pollers must handle syscall restarts too. 7 years ago
David Wilson 4df020827d issue #249: explicitly close pollers when done. 7 years ago
David Wilson 9905f6d8b4 issue #249: make write_all() and iter_read() use PREFERRED_POLLER. 7 years ago
David Wilson b6124f8396 issue #249: EpollPoller v2. 7 years ago
David Wilson 9abcf63155 issue #249: Poller API v2 (BSD only).
Now it's BasicStream/Side-agnostic, so it can be reused for Latch and
iter_read().
7 years ago
David Wilson 11c2e4ab3e core: set _v and _vv to True in enable_debug_logging().
router.enable_debug() has been broken for ages.
7 years ago
dw 874c0fdc01
Merge pull request #248 from badeadan/master
fix host_keys= exception message
7 years ago
David Wilson 7320c542df issue #249: EpollPoller() for Linux. 7 years ago
David Wilson bc7be1879d issue #249: initial poller implementation (BSD only) 7 years ago
Daniel Badea 020c8b5013 fix host_keys= exception message 7 years ago
David Wilson b7ab473343 issue #186: split handle list up so it makes sense 7 years ago
David Wilson d1a22cb5d4 issue #186: parent: implement FORWARD_MODULE.
To support detach, we must be able to preload the target with every
module it will need prior to detachment. This implements the
intermediary part of the process (i.e. the Ansible fork parent) --
receiving LOAD_MODULE/FORWARD_MODULE pairs and ensuring they reach the
child.
7 years ago
David Wilson 8a089e975d docs: Document Router.unidirectional. 7 years ago
David Wilson bb61745a1a issue #217: pass through non-custom module utils to regular importer.
This may come back to bite later, but in the meantime it avoids shipping
up to 12KiB of junk metadata for every single task invocation.

For detachment (aka. async), we must ensure the target has two types of
preloads completed (modules and module_utils files) before detaching.
7 years ago
David Wilson 30034877a5 issue #217: ansible: working, if extremely inefficient implementation 7 years ago
David Wilson 81b62d9a1a issue #217: ansible: beginnings of ModuleDepService. 7 years ago
David Wilson 0f8190eff6 issue #217: ansible: working module_finder.py 7 years ago
David Wilson 6a17042020 issue #217: ansible: merge duplicate ReplacerPlanner. 7 years ago
David Wilson 78d375e0c5 core: CallError should handle any exception type.
Previously SystemExit would be pickled.
7 years ago
David Wilson faaac43a78 Disable SSH variables test on vanilla Ansible. 7 years ago
David Wilson 68d6e6bf34 ansible: tests for all SSH variables.
Closes #184.
7 years ago
dw f01f237e6d
Merge pull request #247 from dw/issue179
issue #179: don't reap first stage until core_src_fd is drained.
7 years ago
David Wilson def22c226f issue #179: don't reap first stage until core_src_fd is drained.
Bootstrap would hang if (as of writing) a pipe sufficient to hold 42,006
bytes was not handed out by the kernel to the first stage. It was luck
that this didn't manifest before, as first stage could write the full
source and exit completely before reading begun.

It is not clear under which circumstances this could previously occur,
but at least since Linux 4.5, it can be triggered if
/proc/sys/fs/pipe-max-size is reduced from the default of 1MiB, which
can have the effect of capping the default pipe buffer size of 64KiB to
something lower.

Suspicion is that buffer pipe size could also be reduced under memory
pressure, as reference to busy machines appeared a few times in the bug
report.
7 years ago
dw 3ff37113e2
Merge pull request #246 from dw/issue179
issue #179: ec0_receive() and connect_bootstrap() should use deadline.
7 years ago
David Wilson d65e047b12 issue #179: ec0_receive() and connect_bootstrap() should use deadline.
Now there is a single global deadline derived from ansible.cfg timeout=
value.
7 years ago
dw 2c309a378a
Merge pull request #245 from dw/dmw
Log masking, unlinked contributors page, resolv.conf fix, unidirectional routing
7 years ago
David Wilson bd2cc0830c Enable unidirectional routing in Ansible; closes #132. 7 years ago
David Wilson 356647bef4 issue #132: initial unidirectional routing mode. 7 years ago
David Wilson 2a4157723a tests: fix breakage from moving is_stdlib_name() 7 years ago
David Wilson 7d9b7eec0c tests: must wrap log_to_file() in is_master
Without it, end up with a billion loggers attached in some tests
7 years ago
David Wilson f96c552f87 issue #217: initial module scanner code.
This is sketch code, it's being done separately from mitogen.master.* to
begin with to avoid breaking what's there.
7 years ago
David Wilson 48535cc661 docs: more accurate bullet. 7 years ago
David Wilson d148e3db4e docs: move installation section above demo 7 years ago
David Wilson e615265ebd master: make is_stdlib_path() a free function
For Ansible module loader work.
7 years ago
David Wilson 2ad0d0521d ansible: reload /etc/resolv.conf for each task.
The OpenShift installer modifies /etc/resolv.conf then tests the new
resolver configuration, however, there was no mechanism to reload
resolv.conf in our reuseable interpreter.

https://github.com/openshift/openshift-ansible/blob/release-3.9/roles/openshift_web_console/tasks/install.yml#L137

This inserts an explicit call to res_init() for every new style
invocation, with an approximate cost of ~1usec on Linux since glibc
verifies resolv.conf has changed before reloading it.

There is little to be done for users of the thread-safe resolver APIs,
their state is hidden from us. If bugs like that manifest, whack-a-mole
style 'del sys.modules[thatmod]' patches may suffice.
7 years ago