Back to the main page.
Bug 2309 - Java Buffer Client : bug fix for freeze when buffer disconnects unexpectedly
Status |
ASSIGNED |
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 |
URL: |
|
Tags: |
|
Depends on: |
|
Blocks: |
|
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