Gollum v0.4.0 Release Notes

  • ๐Ÿš€ This release includes several reliability fixes that prevent messages from being lost during shutdown. During this process the startup/shutdown mechanics were changed which introduced a lot of breaking changes. Also included are improvements on the file, socket and scribe producers. ๐ŸŽ Write performance may show a minor increase for some producers.

    ๐Ÿš€ This release contains breaking changes over version 0.3.x. Custom producers and config files may have to be adjusted.

    ๐Ÿ’ฅ Breaking changes with 0.4.0

    • shared.RuntimeType renamed to TypeRegistry
    • core.StreamTypes renamed to StreamRegistry
    • ๐Ÿšš ?ControlLoop callback parameters for command handling moved to callback members
    • ?ControlLoop renamed to ?Loop, where ? can be a combination of Control (handling of control messages), Message (handling of messages) or Ticker (handling of regular callbacks)
    • ๐Ÿ”Œ PluginControlStop is now splitted into PluginControlStopConsumer and PluginControlStopProducer to allow plugins that are producer and consumers.
    • โฑ Producer.Enqueue now takes care of dropping messages and accepts a timeout overwrite value
    • ๐Ÿ”จ MessageBatch has been refactored to store messages instead of preformatted strings. This allows dropping messages from a batch.
    • ๐Ÿšš Message.Drop has been removed, Message.Route can be used instead
    • ๐Ÿšš The LoopBack consumer has been removed. Producers can now drop messages to any stream using DropToStream.
    • ๐Ÿ”Œ Stream plugins are now allowed to only bind to one stream
    • ๐Ÿ“‡ Renamed producer.HttpReq to producer.HTTPRequest
    • ๐Ÿ“‡ Renamed format.StreamMod to format.StreamRoute
    • ๐Ÿ”ง For format.Envelope postfix and prefix configuration keys have been renamed to EnvelopePostifx and EnvelopePrefix
    • Base64Encode and Base64Decode formatter parameters have been renamed to "Base64*"
    • โœ‚ Removed the MessagesPerSecAvg metric
    • Two functions were added to the MessageSource interface to allow blocked/active state query
    • ๐Ÿšš The low resolution timer has been removed

    ๐Ÿ›  Fixed with 0.4.0

    • Messages stored in channels or MessageBatches can now be flushed properly during shutdown
    • Several producers now properly block when their queue is full (messages could be lost before)
    • Producer control commands now have priority over processing messages
    • โœ… Switched to sarama trunk version to get the latest broker connection fixes
    • ๐Ÿ›  Fixed various message loss scenarios in file, kafka and http request producer
    • Kafka producer is now reconnecting upon every error (intermediate fix)
    • StreamRoute formatter now properly works when the separator is a space
    • ๐Ÿ”Œ File, Kafka and HTTPRequest plugins don't hava mandatory values anymore
    • Socket consumer can now reopen a dropped connection
    • Socket consumer can now change access rights on unix domain sockets
    • Socket consumer now closes non-udp connections upon any error
    • ๐Ÿšš Socket consumer can now remove an existing UDS file with the same name if necessary
    • Socket consumer now uses proper connection timeouts
    • Socket consumer now sends special acks on error
    • All net.Dial commands were replaced with net.DialTimeout
    • The makfile now correctly includes the config folder
    • Thie file producer now behaves correctly when directory creation fails
    • ๐Ÿ“Œ Spinning loops are now more CPU friendly
    • ๐Ÿ”Œ Plugins can now be addressed by longer paths, too, e.g. "contrib.company.sth"
    • ๐ŸŒฒ Log messages that appear during startup are now written to the set log producer, too
    • ๐Ÿ›  Fixed a problem where control messages could cause shutdown to get stucked
    • ๐Ÿ‘ The Kafka producer has been rewritten for better error handling
    • The scribe producer now dynamically modifies the batch size on error
    • The metric server tries to reopen connection every 5 seconds
    • Float metrics are now properly rounded
    • Ticker functions are now restarted after the function is done, preventing double calls
    • No empty messages will be sent during shutdown

    ๐Ÿ†• New with 0.4.0

    • โž• Added a new stream plugin to route messages to one or more other streams
    • The file producer can now delete old files upon rotate (pruning)
    • The file producer can now overwrite files and set file permissions
    • โž• Added metrics for dropped, discarded, filtered and unroutable messages
    • Streams can now overwrite a producer's ChannelTimeoutMs setting (only for this stream)
    • Producers are now shut down in order based on DropStream dependencies
    • Messages now keep a one-step history of their StreamID
    • โž• Added format.StreamRevert to go back to the last used stream (e.g. after a drop)
    • โž• Added producer.Spooling that temporary stores messages to disk before trying them again (e.g. useful for disconnect scenarios)
    • โž• Added a new formatter to prepend stream names
    • โž• Added a new formatter to serialize messages
    • โž• Added a new formatter to convert collectd to InfluxDB (0.8.x and 0.9.x)
    • It is now possible to add a custom string after the version number
    • ๐Ÿ”Œ Plugins compiled from the contrib folder are now listed in the version string
    • All producers can now define a filter applied before formatting
    • โž• Added unittests to check all bundled producer, consumer, format, filter and stream for interface compatibility
    • ๐Ÿ”Œ Plugins can now be registered and queried by a string based ID via core.PluginRegistry
    • โž• Added producer for InfluxDB data (0.8.x and 0.9.x)
    • Kafka, scribe and elastic search producers now have distinct metrics per topic/category/index
    • ๐Ÿ”– Version number is now added to the metrics as in "MMmmpp" (M)ajor (m)inor (p)atch