All Versions
Latest Version
Avg Release Cycle
124 days
Latest Release
112 days ago

Changelog History
Page 3

  • v0.2.26 Changes

    February 06, 2014

    โฌ†๏ธ Upgrading from 0.2.25: No backwards incompatible changes.

    ๐Ÿš€ IMPORTANT: this is a quick bug-fix release to address a regression identified in 0.2.25 where 0๏ธโƒฃ statsd prefixes were broken when using the default (or any) prefix that contained a %s for automatic host replacement.

    • #303 - fix nsqd --statsd-prefix when using %s host replacement
  • v0.2.25 Changes

    February 05, 2014

    โฌ†๏ธ Upgrading from 0.2.24: No backwards incompatible changes.

    ๐Ÿš€ This release adds several commonly requested features.

    ๐Ÿ”ง First, thanks to @elubow you can now configure your clients to sample ๐Ÿ‘€ the stream they're subscribed to. To read more about the details of the implementation see #286 and the original discussion in #223. Eric also contributed an improvement to nsq_tail to add the ability to tail the last N messages and exit.

    ๐Ÿ‘ We added config file support (TOML) for ๐Ÿš€ nsqd, nsqlookupd, and nsqadmin - providing even more deployment flexibility. Example configs ๐Ÿ’ป are in the contrib directory. Command line arguments override the equivalent option in the config file.

    We added the ability to pause a topic (it is already possible to pause individual channels). This functionality stops all message flow from topic to channel for all channels of a topic, queueing at the topic level. This enables all kinds of interesting possibilities like atomic channel renames and trivial infrastructure wide operations.

    ๐Ÿฑ Finally, we now compile the static assets used by nsqadmin into the binary, simplifying ๐Ÿš€ deployment. This means that --template-dir is now deprecated and will be removed in a future ๐Ÿš€ release and you can remove the templates you previously deployed and maintained.

    ๐Ÿ†• New Features / Enhancements:

    • #286 - add client IDENTIFY option to sample a % of messages
    • #279 - add TOML config file support to nsqd, nsqlookupd, and nsqadmin
    • #263 - add ability to pause a topic
    • #291 - compile templates into nsqadmin binary
    • #285/#288 - nsq_tail support for -n # to get recent # messages
    • #287/#294 - display client IDENTIFY attributes in nsqadmin (sample rate, TLS, compression)
    • #189/#296 - add client user agent to nsqadmin`
    • #297 - add nsq_to_nsq JSON message filtering options
  • v0.2.24 Changes

    December 07, 2013

    โฌ†๏ธ Upgrading from 0.2.23: No backwards incompatible changes. However, as you'll see below, quite a few command line flags to the utility apps (nsq_to_http, nsq_to_file, nsq_to_http) were ๐Ÿš€ deprecated and will be removed in the next release. Please use this release to transition over to the new ones.

    NOTE: we are now publishing additional binaries built against go1.2

    The most prominent addition is the tracking of end-to-end message processing percentiles. This measures the amount of time it's taking from PUB to FIN per topic/channel. The percentiles are configurable and, because there is some overhead in collecting this data, it can be turned off ๐Ÿ‘€ entirely. Please see the section in the docs for implementation details.

    โž• Additionally, the utility apps received comprehensive support for all configurable reader options ๐Ÿ’ป (including compression, which was previously missing). This necessitated a bit of command line flag cleanup, as follows:


    • deprecated --gzip-compression in favor of --gzip-level
    • deprecated --verbose in favor of --reader-opt=verbose


    • deprecated --throttle-fraction in favor of --sample
    • deprecated --http-timeout-ms in favor of --http-timeout (which is a duration flag)
    • deprecated --verbose in favor of --reader-opt=verbose
    • deprecated --max-backoff-duration in favor of --reader-opt=max_backoff_duration=X


    • deprecated --verbose in favor of --reader-opt=verbose
    • deprecated --max-backoff-duration in favor of --reader-opt=max_backoff_duration=X

    ๐Ÿ†• New Features / Enhancements:

    • #280 - add end-to-end message processing latency metrics
    • #267 - comprehensive reader command line flags for utilities
  • v0.2.23 Changes

    October 21, 2013

    โฌ†๏ธ Upgrading from 0.2.22: No backwards incompatible changes.

    ๐Ÿ— We now use godep in order to achieve reproducible builds with pinned dependencies. If you're on go1.1+ you can now just use godep get

    ๐Ÿš€ This release includes nsqd protocol compression feature negotiation. Snappy and Deflate are ๐Ÿ‘Œ supported, clients can choose their preferred format.

    --statsd-prefix can now be used to modify the prefix for the statsd keys generated by nsqd. ๐Ÿšš This is useful if you want to add datacenter prefixes or remove the default host prefix.

    ๐Ÿš€ Finally, this release includes a "bug" fix that reduces CPU usage for nsqd with many clients by 0๏ธโƒฃ choosing a more reasonable default for a timer used in client output buffering. For more details ๐Ÿ‘€ see #236.

    ๐Ÿ†• New Features / Enhancements:

    • #266 - use godep for reproducible builds
    • #229 - compression (Snappy/Deflate) feature negotiation
    • #241 - binary support for HTTP /mput
    • #269 - add --statsd-prefix flag

    ๐Ÿ› Bug Fixes:

    • #278 - fix nsqd race for client subscription cleanup (thanks @simplereach)
    • #277 - fix nsqadmin counter page
    • #275 - stop accessing simplejson internals
    • #274 - nsqd channel pause state lost during unclean restart (thanks @hailocab)
    • #236 - reduce "idle" CPU usage by 90% with large # of clients
  • v0.2.22 Changes

    August 26, 2013

    โฌ†๏ธ Upgrading from 0.2.21: message timestamps are now officially nanoseconds. The protocol docs always stated this however nsqd was actually sending seconds. This may cause some compatibility issues for client libraries/clients that were taking advantage of this field.

    ๐Ÿš€ This release also introduces support for TLS feature negotiation in nsqd. Clients can optionally ๐Ÿ‘€ enable TLS by using the appropriate handshake via the IDENTIFY command. See #227.

    Significant improvements were made to the HTTP publish endpoints and in flight message handling to โฌ‡๏ธ reduce GC pressure and eliminate memory abuse vectors. See #242, #239, and #245.

    This release also includes a new utility nsq_to_nsq for performant, low-latency, copying of an NSQ topic over the TCP protocol.

    Finally, a whole suite of debug HTTP endpoints were added (and consolidated) under the /debug/pprof namespace. See #238, #248, and #252. As a result nsqd now supports direct profiling via Go's pprof tool, ie:

    $ go tool pprof --web http://ip.address:4151/debug/pprof/heap

    ๐Ÿ†• New Features / Enhancements:

    • #227 - TLS feature negotiation
    • #238/#248/#252 - support for more HTTP debug endpoints
    • #256 - nsqadmin single node view (with GC/mem graphs)
    • #255 - nsq_to_nsq utility for copying a topic over TCP
    • #230 - nsq_to_http takes --content-type flag (thanks @michaelhood)
    • #228 - nsqadmin displays tombstoned topics in the /nodes list
    • #242/#239/#245 - reduced GC pressure for inflight and /mput

    ๐Ÿ› Bug Fixes:

    • #260 - tombstone_topic_producer action in nsqadmin missing node info
    • #244 - fix 64bit atomic alignment issues on 32bit platforms
    • #251 - respect configured limits for HTTP publishing
    • #247 - publish methods should not allow 0 length messages
    • #231/#259 - persist nsqd metadata on topic/channel changes
    • #237 - fix potential memory leaks with retained channel references
    • #232 - message timestamps are now nano
    • #228 - nsqlookupd/nsqadmin would display inactive nodes in /nodes list
    • #216 - fix edge cases in nsq_to_file that caused empty files
  • v0.2.21 Changes

    June 07, 2013

    โฌ†๏ธ Upgrading from 0.2.20: there are no backward incompatible changes in this release.

    ๐Ÿš€ This release introduces a significant new client feature as well as a slew of consistency and recovery improvements to diskqueue.

    First, we expanded the feature negotiation options for clients. There are many cases where you want different output buffering semantics from nsqd to your client. You can now control both โฑ output buffer size and the output buffer timeout via new fields in the IDENTIFY command. You can ๐Ÿšค even disable output buffering if low latency is a priority.

    ๐Ÿ”€ You can now specify a duration between fsyncs via --sync-timeout. This is a far better way to ๐Ÿ”€ manage when the process fsyncs messages to disk (vs the existing --sync-every which is based on # ๐Ÿ”€ of messages). --sync-every is now considered a deprecated option and will be removed in a future ๐Ÿš€ release.

    Finally, 0.2.20 introduced a significant regression in #176 where a topic would not write messages ๐Ÿš€ to its channels. It is recommended that all users running 0.2.20 upgrade to this release. For โž• additional information see #217.

    ๐Ÿ†• New Features / Enhancements:

    • #214 - add --sync-timeout for time based fsync, improve when diskqueue syncs
    • #196 - client configurable output buffering
    • #190 - nsq_tail generates a random #ephemeral channel

    ๐Ÿ› Bug Fixes:

    • #218/#220 - expose --statsd-interval for nsqadmin to handle non 60s statsd intervals
    • #217 - fix new topic channel creation regression from #176 (thanks @elubow)
    • #212 - dont use port in nsqadmin cookies
    • #214 - dont open diskqueue writeFile with O_APPEND
    • #203/#211 - diskqueue depth accounting consistency
    • #207 - failure to write a heartbeat is fatal / reduce error log noise
    • #206 - use broadcast address for statsd prefix
    • #205 - cleanup example utils exit
  • v0.2.20 Changes

    May 13, 2013

    โฌ†๏ธ Upgrading from 0.2.19: there are no backward incompatible changes in this release.

    This release adds a couple of convenient features (such as adding the ability to empty a topic) and continues our work to reduce garbage produced at runtime to relieve GC pressure in the Go โš™ runtime.

    nsqd now has two new flags to control the max value clients can use to set their heartbeat interval as well as adjust a clients maximum RDY count. This is all set/communicated via IDENTIFY.

    nsqadmin now displays nsqd -> nsqlookupd connections in the "nodes" view. This is useful for visualizing how the topology is connected as well as situations where --broadcast-address is being ๐Ÿ‘‰ used incorrectly.

    nsq_to_http now has a "host pool" mode where upstream state will be adjusted based on successful/failed requests and for failures, upstreams will be exponentially backed off. This is an incredibly useful routing mode.

    ๐Ÿ›  As for bugs, we fixed an issue where "fatal" client errors were not actually being treated as fatal. Under certain conditions deleting a topic would not clean up all of its files on disk. There was a reported issue where the --data-path was not writable by the process and this was only discovered after message flow began. We added a writability check at startup to improve feedback. Finally. deferred_count was being sent as a counter value to statsd, it should be a gauge.

    ๐Ÿ†• New Features / Enhancements:

    • #197 - nsqadmin nodes list improvements (show nsqd -> lookupd conns)
    • #192 - add golang runtime version to daemon version output
    • #183 - ability to empty a topic
    • #176 - optimizations to reduce garbage, copying, locking
    • #184 - add table headers to nsqadmin channel view (thanks @elubow)
    • #174/#186 - nsq_to_http hostpool mode and backoff control
    • #173/#187 - nsq_stat utility for command line introspection
    • #175 - add nsqd --max-rdy-count configuration option
    • #178 - add nsqd --max-heartbeat-interval configuration option

    ๐Ÿ› Bug Fixes:

    • #198 - fix fatal errors not actually being fatal
    • #195 - fix delete topic does not delete all diskqueue files
    • #193 - fix data race in channel requeue
    • #185 - ensure that --data-path is writable on startup
    • #182 - fix topic deletion ordering to prevent race conditions with lookupd/diskqueue
    • #179 - deferred_count as gauge for statsd
    • #173/#188/#191 - fix nsqadmin counter template error; fix nsqadmin displaying negative rates
  • v0.2.19 Changes

    April 11, 2013

    โฌ†๏ธ Upgrading from 0.2.18: there are no backward incompatible changes in this release.

    ๐Ÿš€ This release is a small release that introduces one major client side feature and resolves one ๐Ÿš‘ critical bug.

    ๐Ÿ”ง nsqd clients can now configure their own heartbeat interval. This is important because as of 0.2.18 all clients (including producers) received heartbeats by default. In certain cases receiving a heartbeat complicated "simple" clients that just wanted to produce messages and not ๐Ÿ– handle asynchronous responses. This gives flexibility for the client to decide how it would like behave.

    ๐Ÿš‘ A critical bug was discovered where emptying a channel would leave client in-flight state inconsistent (it would not zero) which limited deliverability of messages to those clients.

    ๐Ÿ†• New Features / Enhancements:

    • #167 - 'go get' compatibility
    • #158 - allow nsqd clients to configure (or disable) heartbeats

    ๐Ÿ› Bug Fixes:

    • #171 - fix race conditions identified testing against go 1.1 (scheduler improvements)
    • #160 - empty channel left in-flight count inconsistent (thanks @dmarkham)
  • v0.2.18 Changes

    February 28, 2013

    โฌ†๏ธ Upgrading from 0.2.17: all V2 clients of nsqd now receive heartbeats (previously only clients that subscribed would receive heartbeats, excluding TCP producers).

    โฌ†๏ธ Upgrading from 0.2.16: follow the notes in the 0.2.17 changelog for upgrading from 0.2.16.

    ๐Ÿš€ Beyond the important note above regarding heartbeats this release includes nsq_tail, an extremely ๐Ÿ‘‰ useful utility application that can be used to introspect a topic on the command line. If statsd is enabled (and graphite in nsqadmin) we added the ability to retrieve rates for display in nsqadmin.

    ๐Ÿš‘ We resolved a few critical issues with data consistency in nsqlookupd when channels and topics are โœ‚ deleted. First, deleting a topic would cause that producer to disappear from nsqlookupd for all topics. Second, deleting a channel would cause that producer to disappear from the topic list in nsqlookupd.

    ๐Ÿ†• New Features / Enhancements:

    • #131 - all V2 nsqd clients get heartbeats
    • #154 - nsq_tail example reader
    • #143 - display message rates in nsqadmin

    ๐Ÿ› Bug Fixes:

    • #148 - store tombstone data per registration in nsqlookupd
    • #153 - fix large graph formulas in nsqadmin
    • #150/#151 - fix topics disappearing from nsqlookupd when channels are deleted
  • v0.2.17 Changes

    February 07, 2013

    โฌ†๏ธ Upgrading from 0.2.16: IDENTIFY and SUB now return success responses (they previously only responded to errors). The official Go and Python libraries are forwards/backwards compatible with this change however 3rd party client libraries may not be.

    โฌ†๏ธ Upgrading from 0.2.15: in #132 deprecations in SUB were removed as well as support for the old, ๐Ÿ“‡ line oriented, nsqd metadata file format. For these reasons you should upgrade to 0.2.16 first.

    ๐Ÿ†• New Features / Enhancements:

    • #119 - add TOUCH command to nsqd
    • #142 - add --broadcast-address flag to nsqd/nsqadmin (thanks @dustismo)
    • #135 - atomic MPUB
    • #133 - improved protocol fatal error handling and responses; IDENTIFY/SUB success responses
    • #118 - switch nsqadmin actions to POST and require confirmation
    • #117/#147 - nsqadmin action POST notifications
    • #122 - configurable msg size limits
    • #132 - deprecate identify in SUB and old nsqd metadata file format

    ๐Ÿ› Bug Fixes:

    • #144 - empty channel should clear inflight/deferred messages
    • #140 - fix MPUB protocol documentation
    • #139 - fix nsqadmin handling of legacy statsd prefixes for graphs
    • #138/#145 - fix nsqadmin action redirect handling
    • #134 - nsqd to nsqlookupd registration fixes
    • #129 - nsq_to_file gzip file versioning
    • #106 - nsqlookupd topic producer tombstones
    • #100 - sane handling of diskqueue read errors
    • #123/#125 - fix notify related exit deadlock