Details
-
Bug
-
Status: Patch Available
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
On FreeBSD we observed an occasional deadlock in the communication between traffic_server and traffic_manager. Both process are stuck in write().
This occasionally happens when both sides attempt to write an amount of data that exceeds SO_SNDBUF (8KB on FreeBSD) at the same time, in which case both sides will block waiting for the other side to call read().
On Linux, the buffer turns out to be much larger (~200KB), and this does not seem to happen. The case we noticed on FreeBSD attempted to write 10KB on one side, and 120KB on the other.
Apparently, the code on both sides assumes that it is guaranteed that write() will not block.
One symptom of this is that updates to configuration applied via traffic_ctl will not apply - or at least not until traffic_server is restarted.