Connector Name
source-mysql
Connector Version
3.51.5
What step the error happened?
During the sync
Relevant information
We observed MySQL CDC failures with the following error:
Incumbent CDC state is invalid
java.lang.NullPointerException
Cannot invoke "io.debezium.connector.mysql.gtid.MySqlGtidSet$UUIDSet.getUUID()" because "other" is null
This came up while validating CDC against a restored MySQL instance used for staging/testing.
Related discussion:
Upstream Debezium context:
Findings from investigation:
- The Bulk Extract CDC toolkit still depended on Debezium
3.1.2.Final.
- In local validation, moving that dependency line to Debezium
3.4.2.Final removed the GTID null-handling failure
path.
- While validating that change, we found that
source-mysql was still pinned to Bulk CDK 0.1.77, and the current
connector sources on master no longer compile cleanly against that stale published artifact.
source-mysql also still used the deprecated Jackson API ObjectNode.fields(), which fails under Kotlin -Werror.
This needs to be addressed in two follow-up PRs:
- one PR for the Bulk Extract CDC toolkit Debezium bump
- one PR for
source-mysql Bulk CDK alignment and deprecated Jackson API cleanup
Relevant log output
2026-03-27 15:14:01 source ERROR main i.a.c.AirbyteConnectorRunnable(run):38 Failed class io.airbyte.cdk.read.ReadOperation operation execution. io.airbyte.cdk.ConfigErrorException: Incumbent CDC state is invalid, reason: java.lang.NullPointerException: Cannot invoke "io.debezium.connector.mysql.gtid.MySqlGtidSet$UUIDSet.getUUID()" because "other" is null
at io.airbyte.cdk.read.cdc.CdcPartitionsCreator.run(CdcPartitionsCreator.kt:85) ~[bulk-cdk-toolkit-extract-cdc-0.1.77.jar:?]
at io.airbyte.cdk.read.FeedReader.createPartitionsWithResources(FeedReader.kt:148) ~[bulk-cdk-core-extract-0.1.77.jar:?]
at io.airbyte.cdk.read.FeedReader.access$createPartitionsWithResources(FeedReader.kt:35) ~[bulk-cdk-core-extract-0.1.77.jar:?]
at io.airbyte.cdk.read.FeedReader$createPartitions$3.invokeSuspend(FeedReader.kt:121) ~[bulk-cdk-core-extract-0.1.77.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-2.1.10.jar:2.1.10-release-473]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:?]
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:?]
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702) ~[kotlinx-coroutines-core-jvm-1.8.1.jar:?]
Stack Trace: io.airbyte.cdk.ConfigErrorException: Incumbent CDC state is invalid, reason: java.lang.NullPointerException: Cannot invoke "io.debezium.connector.mysql.gtid.MySqlGtidSet$UUIDSet.getUUID()" because "other" is null
at io.airbyte.cdk.read.cdc.CdcPartitionsCreator.run(CdcPartitionsCreator.kt:85)
at io.airbyte.cdk.read.FeedReader.createPartitionsWithResources(FeedReader.kt:148)
at io.airbyte.cdk.read.FeedReader.access$createPartitionsWithResources(FeedReader.kt:35)
at io.airbyte.cdk.read.FeedReader$createPartitions$3.invokeSuspend(FeedReader.kt:121)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)
Contribute
Internal Tracking: https://github.com/airbytehq/oncall/issues/11532
Connector Name
source-mysql
Connector Version
3.51.5
What step the error happened?
During the sync
Relevant information
We observed MySQL CDC failures with the following error:
Incumbent CDC state is invalidjava.lang.NullPointerExceptionCannot invoke "io.debezium.connector.mysql.gtid.MySqlGtidSet$UUIDSet.getUUID()" because "other" is nullThis came up while validating CDC against a restored MySQL instance used for staging/testing.
Related discussion:
Upstream Debezium context:
Findings from investigation:
3.1.2.Final.3.4.2.Finalremoved the GTID null-handling failurepath.
source-mysqlwas still pinned to Bulk CDK0.1.77, and the currentconnector sources on
masterno longer compile cleanly against that stale published artifact.source-mysqlalso still used the deprecated Jackson APIObjectNode.fields(), which fails under Kotlin-Werror.This needs to be addressed in two follow-up PRs:
source-mysqlBulk CDK alignment and deprecated Jackson API cleanupRelevant log output
Contribute
Internal Tracking: https://github.com/airbytehq/oncall/issues/11532