Github user ivmaykov commented on a diff in the pull request:
https://github.com/apache/zookeeper/pull/679#discussion_r233656579
--- Diff:
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/PrependableSocket.java
---
@@ -18,32 +18,47 @@
package org.apache.zookeeper.server.quorum;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.SequenceInputStream;
+import java.io.PushbackInputStream;
import java.net.Socket;
import java.net.SocketImpl;
public class PrependableSocket extends Socket {
- private SequenceInputStream sequenceInputStream;
+ private PushbackInputStream pushbackInputStream;
--- End diff --
I don't know why it worked like that, but that is what I observed in tests.
It looks like SequenceInputStream does not join returned data across boundaries
of the underlying streams when the first stream gets to EOF. I don't think this
is desired behavior since it would cause the stream to return 5 bytes when more
than 5 bytes are actually available.
---