-
Notifications
You must be signed in to change notification settings - Fork 911
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using poll() in favor of select() in the XmlRPCDispatcher (extended) #1133
Conversation
Builds 295-303 were triggered, since #1123 has passed/failed stochastically. Timing related
XmlRpc related
|
* Using poll() in favor of select() in the XmlRPCDispatcher * ros#832: initialize pollfd event with 0. Added check for POLLHUP and POLLNVAL * Fix syntax
255f626
to
7fe027a
Compare
@dirk-thomas jobs 312-314 are hung. Sorry... I don't think much changed since I triggered 8 jobs (which all finished normally), but something went wrong. Oh good, there's a 2 hour timeout 😝. I think that there was originally a problem where spurious events were getting triggered, which errored out in the handler, removing that source. That failed tests, but didn't hang. Fixing that meant that the handlers don't get removed, but there is a deeper problem being exposed. I'm concerned about iterator counts / invalidation (there is mention of iterators disappearing, and |
316 was successful, triggered 318-322. Only one failure this time: |
A reference simulating select using poll in linux is cloudius-systems/osv#35, specifically cloudius-systems/osv@b53d39a. The tcp poll implementation is at torvalds/linux:net/ipv4/tcp.c. |
I'm happy with this now, I'm going to squash my commits, and trigger a bunch more builds. |
This commit makes sure that the poll flags emulate select (which it replaces). It also double-checks event types to make sure they were requested (e.g. POLLERR might trigger both). It keeps track of fd/src relationship through two parallel arrays, instead of an iterator / array hybrid.
6fc346e
to
c648a72
Compare
Triggered builds 367,371-376 on the squashed commit (same code as builds 352-359, 6fc346e). Update: They all passed except one container that got disconnected (and built successfully after)! Woo! |
@dirk-thomas Thanks for the style edits. The failed build 383 for f01b3f9 is concerning. That is one of the stochastic failures that I have seen in the past for this PR, but didn't crop up in the previous 16 or so builds. How critical is the result of this test? If it needs to be rock solid, I'm afraid this PR is still not ready... |
Hopefully all is well, but for future reference, that test that failed was:
I think it's a case of not realizing that the publisher disappeared. This could be cause by |
This replaces #1123. It builds on #833 to replace
select()
withpoll()
in theXmlRPCDispatcher
. It:poll()
flags to matchselect()
equivalents, referencing man select, and select() emulation doesn't handle POLLHUP/POLLERR/POLLPRI correctly cloudius-systems/osv#35.