2

I'm trying to decode msgpack encoded binary message received from Kafka stream and get the following exception inside Python repl.

ExtraData: unpack(b) received extra data.

In [32]: message.value
Out[32]: b'\xdc\x00\x15\xd9$00000000-0000-0000-0000-000000000000\xc0\xd9$00000000-0000-0000-0000-000000000000\xc0\xc0\xd9$00000000-0000-0000-0000-000000000000\xa0\xd2X\xc8d:\xc3\xd9$3c4d1a52-536c-421a-b258-346b06097fda\xd9$1ceb5f07-b62a-4d3b-811a-d2adfce45496\xae192.168.14.177\xc2\xa9OSXEditor\xb0Mac OS X 10.12.3\xd9$c5966702-2936-4028-b911-c417cea9744f\x00\xd9$19fba27e-abf9-4be1-b8c9-eb583f3b3f61\xcd\x13\xd0\xd9$87bafec1-5368-4b5c-8368-7309a3e39a80\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

In [33]: msgpack.unpackb(message.value)
---------------------------------------------------------------------------
ExtraData                                 Traceback (most recent call last)
<ipython-input-33-31c954e1d841> in <module>()
----> 1 msgpack.unpackb(message.value)

msgpack/_unpacker.pyx in msgpack._unpacker.unpackb (msgpack/_unpacker.cpp:2143)()

ExtraData: unpack(b) received extra data.

Python 3.5, msgpack-python

Any ideas?

DmitrySemenov
  • 9,204
  • 15
  • 76
  • 121

1 Answers1

3

Okay seems the problem is in msgpack-python, if I use https://pypi.python.org/pypi/u-msgpack-python everything worked

In [4]: import umsgpack
In [5]: umsgpack.unpackb(message.value)
Out[5]: 
['00000000-0000-0000-0000-000000000000',
 None,
 '00000000-0000-0000-0000-000000000000',
 None,
 None,
 '00000000-0000-0000-0000-000000000000',
 '',
 1489527866,
 True,
 '3c4d1a52-536c-421a-b258-346b06097fda',
 '1ceb5f07-b62a-4d3b-811a-d2adfce45496',
 '192.168.14.177',
 False,
 'OSXEditor',
 'Mac OS X 10.12.3',
 'c5966702-2936-4028-b911-c417cea9744f',
 0,
 '19fba27e-abf9-4be1-b8c9-eb583f3b3f61',
 5072,
 '87bafec1-5368-4b5c-8368-7309a3e39a80',
 0.0]
DmitrySemenov
  • 9,204
  • 15
  • 76
  • 121
  • 1
    Can confirm that I had a similar problem. Tried to send an array of integers from C++, packaged with msgpack, to my python server that had msgpack. Ran into the same "unpack(b) received extra data." problem if my array had more than 1 value. By changing to umsgpack, everything started working. – Mierpo Sep 08 '20 at 12:19