[ https://issues.apache.org/jira/browse/KAFKA-7157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16792864#comment-16792864 ]
ASF GitHub Bot commented on KAFKA-7157: --------------------------------------- Nimfadora commented on pull request #6446: [WIP] KAFKA-7157: Connect TimestampConverter SMT doesn't handle null values URL: https://github.com/apache/kafka/pull/6446 ### Goal Introduce null-value handling to TimestampConverter SMT. ### Details The existing org.apache.kafka.connect.transforms.TimestampConverter does not handle null values. When null value is passed to SMT the NPE is thrown. This PR introduces null vallue handling for this SMT. `schemaless null value` will result in `null record value` `schemaless null complex object` will result in `null record value` `null struct(has schema)` will result in `null record value with optional struct schema` `null struct(has schema) field` will result in `record value with null field value and optional struct schema for that field` ### Important We consider that original schema with null value will have optional modifier. Maybe we should be smarter and decide on the value of optional modifier based on the field actual nullability. ### Testing Unit tests are provided ### Committer Checklist (excluded from commit message) - [ ] Verify design and implementation - [ ] Verify test coverage and CI build status - [ ] Verify documentation (including upgrade notes) ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Connect TimestampConverter SMT doesn't handle null values > --------------------------------------------------------- > > Key: KAFKA-7157 > URL: https://issues.apache.org/jira/browse/KAFKA-7157 > Project: Kafka > Issue Type: Bug > Components: KafkaConnect > Affects Versions: 0.10.2.0 > Reporter: Randall Hauch > Assignee: Valeria Vasylieva > Priority: Major > > TimestampConverter SMT is not able to handle null values (in any versions), > so it's always trying to apply the transformation to the value. Instead, it > needs to check for null and use the default value for the new schema's field. > {noformat} > [2018-07-03 02:31:52,490] ERROR Task MySourceConnector-2 threw an uncaught > and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask) > java.lang.NullPointerException > at > org.apache.kafka.connect.transforms.TimestampConverter$2.toRaw(TimestampConverter.java:137) > > at > org.apache.kafka.connect.transforms.TimestampConverter.convertTimestamp(TimestampConverter.java:440) > > at > org.apache.kafka.connect.transforms.TimestampConverter.applyValueWithSchema(TimestampConverter.java:368) > > at > org.apache.kafka.connect.transforms.TimestampConverter.applyWithSchema(TimestampConverter.java:358) > > at > org.apache.kafka.connect.transforms.TimestampConverter.apply(TimestampConverter.java:275) > > at > org.apache.kafka.connect.runtime.TransformationChain.apply(TransformationChain.java:38) > > at > org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:435) > > at > org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:264) > at > org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:182) > > at > org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:150) > > at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:146) > at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:190) > 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) > [2018-07-03 02:31:52,491] ERROR Task is being killed and will not recover > until manually restarted (org.apache.kafka.connect.runtime.WorkerTask) > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)