Hi all,

Just wanted to send a note about a major breaking change that just landed on the dev branch. We now have splitter plugins. They solve the problem of deciding what the record boundaries are for a given input stream, so Heka knows where to slice off a chunk of data that should be decoded into a message.

Before the introduction of splitter plugins this was done by inputs on an ad-hoc basis. A handful of our input plugins had similar-but-slightly-different implementations, which was of course a maintenance headache. The rest of them had no splitting support at all, so any division of a single data payload had to happen downstream, either in a decoder or a filter, neither of which were ideal for various reasons.

The initial set of splitters we offer will be familiar to anyone who's used Heka for a while:

* TokenSplitter (for single character delimited streams, replaces `parser_type = "token"`) * RegexSplitter (for when a single character isn't good enough, replaces `parser_type = "regexp"`) * NullSplitter (for when your incoming data is already split at natural boundaries, e.g. one record per UDP packet, replaces the workaround of `parser_type = "regexp"` and `delimiter = '$'`) * HekaFramingSplitter (for Heka's protobuf streams, replaces `parser_type = "message.proto"`)

Config documentation on splitters is available on ReadTheDocs:

http://hekad.readthedocs.org/en/dev/config/splitters/index.html

Most existing Heka configs will need to be edited, because any input config section that specifies a "parser_type" value will no longer work. Those settings should be replaced with the appropriate splitter setting as described in the bulleted list above.

Additionally, you'll probably want to update any custom input plugins you may have written to work with splitters. If you've depended on the prior stream parsing code, you'll *have* to update your input because it will no longer work. If not, your input might work, but it'd still probably be a good idea to add splitter support so you will play nicely with the rest of the infrastructure. I've detailed how the interaction between inputs and splitters should work in the updated "Extending Heka" documentation section:

hekad.readthedocs.org/en/dev/developing/plugin.html#inputs

I've also included what you need to know should you wish to write your own splitters:

hekad.readthedocs.org/en/dev/developing/plugin.html#splitters

This is a pretty big change, so I'm hoping that plenty of folks will test it out to help flush out the inevitable bugs. As always, please send questions or comments to this mailing list, or come find us in the #heka channel on irc.mozilla.org.

Thanks!

-r

_______________________________________________
Heka mailing list
Heka@mozilla.org
https://mail.mozilla.org/listinfo/heka

Reply via email to