[PATCH] debugwireproto: handle unimplemented util.poll() for Windows
Gregory Szorc
gregory.szorc at gmail.com
Tue Mar 6 01:58:23 UTC 2018
On Mon, Mar 5, 2018 at 5:48 PM, Matt Harbison <mharbison72 at gmail.com> wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1520299354 18000
> # Mon Mar 05 20:22:34 2018 -0500
> # Node ID 7a25f6cfebe80802321d2975b97fc15ec38cf8ec
> # Parent 2aff6daf779098eee4c350ccd0197dcc2231e197
> debugwireproto: handle unimplemented util.poll() for Windows
>
> This is the same logic used in sshpeer.doublepipe. It doesn't completely
> fix
> test-ssh-proto{,-unbundle}.t ("read(-1) -> X" is changed to "read(X) ->
> X", the
> order of some lines are changed, and abort messages seem to be missing),
> but it
> cuts down a ton on the failure spew.
>
Queued.
readavailable is intrinsically non-deterministic if there could be data on
both pipes. I think we should rewrite the tests to not use readavailable.
This will likely require new commands in the metalanguage to read specific
amounts from specific pipes. That's probably the only way we make things
deterministic across platforms and various load conditions. I can author
those patches if you want, since I'm actively working in this area and I
did introduce the problem :)
>
> diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
> --- a/mercurial/debugcommands.py
> +++ b/mercurial/debugcommands.py
> @@ -2818,11 +2818,16 @@
> elif action == 'close':
> peer.close()
> elif action == 'readavailable':
> - fds = util.poll([stdout.fileno(), stderr.fileno()])
> -
> - if stdout.fileno() in fds:
> + fds = [stdout.fileno(), stderr.fileno()]
> + try:
> + act = util.poll(fds)
> + except NotImplementedError:
> + # non supported yet case, assume all have data.
> + act = fds
> +
> + if stdout.fileno() in act:
> util.readpipe(stdout)
> - if stderr.fileno() in fds:
> + if stderr.fileno() in act:
> util.readpipe(stderr)
> elif action == 'readline':
> stdout.readline()
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20180305/86fd4e38/attachment-0002.html>
More information about the Mercurial-devel
mailing list