Consider the following code:
MessageBufferPacker packer = MessagePack.newDefaultBufferPacker();
packer.packInt(1);
packer.flush();
packer.clear();
packer.packInt(2);
MessageBuffer buffer = packer.toBufferList().get(0);
System.out.println(Arrays.toString(packer.toByteArray()));
System.out.println(Arrays.toString(buffer.toByteArray()));
byte[] array = Arrays.copyOf(buffer.sliceAsByteBuffer().array(), buffer.size());
System.out.println(Arrays.toString(array));
I expected it to print the same value 3 times, but its output is:
AFAIU there is a bug somewhere - in clear() implementation or somewhere else. I think it is in clear() because removing flush() produces the following output:
It seems that clear() has no effect at all in this case.