Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
If I try and use the persistent FlumeAppender with slf4j then I get a NullPointerException in FlumePersistentManager.send because there is no GUID header.
(My repro here was using a copy of Flume modified to use log4j2 - while this particular repro is exotic I'm confident that the general case detailed above will be very common).
There is no GUID header because the FlumeEvent constructor only creates one if the message is a MapMessage.
If the user is using slf4j then all messages are PersistentMessages - and thus will cause this logging to fail.
The GUID is required because it's used as a key in the BerkeleyDB storage.
My attempts at a simple fix ran afoul of the key lookup from the headers in FlumePersisentManager.WriterThread.run().