We are seeing a problem with a IOException from the FileDataBlock when running with multiple slow clients. It appears to be happening because the DataContainer write(byte[]) operation sets the readBlock and writes the data block length then data block content. Another thread sees the read block and reads the data block length but the write thread has not written the contents yet so an IOException or EOFException is thrown in the read thread (in readFully). The write method is synchronized but the read method is not.
See: FileDataBlock.read, FileDataBlock.write, DataContainer.write (line 111), and DataContainer.read (line 131)
I can reproduce the error reliably in a debugger by controlling the order of the operations. Unfortunately it's difficult to write a repeatable automated test case since this is a race condition type of error.
Let me know if you need more information.