Skip to content

debezium-connector-kingbase对接人大金仓kes v9的cdc增量信息的bug #449

@pinis123

Description

@pinis123

你好
我采用你的debezium-connector-kingbase项目,对接人大金仓kes v9的cdc增量信息

实测发现,只能正常处理op=r 也就是快照,对于insert插入操作就报错了,报错:

2025-06-11 15:27:37,679 ERROR  ||  Error while trying to run connector class 'io.debezium.connector.postgresqlkes.PostgresConnector'   [io.debezium.embedded.EmbeddedEngine]
org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
	at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:50)
	at io.debezium.connector.postgresqlkes.PostgresStreamingChangeEventSource.execute(PostgresStreamingChangeEventSource.java:181)
	at io.debezium.connector.postgresqlkes.PostgresStreamingChangeEventSource.execute(PostgresStreamingChangeEventSource.java:42)
	at io.debezium.pipeline.ChangeEventSourceCoordinator.streamEvents(ChangeEventSourceCoordinator.java:174)
	at io.debezium.pipeline.ChangeEventSourceCoordinator.executeChangeEventSources(ChangeEventSourceCoordinator.java:141)
	at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:109)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.apache.kafka.connect.errors.ConnectException: com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field.  This could mean either that the input has been truncated or that an embedded message misreported its own length.
	at io.debezium.connector.postgresqlkes.connection.pgproto.PgProtoMessageDecoder.processNotEmptyMessage(PgProtoMessageDecoder.java:71)
	at io.debezium.connector.postgresqlkes.connection.AbstractMessageDecoder.processMessage(AbstractMessageDecoder.java:33)
	at io.debezium.connector.postgresqlkes.connection.PostgresReplicationConnection$1.deserializeMessages(PostgresReplicationConnection.java:533)
	at io.debezium.connector.postgresqlkes.connection.PostgresReplicationConnection$1.readPending(PostgresReplicationConnection.java:525)
	at io.debezium.connector.postgresqlkes.PostgresStreamingChangeEventSource.searchWalPosition(PostgresStreamingChangeEventSource.java:327)
	at io.debezium.connector.postgresqlkes.PostgresStreamingChangeEventSource.execute(PostgresStreamingChangeEventSource.java:162)
	... 10 common frames omitted
Caused by: com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field.  This could mean either that the input has been truncated or that an embedded message misreported its own length.
	at com.google.protobuf.InvalidProtocolBufferException.truncatedMessage(InvalidProtocolBufferException.java:107)
	at com.google.protobuf.CodedInputStream$ArrayDecoder.readRawLittleEndian32(CodedInputStream.java:1144)
	at com.google.protobuf.CodedInputStream$ArrayDecoder.readFixed32(CodedInputStream.java:783)
	at com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:524)
	at com.google.protobuf.UnknownFieldSet$Builder.mergeFrom(UnknownFieldSet.java:491)
	at com.google.protobuf.UnknownFieldSet$Builder.mergeFrom(UnknownFieldSet.java:604)
	at com.google.protobuf.UnknownFieldSet$Builder.mergeFrom(UnknownFieldSet.java:304)
	at com.google.protobuf.CodedInputStream$ArrayDecoder.readGroup(CodedInputStream.java:837)
	at com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:518)
	at com.google.protobuf.GeneratedMessageV3$Builder.parseUnknownField(GeneratedMessageV3.java:863)
	at io.debezium.connector.postgresql.proto.PgProto$Point$Builder.mergeFrom(PgProto.java:613)
	at io.debezium.connector.postgresql.proto.PgProto$Point$Builder.mergeFrom(PgProto.java:445)
	at com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:872)
	at io.debezium.connector.postgresql.proto.PgProto$DatumMessage$Builder.mergeFrom(PgProto.java:1941)
	at io.debezium.connector.postgresql.proto.PgProto$DatumMessage$1.parsePartialFrom(PgProto.java:2670)
	at io.debezium.connector.postgresql.proto.PgProto$DatumMessage$1.parsePartialFrom(PgProto.java:2662)
	at com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:889)
	at io.debezium.connector.postgresql.proto.PgProto$RowMessage$Builder.mergeFrom(PgProto.java:4417)
	at io.debezium.connector.postgresql.proto.PgProto$RowMessage$1.parsePartialFrom(PgProto.java:5417)
	at io.debezium.connector.postgresql.proto.PgProto$RowMessage$1.parsePartialFrom(PgProto.java:5409)
	at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:158)
	at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:191)
	at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:203)
	at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:208)
	at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
	at io.debezium.connector.postgresql.proto.PgProto$RowMessage.parseFrom(PgProto.java:3994)
	at io.debezium.connector.postgresqlkes.connection.pgproto.PgProtoMessageDecoder.processNotEmptyMessage(PgProtoMessageDecoder.java:53)
	... 15 common frames omitted。。。。。。

看上去和

<dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.3.0</version>
        </dependency>

的具体版本有关系,切换protobuf-java不同的版本往往会有不同的错误。。。

当然了,对接人大kes ,采用的底层逻辑解码插件是decoderbufs。。。这个你肯定知道

我的问题是,你们具体实测过吗?在人大金仓kes v8/v9上,具体实战测试过吗?抑或,你们是否遭遇相关的问题?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions