-
Type:
Bug
-
Status: Closed (View Workflow)
-
Priority:
Major
-
Resolution: Done
-
Affects Version/s: 0.9.1.Final
-
Fix Version/s: 0.9.2.Final
-
Component/s: postgresql-connector
-
Labels:None
-
Environment:
Running in docker
debezium/connect:0.9.1.Final
debezium/postgres:0.9.1.Final (modified to use wal2json commit 9e962bad61ef2bfa53747470bac4d465e71df880 to match AWS RDS)
debezium/kafka:0.9.1.Final
-
Steps to Reproduce:
I am getting the following exception in debezium when streaming changes from a table that has a text column with a row with a fairly large value. Here is a snapshot of the logs. The full logs (as output by docker-compose logs are attached, as is my connect/register payload.
Some notes:
This behavior is unaffected by doing any of the following:
- Adding this text column to the column.blacklist setting for debezium
- Setting schema.refresh.mode to columns_diff_exclude_unchanged_toast
This is actually happening for me in my Postgres 10.6 on RDS, but I have been able to reproduce it locally.
2019-02-15 14:50:29,114 ERROR Postgres|dbserver1|records-stream-producer unexpected exception while streaming logical changes [io.debezium.connector.postgresql.RecordsStreamProducer] java.lang.NullPointerException at io.debezium.connector.postgresql.RecordsStreamProducer.columnValues(RecordsStreamProducer.java:455) at io.debezium.connector.postgresql.RecordsStreamProducer.process(RecordsStreamProducer.java:263) at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$streamChanges$1(RecordsStreamProducer.java:133) at io.debezium.connector.postgresql.connection.wal2json.NonStreamingWal2JsonMessageDecoder.processMessage(NonStreamingWal2JsonMessageDecoder.java:62) at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.deserializeMessages(PostgresReplicationConnection.java:265) at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.read(PostgresReplicationConnection.java:250) at io.debezium.connector.postgresql.RecordsStreamProducer.streamChanges(RecordsStreamProducer.java:133) at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$start$0(RecordsStreamProducer.java:119) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 2019-02-15 14:50:29,405 INFO || WorkerSourceTask{id=connector-0} Committing offsets [org.apache.kafka.connect.runtime.WorkerSourceTask] 2019-02-15 14:50:29,405 INFO || WorkerSourceTask{id=connector-0} flushing 0 outstanding messages for offset commit [org.apache.kafka.connect.runtime.WorkerSourceTask] 2019-02-15 14:50:29,406 ERROR || WorkerSourceTask{id=connector-0} Task threw an uncaught and unrecoverable exception [org.apache.kafka.connect.runtime.WorkerTask] org.apache.kafka.connect.errors.ConnectException: An exception ocurred in the change event producer. This connector will be stopped. at io.debezium.connector.base.ChangeEventQueue.throwProducerFailureIfPresent(ChangeEventQueue.java:170) at io.debezium.connector.base.ChangeEventQueue.poll(ChangeEventQueue.java:151) at io.debezium.connector.postgresql.PostgresConnectorTask.poll(PostgresConnectorTask.java:156) at org.apache.kafka.connect.runtime.WorkerSourceTask.poll(WorkerSourceTask.java:244) at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:220) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException at io.debezium.connector.postgresql.RecordsStreamProducer.columnValues(RecordsStreamProducer.java:455) at io.debezium.connector.postgresql.RecordsStreamProducer.process(RecordsStreamProducer.java:263) at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$streamChanges$1(RecordsStreamProducer.java:133) at io.debezium.connector.postgresql.connection.wal2json.NonStreamingWal2JsonMessageDecoder.processMessage(NonStreamingWal2JsonMessageDecoder.java:62) at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.deserializeMessages(PostgresReplicationConnection.java:265) at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.read(PostgresReplicationConnection.java:250) at io.debezium.connector.postgresql.RecordsStreamProducer.streamChanges(RecordsStreamProducer.java:133) at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$start$0(RecordsStreamProducer.java:119) ... 5 more