Upgrading from 0.3.7: Binaries contain no backwards incompatible changes.
This release fixes a critical regression in
0.3.7 that could result in message loss when attempting to cleanly shutdown
nsqd by sending it a
SIGTERM. The expected behavior was for it to flush messages in internal buffers to disk before exiting. See #757 and #759 for more details.
nsqd: remove channel
- #751 - strip debug info from binaries (thanks @ploxiln)
nsqd: reduce garbage when reading from diskqueue (thanks @dieterbe)
nsqd: properly handle
#738 - updates for latest
nsqd: diskqueue sync count on both read/write
ratecolumn work without
#726 - add
.exeextension to Windows binaries (thanks @ploxiln)
nsqadmin: fix connected duration >
Upgrading from 0.3.6: Binaries contain no backwards incompatible changes.
This release has been built with Go 1.6.
Highlights include the various work done to reduce
nsqd lock contention, significantly improving the impact of high load on the
/stats endpoint, addressing issues with timeouts and failures in
nsqadmin (#700, #701, #703, #709).
nsqd will now
flock its data directory on linux, preventing two
nsqd from running simultaneously pointed at the same path (#583).
On the bugfix side, the most noteworthy change is that
nsqd will now correctly reset health state on a successful backend write (#671).
nsqd: reduce lock contention (thanks @zachbadgett @absolute8511)
nsqlookupd: support running as a windows service (thanks @judwhite)
nsqd: support enabling/disabling block profile via HTTP (thanks @absolute8511)
nsqadmin: add flags for formatting statsd keys (thanks @kesutton)
nsqd: optimize GUID generation (thanks @ploxiln)
Upgrading from 0.3.5: Binaries contain no backwards incompatible changes.
We closed a few longstanding issues related to
nsqadmin, namely (#323, et al.) converting it to an API and single-page app (so that it is much easier to develop), displaying fine-grained errors (#421, #657), and enabling support for
--tls-required configurations (#396).
nsqd, we added support for deferred publishing aka
DPUB (#293), which allows a producer to specify a duration of time to delay initial delivery of the message. We also addressed performance issues relating to large numbers of topics/channels (#577) by removing some per-channel goroutines in favor of a centralized, periodic, garbage collection approach.
In order to provide more flexibility when deploying NSQ in dynamically orchestrated topologies,
nsqd now supports the ability to configure
nsqlookupd peers at runtime via HTTP (#601), eliminating the need to restart the daemon.
As part of the large
nsqadmin refactoring, we took the opportunity to cleanup the internals for all of the daemon's HTTP code paths (#601, #610, #612, #641) as well as improving the test suite so that it doesn't leave around temporary files (#553).
- #593 - add code of conduct
nsqadmin: convert to API / single-page app
nsqadmin: expand notification context
nsqd: add deferred pub (
nsqd: drop per-channel queue workers in favor of centralized queue GC
nsqlookupd: improve registration DB performance (thanks @xiaost)
nsqd: HTTP endpoints to dynamically configure
nsqd: support for filtering
/statsto topic/channel (thanks @chrusty)
- #601/#610/#612/#641 - improved HTTP internal routing / log HTTP requests
nsqd: clarify help text for
#640 - switch
nsqadmin: display upstream/partial errors
nsqd: support for
- #558 - don't overwrite docker root FS
nsqd: ignore benign EOF errors
nsqd: GUID error handling / catch errors if GUID goes backwards (thanks @mpe)
nsqd: fix valid range for
nsqd: fix benchmarks (thanks @Dieterbe)
- #553 - cleanup test dirs
nsqd: enforce diskqueue min/max message size (thanks @twmb)
Upgrading from 0.3.4: Binaries contain no backwards incompatible changes.
This is another quick bug fix release to address the broken
nsqadmin binary in the
v0.3.4 distribution (see #578).
See the release notes for v0.3.3 for more info.
WARNING: please upgrade to
v0.3.5 to address the broken
Upgrading from 0.3.3: Binaries contain no backwards incompatible changes.
This is a quick bug fix release to fix the outdated
go-nsq dependency in
v0.3.3 for the bundled utilities (see 6e8504e).
WARNING: please upgrade to
v0.3.5 to address the outdated
go-nsq dependency for the
bundled utilities and the broken
Upgrading from 0.3.2: Binaries contain no backwards incompatible changes.
This release is primarily a bug fix release after cleaning up and reorganizing the codebase.
nsqadmin is now importable, which paves the way for completing #323. The bundled utilities received a few feature additions and bug fixes (mostly from bug fixes on the
nsqadmin: re-org into importable package
epsilon-greedymode (thanks @twmb)
nsq_to_http: accept any
200response as success (thanks @mikedewar)
nsq_to_http: read entire request body (thanks @imgix)
#552/#554/#555/#556/#561 - code cleanup and
/internalpackage re-org (thanks @cespare)
nsqd: don't persist metadata upon startup (thanks @xiaost)
nsqd: do not print
EOFerror when client closes cleanly (thanks @twmb)
- #545 - enable shell expansion in official Docker image (thanks @paddyforan)
NOTE: the bundled utilities are built against
v1.0.4 and include all of those features/fixes.
Upgrading from 0.3.1: Binaries contain no backwards incompatible changes however as of this release we've updated our official Docker images.
We now provide a single Docker image
nsqio/nsq that includes all of the NSQ binaries. We did this for several reasons, primarily because the tagged versions in the previous incarnation were broken (and did not actually pin to a version!). The new image is an order of magnitude smaller, weighing in around 70mb.
In addition, the impetus for this quick release is to address a slew of reconnect related bug fixes in the utility apps (
nsq_to_file, etc.), for details see the
v1.0.3 release notes.
Upgrading from 0.3.0: No backwards incompatible changes.
This release contains minor bug fixes and feature additions.
There are a number of functionality improvements to the
nsq_to_file helper applications (and general support for
#ephemeral topics, broken in
Additionally, the TLS options continue to improve with support for setting
--tls-min-version and a work-around for a bug relating to
TLS_FALLBACK_SCSV (to be fixed in Go 1.5).
#527 - nsq_stat: deprecate
--status-everyin favor of
#524 - nsq_stat: add
--countoption (thanks @nordicdyno)
#518 - nsqd: set defaults for
--tls-min-versionand set TLS max version to 1.2
#475/#513/#518 - nsqd:
--tls-requiredcan be disabled for HTTP / add
#496 - nsq_to_file: add
<PID>to filename and rotation by size/interval (thanks @xiaost)
- #507 - nsq_stat: add rates (thanks @xiaost)
#505 - nsqd: speed up failure path of
Upgrading from 0.2.31: No backwards incompatible changes.
This release includes a slew of bug fixes and few key feature additions.
The biggest functional change is that
nsqd no longer decrements its
RDY count for clients. This means that client libraries no longer have to periodically re-send
RDY. For some context,
nsqd already provided back-pressure due to the fact that a client must respond to messages before receiving new ones. The decremented
RDY count only made the implementation of the server and client more complex without additional benefit. Now the
RDY command can be treated as an "on/off" switch. For details see #404 and the associated changes in nsqio/go-nsq#83 and nsqio/pynsq#98.
The second biggest change (and oft-requested feature!) is
#ephemeral topics. Their behavior mirrors that of channels. This feature is incredibly useful for situations where you're using topics to "route" messages to consumers (like RPC) or when a backlog of messages is undesirable.
There are now scripts in the
bench directory that automate the process of running a distributed benchmark. This is a work-in-progress, but it already provides a closer-to-production setup and therefore more accurate results. There's much work to do here!
A whole bunch of bugs were fixed - notably all were 3rd-party contributions! Thanks!
#404/#459 - don't decr
#472 - improve
#488 - ability to filter topics by regex in
- #438 - distributed pub-sub benchmark scripts
#448 - better
IOLooplogging (thanks @rexposadas)
- #458 - switch to gpm for builds
#493 - ensure all
Notify()goroutines have exited prior to shutdown (thanks @allgeek)
#492 - ensure
diskqueuesyncs at end of benchmarks (thanks @Dieterbe)
#490 - de-flake
- #486 - require ports to be specified for daemons (thanks @jnewmano)
#482 - better bash in
#480 - fix panic when
nsqadminchecks stats for missing topic (thanks @jnewmano)
- #469 - fix panic when misbehaving client sends corrupt command (thanks @prio)
#461 - fix panic when
nsqddecodes corrupt message data (thanks @twmb)
#454/#455 - fix 32-bit atomic ops in
#451 - fix
go getcompatibility (thanks @adams-sarah)
Upgrading from 0.2.30: No backwards incompatible changes.
This release includes a few key changes. First, we improved feedback and back-pressure when
nsqd writes to disk. Previously this was asynchronous and would result in clients not knowing that their
PUB had failed. Interestingly, this refactoring improved performance of
PUB by 41%, by removing the topic's goroutine responsible for message routing in favor of
N:N Go channel communication. For details see #437.
@paddyforan contributed official Dockerfiles that are now built automatically via Docker Hub. Please begin to use (and improve these) as the various older images we had been maintaining will be deprecated. See the updated docs.
The utility apps deprecated the
--reader-opt flag in favor of
to_nsq received a
--producer-opt flag, for configuring details of the connection publishing to
nsqd. Additionally, it is now possible to configure client side TLS certificates via
As usual, we fixed a few minor bugs, see below for details.
New Features / Enhancements:
nsqd: diskqueue error feedback/backpressure (thanks @boyand)
#412 - official Dockerfiles for
#442 - utilities: add
nsq_to_nsq(also support configuration of
nsqd: improve IOLoop error messages (thanks @rexposadas)