[ https://issues.apache.org/jira/browse/FLUME-2620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15415938#comment-15415938 ]
Mike Percy commented on FLUME-2620: ----------------------------------- Also [~jarcec] regarding your comment back in May, I don't think the Flume data model really supports null values in the headers because the schema for the header values is Map<String, String>. I would be more comfortable always casting null -> empty string and even implicitly performing this case by accepting null values in the FileChannel and coercing them to empty strings. Thoughts? > File channel throws NullPointerException if a header value is null > ------------------------------------------------------------------ > > Key: FLUME-2620 > URL: https://issues.apache.org/jira/browse/FLUME-2620 > Project: Flume > Issue Type: Bug > Components: File Channel > Reporter: Santiago M. Mola > Assignee: Neerja Khattar > Attachments: FLUME-2620-0.patch, FLUME-2620-1.patch, > FLUME-2620-2.patch, FLUME-2620-3.patch, FLUME-2620-4.patch, FLUME-2620.patch, > FLUME-2620.patch > > > File channel throws NullPointerException if a header value is null. > If this is intended, it should be reported correctly in the logs. > Sample trace: > org.apache.flume.ChannelException: Unable to put batch on required channel: > FileChannel chan { dataDirs: [/var/lib/ingestion-csv/chan/data] } > at > org.apache.flume.channel.ChannelProcessor.processEventBatch(ChannelProcessor.java:200) > at > org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run(SpoolDirectorySource.java:236) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.lang.NullPointerException > at > org.apache.flume.channel.file.proto.ProtosFactory$FlumeEventHeader$Builder.setValue(ProtosFactory.java:7415) > at org.apache.flume.channel.file.Put.writeProtos(Put.java:85) > at > org.apache.flume.channel.file.TransactionEventRecord.toByteBuffer(TransactionEventRecord.java:174) > at org.apache.flume.channel.file.Log.put(Log.java:622) > at > org.apache.flume.channel.file.FileChannel$FileBackedTransaction.doPut(FileChannel.java:469) > at > org.apache.flume.channel.BasicTransactionSemantics.put(BasicTransactionSemantics.java:93) > at > org.apache.flume.channel.BasicChannelSemantics.put(BasicChannelSemantics.java:80) > at > org.apache.flume.channel.ChannelProcessor.processEventBatch(ChannelProcessor.java:189) -- This message was sent by Atlassian JIRA (v6.3.4#6332)