Github user aweisberg commented on a diff in the pull request:
https://github.com/apache/cassandra/pull/239#discussion_r202486943
--- Diff:
src/java/org/apache/cassandra/net/async/RebufferingByteBufDataInputPlus.java ---
@@ -249,4 +250,42 @@ public ByteBufAllocator getAllocator()
{
return channelConfig.getAllocator();
}
+
+ /**
+ * Consumes bytes in the stream until the given length
+ *
+ * @param writer
+ * @param len
+ * @return
+ * @throws IOException
+ */
+ public long consumeUntil(BufferedDataOutputStreamPlus writer, long
len) throws IOException
+ {
+ long copied = 0; // number of bytes copied
+ while (copied < len)
+ {
+ if (buffer.remaining() == 0)
+ {
+ try
+ {
+ reBuffer();
+ }
+ catch (EOFException e)
+ {
+ throw new EOFException("EOF after " + copied + " bytes
out of " + len);
+ }
+ if (buffer.remaining() == 0)
+ return copied == 0 ? -1 : copied;
--- End diff --
So reBuffer seems to have as its contract that it will throw EOF? That's
why if you reach this point it is AssertionError since you don't know why
reBuffer messed up.
Which check in BigTableBlockWriter are you talking about?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]