-
Bug
-
Resolution: Duplicate
-
Major
-
None
-
0.9.4.Final
-
None
When the Postgres connector comes across a timestamp value, it parses the value using the format yyyy-MM-dd HH:mm:ss[.S]. Unfortunately, there are dates in our database that do not fit his format because the years are larger than 4 digits. When the connector tries to parse them, it throws a DateTimeParseException and dies.
Is there a recommended way of handling this without making any code changes? For example, I will probably have to modify the connector and try to manually parse a value that falls outside of the yyyy-MM-dd HH:mm:ss[.S] format.
Stack trace available here is a gist: https://gist.github.com/jaydeesimon/e754b2b25327c9df0577df1f586bbf89
or see below
[2019-04-29 23:27:08,923] INFO WorkerSourceTask{id=ghr-connector3-0} Source task finished initialization and start (org.apache.kafka.connect.runtime.WorkerSourceTask:199)
[2019-04-29 23:27:09,094] ERROR Cannot parse time/date value '29398-03-04 01:49:01.698797', expected format 'yyyy-MM-dd HH:mm:ss[.S]' (io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat:140)
[2019-04-29 23:27:09,095] ERROR unexpected exception while streaming logical changes (io.debezium.connector.postgresql.RecordsStreamProducer:146)
org.apache.kafka.connect.errors.ConnectException: java.time.format.DateTimeParseException: Text '29398-03-04 01:49:01.698797' could not be parsed at index 0
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.format(DateTimeFormat.java:141)
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.timestamp(DateTimeFormat.java:101)
at io.debezium.connector.postgresql.connection.wal2json.Wal2JsonReplicationMessage.getValue(Wal2JsonReplicationMessage.java:268)
at io.debezium.connector.postgresql.connection.wal2json.Wal2JsonReplicationMessage$1.getValue(Wal2JsonReplicationMessage.java:141)
at io.debezium.connector.postgresql.RecordsStreamProducer.columnValues(RecordsStreamProducer.java:476)
at io.debezium.connector.postgresql.RecordsStreamProducer.process(RecordsStreamProducer.java:268)
at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$streamChanges$1(RecordsStreamProducer.java:134)
at io.debezium.connector.postgresql.connection.wal2json.NonStreamingWal2JsonMessageDecoder.processMessage(NonStreamingWal2JsonMessageDecoder.java:70)
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.deserializeMessages(PostgresReplicationConnection.java:269)
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.read(PostgresReplicationConnection.java:254)
at io.debezium.connector.postgresql.RecordsStreamProducer.streamChanges(RecordsStreamProducer.java:134)
at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$start$0(RecordsStreamProducer.java:120)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
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: java.time.format.DateTimeParseException: Text '29398-03-04 01:49:01.698797' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:492)
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.lambda$timestamp$0(DateTimeFormat.java:101)
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.format(DateTimeFormat.java:138)
... 16 more
[2019-04-29 23:27:09,612] INFO Cluster ID: f8EHzNZpSJSrVpxMaaR1EA (org.apache.kafka.clients.Metadata:285)
[2019-04-29 23:27:09,649] INFO WorkerSourceTask{id=ghr-connector3-0} Committing offsets (org.apache.kafka.connect.runtime.WorkerSourceTask:397)
[2019-04-29 23:27:09,649] INFO WorkerSourceTask{id=ghr-connector3-0} flushing 5 outstanding messages for offset commit (org.apache.kafka.connect.runtime.WorkerSourceTask:414)
[2019-04-29 23:27:09,658] INFO WorkerSourceTask{id=ghr-connector3-0} Finished commitOffsets successfully in 9 ms (org.apache.kafka.connect.runtime.WorkerSourceTask:496)
[2019-04-29 23:27:09,659] ERROR WorkerSourceTask{id=ghr-connector3-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:177)
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:159)
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.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
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: java.time.format.DateTimeParseException: Text '29398-03-04 01:49:01.698797' could not be parsed at index 0
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.format(DateTimeFormat.java:141)
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.timestamp(DateTimeFormat.java:101)
at io.debezium.connector.postgresql.connection.wal2json.Wal2JsonReplicationMessage.getValue(Wal2JsonReplicationMessage.java:268)
at io.debezium.connector.postgresql.connection.wal2json.Wal2JsonReplicationMessage$1.getValue(Wal2JsonReplicationMessage.java:141)
at io.debezium.connector.postgresql.RecordsStreamProducer.columnValues(RecordsStreamProducer.java:476)
at io.debezium.connector.postgresql.RecordsStreamProducer.process(RecordsStreamProducer.java:268)
at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$streamChanges$1(RecordsStreamProducer.java:134)
at io.debezium.connector.postgresql.connection.wal2json.NonStreamingWal2JsonMessageDecoder.processMessage(NonStreamingWal2JsonMessageDecoder.java:70)
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.deserializeMessages(PostgresReplicationConnection.java:269)
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.read(PostgresReplicationConnection.java:254)
at io.debezium.connector.postgresql.RecordsStreamProducer.streamChanges(RecordsStreamProducer.java:134)
at io.debezium.connector.postgresql.RecordsStreamProducer.lambda$start$0(RecordsStreamProducer.java:120)
... 5 more
Caused by: java.time.format.DateTimeParseException: Text '29398-03-04 01:49:01.698797' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:492)
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.lambda$timestamp$0(DateTimeFormat.java:101)
at io.debezium.connector.postgresql.connection.wal2json.DateTimeFormat$ISODateTimeFormat.format(DateTimeFormat.java:138)
... 16 more
[2019-04-29 23:27:09,660] ERROR WorkerSourceTask{id=ghr-connector3-0} Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:178)
- duplicates
-
DBZ-1255 Debezium does not expect a year larger than 9999
-
- Closed
-