Trivago Gollum Versions Save

An n:m message multiplexer written in Go

0.6.0

2 years ago

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.

No Linux/ARMv6 binary has been included in this build due to a build error in the sarama library.

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

  • Format.SplitPick default delimiter is now ","
  • Multiple formatters have been renamed to support the new metadata model
  • 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 map[string][]byte to tgo.MarshalMap.
  • 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.5.4

5 years ago

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.

v0.5.3

6 years ago

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 make([]byte, size).

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.

v0.5.2

6 years ago

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".

v0.5.1

6 years ago

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)

v0.5.0

6 years ago

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

v0.5.0-rc3.1

6 years ago

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.MetadataCopy to actually copy the payload and not reference it

v0.5.0-rc3

6 years ago

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-rc2

  • Windows build works again
  • Fully compatible with 1.9
  • Configs are case sensitive again (#208)
  • Configs errors because of wrong types or parameters now give fix suggestions
  • format.MetadataCopy sub-modulators removed
  • Added a new format.Aggregate
  • Renamed "Aggregate" of the aggregate plugin type to "Plugins"
  • Added a trace method to debug message flow
  • "-t / --trace" renamed to "-pt / --profiletrace", the new "-t / --trace" now refers to message tracing
  • Documentation updated

v0.5.0-rc2

6 years ago

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-rc1

  • Consumer docs updated (fixing missing fields)
  • Added a new SkipIfEmpty parameter for all formatters
  • Added new Try* functions to core.Metadata
  • Built with go1.9-beta2

Known issues

  • Windows build currently broken because of tgo
  • Make test does not complete with go1.9 because if a timestamp deserialization mismatch

v0.5.0-rc1

6 years ago

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.8.

The current release notes can be found under readthedocs.io