Skip to content

v0.5.0

Compare
Choose a tag to compare
@arnecls arnecls released this 21 Dec 15:16
· 130 commits to master since this release
01a9a43

This is a major release with a lot of breaking changes.
The configuration format has changed, so you HAVE to change your configuration files.
A guide can be found in the detailed release notes.

All binaries for this release have been compiled with Go 1.9.2

New features

  • Filters and Formatters have been merged into one list
  • You can now use a filter or formatter more than once in the same plugin
  • Consumers can now do filtering and formatting, too
  • Messages can now store metadata. Formatters can affect the payload or a metadata field
  • All plugins now have an automatic log scope
  • Message payloads are now backed by a memory pool
  • Messages now store the original message, i.e. a backup of the payload state after consumer processing
  • Gollum now provides per-stream metrics
  • Plugins are now able to implement health checks that can be queried via http
  • There is a new pseudo plugin type "Aggregate" that can be used to share configuration between multiple plugins
  • New base types for producers: Direct, Buffered, Batched
  • Plugin configurations now support nested structures
  • The configuration process has been simplified a lot by adding automatic error handling and struct tags
  • Added a new formatter format.GrokToJSON
  • Added a new formatter format.JSONToInflux10
  • Added a new formatter format.Double
  • Added a new formatter format.MetadataCopy
  • Added a new formatter format.Trim
  • Consumer.File now supports filesystem events
  • Consumers can now define the number of go routines used for formatting/filtering
  • All AWS plugins now support role switching
  • All AWS plugins are now based on the same credentials code

Bugfixes

  • The plugin lifecycle has been reimplemented to avoid gollum being stuck waiting for plugins to change state
  • Any errors during the configuration phase will cause gollum to exit
  • Integration test suite added
  • Producer.HTTPRequest port handling fixed
  • The test-config command will now produce more meaningful results
  • Duplicating messages now properly duplicates the whole message and not just the struct
  • Several race conditions have been fixed
  • Producer.ElasticSearch is now based on a more up-to-date library
  • Producer.AwsS3 is now behaving more like producer.File
  • Gollum metrics can now bind to a specific address instead of just a port

Breaking changes

  • The config format has changed to improve automatic processing
  • A lot of plugins have been renamed to avoid confusion and to better reflect their behavior
  • A lot of plugins parameters have been renamed
  • The instances plugin parameter has been removed
  • Most of gollum's metrics have been renamed
  • Plugin base types have been renamed
  • All message handling function signatures have changed to use pointers
  • All formatters don't daisy chain anymore as they can now be listed in proper order
  • Stream plugins have been renamed to Router plugins
  • Routers are not allowed to modify message content anymore
  • filter.All and format.Forward have been removed as they are not required anymore
  • Producer formatter listss dedicated to format a key or similar constructs have been removed
  • Logging framework switched to logrus
  • The package gollum.shared has been removed in favor of trivago.tgo
  • Fuses have been removed from all plugins
  • The general message sequence number has been removed
  • The term "drop" has been replaced by the term "fallback" to emphasise it's use
  • The _DROPPED_ stream has been removed. Messages are discarded if no fallback is set
  • Formatters can still the stream of a message but cannot trigger routing by themselves
  • Compiling contrib plugins now requires a specific loader.go to be added
  • The docker file on docker hub is now a lot smaller and only contains the gollum binary