Gollum 0.6.0 contains breaking changes over version 0.5.x. 🚀 Please read the release notes carefully
Gollum 0.6.0 dependency management switches from go-dep to go-modules. As of this is recommended to use go 1.11 or later for development. 👍 Go 1.10 and 1.9 are still supported. Support for Go 1.8 or older has been dropped.
🆕 New with 0.6.0
- ➕ Added a new flag "-mt" to choose the metrics provider (currently only prometheus).
- 👍 Consumer.File setting "Files" now supports glob patterns.
- 👀 Consumer.Syslog now allows non-standard protocol types (see issue #234)
- 📇 Message metadata can now store arbitrary data
- When not setting the numbers of CPU, gollum will try to use cgroup limits
- 📇 format.Cast for changing metadata field types
- format.Override to set static field values
💥 Breaking changes with 0.6.0
- 0️⃣ Format.SplitPick default delimiter is now ","
- 📇 Multiple formatters have been renamed to support the new metadata model
- 0️⃣ Metrics are now collected using go-metrics. This allows e.g. prometheus output (default). Old-style metrics have been removed and many metrics names have changed.
- Consumer.File setting "File" has been renamed to "Files"
- 👍 Consumer.File setting "OffsetFile" changed to "OffsetPath" to support multiple offset files per consumer.
- Consumer.File setting "PollingDelay" has been renamed to "PollingDelayMs".
- 📇 Metadata type has changed from
- 📇 Deserializing messages written by v0.5.x will lead to metadata of those message to be discarded.
- ✂ Removed support for go 1.8 in order to allow sync.Map
- 🚚 The functions Message.ResizePayload and .ExtendPayload have been removed in favor if go's slice internal functions.
v0.6.0-beta2July 30, 2019
v0.6.0-beta1July 19, 2019
v0.6.0-alpha1August 22, 2018
🚑 This is a critical patch release.
🛠 It fixes various problems with producer.Spooling that prevented it from working at all.
The issues were most likely introduced during the transition from 0.4.x to 0.5.x.
This version has been built with go 1.12.3
🛠 Fixed with 0.5.4
- producer.spooling is now functional again as messages were not written correctly since 0.5.0 (#248).
- producer.spooling now does not block upon shutdown (#248).
- 📇 metadata is now handled correctly when messages are sent to fallback (#247).
- producer.socket now sends messages directly to fallback if connect fails.
🚑 This is a critical patch release.
🛰 It fixes a GC crash caused by the message payload memory handler.
🔌 If your plugins use
core. MessageDataPool.get(size)please replace it with
🏗 The buffer causing this was introduced with 0.5.0 but the bug seems to occur only when building with go 1.10.
🚚 We decided to remove the buffer as it's allocation speed improvements showed to be only minor anyways.
🚀 This is a patch / minor features release.
All binaries have been compiled with go 1.10.1.
🆕 New with 0.5.2
- 🚀 The version number is now generated via make and git. This will properly identify versions between releases.
- 🆕 New producer.AwsCloudwatchLogs. Thanks to @luqasz
- 👕 The makefile has been cleaned up and go meta-linter support has been added
🛠 Fixed with 0.5.2
- consumer.Kafka now properly commits the consumer offsets to kafka. Thanks to @crewton
- producer.awsKinesis failed to produce records under certain conditions
- The consumer.Kafka folderPermissions property is now correctly applied
- formt.ExtractJSON trimValues property is now correctly applied
- 🚀 The gollum binary inside the Dockerfile is built on the same baseimage as deployed
- Filter will now always filter out the MODIFIED message, not the original. This behavior is more "expected".
🚀 This is a patch / minor features release.
⚡️ All vendor dependencies have been updated to the latest version and binaries have been compiled with go 1.9.3.
🆕 New with 0.5.1
- 📇 format.MetadataCopy has been updated to support free copying between metadata and payload
- producer.ElasticSearch alles setting the format of timeBasedIndex
- 🚚 format.GrokToJSON has new options: RemoveEmptyValues, NamedCapturesOnly and SkipDefaultPatterns
- using dep for dependencies instead of glide
🛠 Fixed with 0.5.1
- 🛠 fixed inversion of -lc always
- 🛠 fixed a nil pointer panic with producer.elasticsearch when receiving messages with unassigned streams
- producer.ElasticSearch settings are now named according to config
- producer.ElasticSearch dayBasedIndex renamed to timeBasedIndex and it's now working as expected
- ⚡️ updated dependencies to latest version (brings support for kafka 1.0, fixes user agent parsing for format.processTSV)
Gollum 0.5.0 contains major breaking changes in all areas. 🔧 Configuration files working with Gollum 0.4.x will not work with this verison unless changed. 🚀 Please have a look at the transition guide for details.
Important note: When switching a pipline from 0.4.x to 0.5.0, make sure all spooling data has been read. Messages serialized to disk with 0.4.x are not compatible with 0.5.0.
🆕 New with 0.5.0
- 🔀 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
- 🆕 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
- 🔧 All plugin configuration keys are now case insensitive
- ➕ 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
🛠 Fixed with 0.5.0
- 🔌 The plugin lifecycle has been reimplemented to avoid gollum being stuck waiting for plugins to change state
- ✅ 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 with 0.5.0
- 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
- The message serialization format has been changed
🚀 This is a pre-release of v0.5.0
⚡️ All vendor dependencies have been updated to the latest version and binaries have been compiled with go 1.9-beta2.
🚀 The current release notes can be found under readthedocs.io
🔄 Changes since 0.5.0-rc3
- 🛠 fix
format.MetadataCopyto actually copy the payload and not reference it
- 🛠 fix