【问题标题】:Null-Pointer Exception on debezium "Snapshot - Final stage"debezium“快照 - 最后阶段”上的空指针异常
【发布时间】:2022-07-20 15:14:45
【问题描述】:

我正在使用 debezium 连接到 Oracle 数据库版本 19c。遵循 debezium examples repository 并使用 docker-compose 脚本。 为了让它工作,我不得不修改 debezium-with-oracle-jdbc 的 Dockerfile。您可以在this repository 找到我的更改以供复制。

到问题:

连接数据库时出现以下异常。最初的步骤似乎成功了,但我假设在恢复模式时,连接器崩溃了。我在代码中找到了该位置,但我无法判断这是数据库问题还是从 debezium 连接到 kafka 的问题。崩溃线可以在here找到。

我读过here,通常应该在崩溃阶段打印表模式。也许 DB 用户缺少特权?我找不到连接数据库用户必须拥有哪些权限。

connect_1    | 2021-11-23 15:08:44,773 INFO   Oracle|server1|snapshot  Metrics registered   [io.debezium.pipeline.ChangeEventSourceCoordinator]
connect_1    | 2021-11-23 15:08:44,773 INFO   Oracle|server1|snapshot  Context created   [io.debezium.pipeline.ChangeEventSourceCoordinator]
connect_1    | 2021-11-23 15:08:44,776 INFO   Oracle|server1|snapshot  No previous offset has been found.   [io.debezium.connector.oracle.OracleSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:08:44,776 INFO   Oracle|server1|snapshot  According to the connector configuration only schema will be snapshot.   [io.debezium.connector.oracle.OracleSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:08:44,777 INFO   Oracle|server1|snapshot  Snapshot step 1 - Preparing   [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:08:44,777 INFO   Oracle|server1|snapshot  Snapshot step 2 - Determining captured tables   [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:08:55,141 INFO   Oracle|server1|snapshot  Snapshot step 3 - Locking captured tables [<Disclosed, but found 323 tables in total>]   [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:09:11,187 INFO   Oracle|server1|snapshot  Snapshot step 4 - Determining snapshot offset   [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:09:12,023 INFO   Oracle|server1|snapshot  Snapshot step 5 - Reading structure of captured tables   [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:09:43,928 INFO   ||  WorkerSourceTask{id=inventory-connector-0} flushing 0 outstanding messages for offset commit   [org.apache.kafka.connect.runtime.WorkerSourceTask]
connect_1    | 2021-11-23 15:09:53,390 INFO   Oracle|server1|snapshot  Snapshot step 6 - Persisting schema history   [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:09:53,438 INFO   Oracle|server1|snapshot  Snapshot - Final stage   [io.debezium.pipeline.source.AbstractSnapshotChangeEventSource]
connect_1    | 2021-11-23 15:09:53,439 ERROR  Oracle|server1|snapshot  Producer failure   [io.debezium.pipeline.ErrorHandler]
connect_1    | io.debezium.DebeziumException: java.lang.NullPointerException
connect_1    |  at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:80)
connect_1    |  at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:118)
connect_1    |  at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
connect_1    |  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
connect_1    |  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
connect_1    |  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
connect_1    |  at java.base/java.lang.Thread.run(Thread.java:829)
connect_1    | Caused by: java.lang.NullPointerException
connect_1    |  at io.debezium.relational.RelationalSnapshotChangeEventSource.createSchemaChangeEventsForTables(RelationalSnapshotChangeEventSource.java:277)
connect_1    |  at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:124)
connect_1    |  at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:71)
connect_1    |  ... 6 more
connect_1    | 2021-11-23 15:09:53,445 INFO   Oracle|server1|snapshot  Connected metrics set to 'false'   [io.debezium.pipeline.metrics.StreamingChangeEventSourceMetrics]
connect_1    | 2021-11-23 15:09:53,909 INFO   ||  WorkerSourceTask{id=inventory-connector-0} flushing 0 outstanding messages for offset commit   [org.apache.kafka.connect.runtime.WorkerSourceTask]
connect_1    | 2021-11-23 15:09:53,910 ERROR  ||  WorkerSourceTask{id=inventory-connector-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted   [org.apache.kafka.connect.runtime.WorkerTask]
connect_1    | org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
connect_1    |  at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:42)
connect_1    |  at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:135)
connect_1    |  at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
connect_1    |  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
connect_1    |  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
connect_1    |  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
connect_1    |  at java.base/java.lang.Thread.run(Thread.java:829)
connect_1    | Caused by: io.debezium.DebeziumException: java.lang.NullPointerException
connect_1    |  at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:80)
connect_1    |  at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:118)
connect_1    |  ... 5 more
connect_1    | Caused by: java.lang.NullPointerException
connect_1    |  at io.debezium.relational.RelationalSnapshotChangeEventSource.createSchemaChangeEventsForTables(RelationalSnapshotChangeEventSource.java:277)
connect_1    |  at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:124)
connect_1    |  at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:71)
connect_1    |  ... 6 more
connect_1    | 2021-11-23 15:09:53,911 INFO   ||  Stopping down connector   [io.debezium.connector.common.BaseSourceTask]

【问题讨论】:

  • 您使用的是什么版本的连接器?
  • 您好 Naros,感谢您的调查。我使用的是 DEBEZIUM_VERSION=1.7,因此下载的图像是 debezium/connect-with-oracle-jdbc:1.7,如复制代码中所述。
  • 请尝试 1.8,如果仍然有问题,请告诉我。如果是这样,您可能希望在问题中分享您的连接器配置,以便我们确定是否存在其他问题。

标签: oracle apache-kafka debezium


【解决方案1】:

我在 1.9.5 中也遇到了这个问题。你知道造成这种情况的根本原因是什么吗?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2013-05-14
  • 1970-01-01
  • 2021-01-19
  • 2019-07-18
  • 2013-08-12
相关资源
最近更新 更多