python3.5 thrift cybin.ProtocolError: No protocol version header
Asked Answered
E

1

-1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/hskj/anaconda3/lib/python3.5/site-packages/happybase/connection.py", line 242, in tables
    names = self.client.getTableNames()
  File "/hskj/anaconda3/lib/python3.5/site-packages/thriftpy/thrift.py", line 198, in _req
    return self._recv(_api)
  File "/hskj/anaconda3/lib/python3.5/site-packages/thriftpy/thrift.py", line 210, in _recv
    fname, mtype, rseqid = self._iprot.read_message_begin()
  File "thriftpy/protocol/cybin/cybin.pyx", line 439, in cybin.TCyBinaryProtocol.read_message_begin (thriftpy/protocol/cybin/cybin.c:6470)
cybin.ProtocolError: No protocol version header
Eponym answered 28/4, 2017 at 8:20 Comment(2)
>>> import happybase >>> conn = happybase.Connection('192.168.110.2',9000) >>> conn.tables() ... cybin.ProtocolError: No protocol version headerEponym
Please post a MVCEGenus
G
0

The problem seems related to the usage of the "strict read/write" flags. There is a non-standard "cybin" implementation of the standard Thrift binary protocol, the error is in this particular code block:

def read_message_begin(self):
    cdef int32_t size, version, seqid
    cdef TType ttype

    size = read_i32(self.trans)
    if size < 0:
        version = size & VERSION_MASK
        if version != VERSION_1:
            raise ProtocolError('invalid version %d' % version)

        name = c_read_val(self.trans, T_STRING)
        ttype = <TType>(size & TYPE_MASK)
    else:
        if self.strict_read:
            raise ProtocolError('No protocol version header')       // <<<<<<

        name = c_read_string(self.trans, size)
        ttype = <TType>(read_i08(self.trans))

    seqid = read_i32(self.trans)

    return name, ttype, seqid

Without having tried, I'd guess that setting the "strict read" flag to false (instead of true) when instantiating the CyBin protocol should do the trick.

Geaghan answered 30/4, 2017 at 11:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.