canal-python icon indicating copy to clipboard operation
canal-python copied to clipboard

ack with error protobuf object, (ACK 的包写错了对象)

Open siriuscc opened this issue 5 years ago • 2 comments

源代码:https://github.com/haozi3156666/canal-python/blob/68ecec0795ef712c0c00d001fccb39215cfbc3dc/canal/client.py#L116

        elif packet.type == CanalProtocol_pb2.PacketType.ACK:
            ack = CanalProtocol_pb2.PacketType.Ack()
            ack.MergeFromString(packet.body)
            if ack.error_code > 0:
                raise Exception('get data error. error code:%s, error message:%s' % (ack.error_code, ack.error_message))

CanalProtocol_pb2.PacketType.Ack()是一个枚举?即使是枚举也不能这么写吧。此处ACK回包,应该是返回 CanalProtocol_pb2.Ack()

        elif packet.type == CanalProtocol_pb2.PacketType.ACK:
            ack = CanalProtocol_pb2.Ack()
            ack.MergeFromString(packet.body)
            if ack.error_code > 0:
                raise Exception('get data error. error code:%s, error message:%s' % (ack.error_code, ack.error_message))

否则,运行有可能报错,至于为何不是必现的错误,我也不解,不知是否是bytes流的问题。

siriuscc avatar Dec 31 '19 08:12 siriuscc

我也有这样的问题。 你已经改了吗

xingfeT avatar Oct 10 '20 08:10 xingfeT

这个是个必现的错误,当使用get_without_ack时,数据库里面一次执行两次update,这个时候就会报错。

ttgml avatar Nov 30 '22 10:11 ttgml