-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/57617/
-----------------------------------------------------------

Review request for Flume.


Bugs: FLUME-2620
    https://issues.apache.org/jira/browse/FLUME-2620


Repository: flume-git


Description
-------

Flume user guide does not specify whether a value in event header could be null 
or not. Given an external system generating events which header vaules can be 
null and a user configures Flume with Memory Channel then he will have no 
trouble. Later on when the user changes Memory Channel to File Channel then 
Flume will fail with NPE. It is because FC is serializing events with protocol 
buffer and header values are defined as required in the proto file.
In this patch I have changed the value field to optional. However protocol 
buffer does not have a notation for null and setting a field to null raises NPE 
again. Added a null check before serialization to prevent this.
There is on caveat: When an optional field is not set, at deserialization it 
will be set to a default value: in this case it will be empty string.


Diffs
-----

  
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Put.java
 0a70a24 
  
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/proto/ProtosFactory.java
 50492cc 
  flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto 25520e8 
  
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java
 8efe991 
  flume-ng-core/src/test/java/org/apache/flume/channel/TestMemoryChannel.java 
344bb58 


Diff: https://reviews.apache.org/r/57617/diff/1/


Testing
-------

Added unit test for both Memory Channel and File Channel to check if they 
accept null values in header.


Thanks,

Marcell Hegedus

Reply via email to