Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
[ansible] on_receive() throws "Resource temporarily unavailable" for 20 target runs on OS X #320
When running on OS X controller targetting 20 Linux clients, early in the run the connection multiplexer process generates frequent errors like:
The client of the connection multiplexer (the task worker) subsequently generates its own error as the IO loop disconnects its now-broken socket:
Problem did not occur in older versions, suggesting a problem with the new KQueuePoller.
Initial idea is that kqueue has a read event buffered for an FD number that has been reused for a new socket before the event has been drained, causing the IO loop to attempt to read from the new instantiation of the FD before it is ready for reading.
Notice that the FD was both closed, and a changelist entry deleting its subscription was present in the syscall that yielded the event for it.
Notice the KQ_EV_ERROR bit of flags is set.
Commenting out "s2.close()" reveals the event queue is emptied of the stale event (per expectation) before it is returned.