canal-python
canal-python copied to clipboard
ack with error protobuf object, (ACK 的包写错了对象)
源代码: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流的问题。
我也有这样的问题。 你已经改了吗
这个是个必现的错误,当使用get_without_ack时,数据库里面一次执行两次update,这个时候就会报错。