Back to the main page.

Bug 2309 - Java Buffer Client : bug fix for freeze when buffer disconnects unexpectedly

Reported 2013-10-07 13:31:00 +0200
Modified 2015-02-11 10:43:08 +0100
Product: FieldTrip
Component: realtime
Version: unspecified
Hardware: All
Operating System: All
Importance: P3 enhancement
Assigned to: Robert Oostenveld
Depends on:
See also:

Jason Farquhar - 2013-10-07 13:31:00 +0200

Created attachment 526 (Context) diff output to patch the java bufferclient directory relative to SVN version r8582 The original java code had 2 failure modes when the buffer disconnected unexpectedly. 1) If the buffer disconnected when reading/writing a message on the socket then the java would freeze in an infinite loop as it did not detect this condition. 2) If the buffer disconnected between reading/writing messages this would not be detected *until* reading/writing the next message resulting in the infinite loop mentioned in bug 1 above. 3) The isconnected test would return true even if the remote end was actually disconnted as the socket was still connected. The fixes to these issues are 2 fold: 1) In the read/write message code there is an additional check for the number of characters read/written. If this is <0 this indicates the remote end has disconnected and a IO exception is raised. 2) In the isConnected test we additionally try to read a single character from the socket. This will fail if the remote end has disconnected giving a reliable test for this condition. Other Enhancements: 1) Added an auto-reconnect functionality. If this flag is set then a disconnect detected before reading/writing a message will first try to automatically re-connect to the previous buffer information. 2) Added array value event type constructors to BufferEvent 3) Fixed byte-order issue with the use of the slice function. Attached are the diff's w.r.t. SVN version r8582