You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Justin Ross (JIRA)" <ji...@apache.org> on 2016/11/04 13:23:58 UTC

[jira] [Updated] (PROTON-1071) EventInjector hangs on Windows

     [ https://issues.apache.org/jira/browse/PROTON-1071?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Ross updated PROTON-1071:
--------------------------------
    Fix Version/s: Future

> EventInjector hangs on Windows
> ------------------------------
>
>                 Key: PROTON-1071
>                 URL: https://issues.apache.org/jira/browse/PROTON-1071
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c, python-binding
>    Affects Versions: 0.11.0
>         Environment: Windows
>            Reporter: Ken Giusti
>            Assignee: Cliff Jansen
>             Fix For: Future
>
>
> I added a new reactor test that exercises the python-proton ApplicationEvent and EventInjector classes:
> proton_tests.reactor.ApplicationEventTest.test_application_events
> See tests/python/proton_tests/reactor.py
> This test passes on linux, but hangs when run on Windows.
> Poking around a bit, I suspect the problem may be in the Windows selector code.  Description:
> The EventInjector/ApplicationEvent classes provide a way to trigger events from threads external to the reactor main loop.  See proton-c/bindings/python/proton/reactor.py.  A pipe is used to wake up the reactor when a new event is sent to the reactor (see reactor.py in the python bindings).  The EventInjector's trigger method puts the event on a queue and writes to a pipe to wake up the reactor.  The on_selectable_readable callback in the EventInjector is called on the reactor thread to get the event off the queue and clear the pipe.
> On windows it appears as if the EventInjector selectable is made "readable" even though nothing has been written to the pipe.  This causes the os.read() call in the on_selectable_readable() callback to hang.
> Best I can tell the windows selector code doesn't work properly with a pipe.  The pn_selector_next() function is returning a read event on the pipe's read descriptor even though the pipe is empty.  But I'm not familiar with the window's selector implementation, so this is a best guess.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org