Commit Graph

3267 Commits (60fbea4b59cb558ffc3c8cfe9d1531367fc4be71)
 

Author SHA1 Message Date
David Wilson 8676c40674 core: make _start_transmit / _stop_transmit async-only
For now at least, these APIs are always used in an asynchronous context,
so stop using the defer mechanism.
7 years ago
David Wilson ee0f21d57f core: remove Queue locking from broker loop.
Move defer handling out of Broker and into Waker (where it belongs?).
Now the lock must only be taken if Waker was actually woken.

Knocks 400-item run_hostname_100_times from 10.62s to 10.05s (-5.3%).
7 years ago
David Wilson 17aef51e6e tests: Import .local() latency test 7 years ago
David Wilson a8a31728a0 tests: Import Latch soak test 7 years ago
David Wilson 15194abb8c Remove testlib.py from test.sh. 7 years ago
David Wilson d6f49a003b issue #106: ansible: beginnings of FileService. 7 years ago
David Wilson 6118d4e6df tests: set MITOGEN_LOG_LEVEL=debug in .travis.yml too. 7 years ago
David Wilson 03fcf057dd tests: just call log_to_file() from testlib
Now we can run test.sh with MITOGEN_LOG_LEVEL=debug and things just
work.
7 years ago
David Wilson 761cd9eaf8 tests: import tty_create_child_test.py. 7 years ago
David Wilson 7b12f84366 core: support CallError(str) for service.py. 7 years ago
David Wilson c33bc22f21 docs: fix reading time tracking :( 7 years ago
David Wilson 45b81009f3 parent: call TIOCSCTTY on FreeBSD. Closes #171 7 years ago
David Wilson cd1683b924 ansible: split environment editing into a separate class. 7 years ago
David Wilson fccca54068 tests: ensure OpenSSL is initialized prior to test. 7 years ago
David Wilson e28e627f55 ssh: Disable GlobalKnownHostsFile with host_key_checking is off 7 years ago
David Wilson 4903052f42 fork: reseed Python/SSL PRNGs
Mac's SSL seems to have a pthread_atfork handler or similar that does
this for us, no clue if Linux is the same.
7 years ago
David Wilson 7f4368db87 docs: pad out signal handlers note 7 years ago
David Wilson c34f8dbef3 core: Fix Receiver.__iter__ loop termination.
Since the Message refactoring from a few weeks back, __iter__ has had
nothing to throw ChannelError if the remote sent _DEAD.
7 years ago
David Wilson 671f753207 core: cache result of unpickling message. 7 years ago
David Wilson 5b87d10ae6 core: clean up no longer useful Latch.__repr__
Those fields are always None since the recent fork cleanup work.
7 years ago
David Wilson d4bc44468b core: fix crash in fork stress test
14:50:04 E mitogen: mitogen.fork.Stream('fork.7431') crashed
Traceback (most recent call last):
  File "/home/dmw/src/mitogen/mitogen/core.py", line 1287, in _call
    func(self)
  File "/home/dmw/src/mitogen/mitogen/core.py", line 758, in on_receive
    return self.on_disconnect(broker)
  File "/home/dmw/src/mitogen/mitogen/parent.py", line 370, in on_disconnect
    super(Stream, self).on_disconnect(broker)
  File "/home/dmw/src/mitogen/mitogen/core.py", line 721, in on_disconnect
    fire(self, 'disconnect')
  File "/home/dmw/src/mitogen/mitogen/core.py", line 162, in fire
    return [func(*args, **kwargs) for func in signals.get(name, ())]
  File "/home/dmw/src/mitogen/mitogen/core.py", line 1160, in <lambda>
    listen(stream, 'disconnect', lambda: self.on_stream_disconnect(stream))
  File "/home/dmw/src/mitogen/mitogen/core.py", line 1142, in on_stream_disconnect
    for context in self._context_by_id.itervalues():
RuntimeError: dictionary changed size during iteration
7 years ago
David Wilson 95d50adb14 unix: simplify return statements. 7 years ago
David Wilson d68833757b docs: slightly bikeshed last testimonial 7 years ago
David Wilson adf527440f issue #155: parent: split out make_call_msg(). 7 years ago
dw d23a6174a2
Merge pull request #167 from danielcompton/patch-1
Add testimonial from Clojars
7 years ago
David Wilson 0dbb63ae3d docs: typo 7 years ago
David Wilson b254373cd7 docs: add local task serialization risk 7 years ago
David Wilson 7698f86a9f Whups, don't always enable profiling in mitogen.main() 7 years ago
David Wilson 52d980ad58 issue #155: fork: nop out get_boot_command, it's become quite expensive
-16% reduction in fork cost.
7 years ago
David Wilson e7c98e3bda Have mitogen.main(profiling=True) effect the master process too 7 years ago
David Wilson a868498469 Replace assertions with fixed checks; closes #157. 7 years ago
David Wilson 4dc001f496 parent: fire disconnect upon receiving DEL_ROUTE for context
This lets context.shutdown(wait=True) succeed in the master or any
parent.
7 years ago
David Wilson 862ec21160 core: allow shutdown triggered by any parent, not just immediate parent 7 years ago
David Wilson 0f08783330 core: fix NameError on disconnect 7 years ago
David Wilson 198bec3320 issue #168: ansible: Mitogen must also ignore the extra arguments. 7 years ago
David Wilson 26051caf4c ansible: Pass through connection loader kwargs; closes #168 7 years ago
David Wilson 749eddac71 ansible: fix flake8 errors in helpers.py. 7 years ago
Daniel Compton 871b853b59
Add testimonial from Clojars 7 years ago
David Wilson 2813d1a968 docs: update 7 years ago
David Wilson 3e384db7c2 service: add basic security policy types. 7 years ago
David Wilson 2ea65420d0 issue #155: fork.py v2, now with full resource cleanup 7 years ago
David Wilson 872181bebd issue #155: core: implement Side._on_fork()
Central mechanism for deleting all non-Latch file descriptors belonging
to the parent process during fork().
7 years ago
David Wilson 80642ed9ec issue #155: core: remove one duplicate set_cloexec(). 7 years ago
David Wilson cb71ce94c4 issue #155: core: be more careful reconfiguring stdio
Many dragons present!
7 years ago
David Wilson 443c94eb39 issue #155: core: prevent set_cloexec() use on standard handles 7 years ago
David Wilson 41ae6623c6 issue #155: parent: generic name generation
Let us override a class attribute to specify prefix from fork.py, rather
than reimplement the same logic.
7 years ago
David Wilson 22cc1a3689 issue #155: core: refactor Latch to avoid TLS use
TLS destructors are not called after fork, therefore we must explicitly
track a global list of free file descriptors, and arrange for that list
to explicitly be destroyed from fork.py.
7 years ago
David Wilson 2cf9edc895 issue #155: core: ensure reused Importer gets new Context reference.
More hacky layering violations.. force Importer's _context attribute to
our new parent.
7 years ago
David Wilson cd5b37ea5b core: Use Side.read() rather than bare os.read(). 7 years ago
David Wilson 1155de85af issue #155: parent: propagate context name too.
This allows context_by_id() in the master to succeed in returning a
Context with a .name matching the context's name, needed for correct
logging.

Previously this would have logged the empty string, because the master
had no mechanism to know the name of a context created by a child.
7 years ago