This is an automatically generated e-mail. To reply, visit: http://reviewboard-fedoraserver.rhcloud.com/r/62/

src/rolekit/async.py (Diff revision 1)
def do_something_async(param):
67
__all__ = ("start_async_with_callbacks", "async_call")
70
__all__ = ("start_async_with_callbacks",
71
           "async_call",
72
           "async_subprocess")

My OCD would like these to be alphabetically-sorted… (and I know I broke that first, sorry).


src/rolekit/async.py (Diff revision 1)
173
            raise RolekitError(COMMAND_FAILED, "%d" % p.returncode)

Does this actually work?

From my reading of Future (but not testing this!), the callback is run somewhere within the worker thread (inside future.set_result() -> future._invoke_callbacks()), and an exception is logged and ignored.


src/rolekit/async.py (Diff revision 1)
178
            log.error("Subprocess exception: %r", e)
179
            raise e

Same here.

AFAICT this would be simplest with a helper function that does p.communicate + the handling in finish_subprocess, and submitting that helper function to the executor; then the helper can simply return or raise exceptions.

And async_subprocess could return the future returned by executor.submit directly to the caller.


- Miloslav Trmac


On srpen 1st, 2014, 9:02 odp. CEST, Stephen Gallagher wrote:

Review request for RoleKit Mailing List, Miloslav Trmac, Stephen Gallagher, and Thomas Woerner.
By Stephen Gallagher.

Updated Srp. 1, 2014, 9:02 odp.

Repository: rolekit

Description

This will spawn a thread to monitor the subprocess, capture both
stdout and stderr and throw an exception if the process terminates
with a non-zero error code.

Testing

Manual testing was done by having it call a script that slept for 30s and verifying that other requests could be successfully made to rolekit while it was waiting.

This code probably needs a unit test, but I haven't written it yet.

Diffs

  • src/rolekit/async.py (1e2b82eab5a4e6862594672f738c1935a83c2be5)

View Diff