## go-nsq Change Log ### 1.0.7 - 2017-08-04 **Upgrading from 1.0.6**: There are no backward incompatible changes. * #97/#209 - consumer: retry nsqlookupd queries * #179/#208 - consumer: redistribute RDY when connections are active * #184/#201 - producer: fix misleading Stop() EOF (thanks @mengskysama) * #203 - switch to golang/snappy (addressing potential snappy related deadlocks) * #202 - consumer: fix backoff logging ### 1.0.6 - 2016-06-04 **Upgrading from 1.0.5**: There are no backward incompatible changes. * #175 - consumer: reduce garbage generation in DecodeMessage (thanks @Dieterbe) * #162 - producer: support `DeferredPublish` (thanks @DanielHeckrath) ### 1.0.5 - 2015-09-19 **Upgrading from 1.0.4**: There are no backward incompatible changes. * #156 - consumer: prevent data race on RNG * #155 - config: support `flag.Value` interface * #147/#150 - consumer: fix application of `max_backoff_duration` (thanks @judwhite) * #138 - fix lint, vet, fmt issues * #137 - remove `go-simplejson` dependency ### 1.0.4 - 2015-04-07 **Upgrading from 1.0.3**: There are no backward incompatible changes. * #133 - fix `ErrNotConnected` race during `Producer` connection (thanks @jeddenlea) * #132 - fix `RDY` redistribution after backoff with no connections * #128 - fix backoff stall when using `RequeueWithoutBackoff` * #127 - fix handling of connection closing when resuming after backoff (thanks @jnewmano) * #126 - allow `BackoffStrategy` to be set via flag (thanks @twmb) * #125 - add pluggable consumer `BackoffStrategy`; add full-jitter strategy (thanks @hden) * #124 - add `DialTimeout` and `LocalAddr` config (thanks @yashkin) * #119 - add `Producer.Ping()` method (thanks @zulily) * #122 - refactor log level string handling * #120 - fix `Message` data races on `responded` * #114 - fix lookupd jitter having no effect (thanks @judwhite) ### 1.0.3 - 2015-02-07 **Upgrading from 1.0.2**: There are no backward incompatible changes. * #104 - fix reconnect address bug (thanks @ryanslade) * #106 - fix backoff reconnect deadlock (thanks @ryanslade) * #107 - fix out-of-bounds error when removing nsqlookupd addresses (thanks @andreas) * #108 - fix potential logger race conditions (thanks @judwhite) * #111 - fix resolved address error in reconnect loop (thanks @twmb) ### 1.0.2 - 2015-01-21 **Upgrading from 1.0.1**: There are no backward incompatible changes. * #102 - TLS min/max config defaults (thanks @twmb) * #99 - fix `Consumer.Stop()` race and `Producer.Stop()` deadlock (thanks @tylertreat) * #92 - expose `Message.NSQDAddress` * #95 - cleanup panic during `Consumer.Stop()` if handlers are deadlocked * #98 - add `tls-min-version` option (thanks @twmb) * #93 - expose a way to get `Consumer` runtime stats (thanks @dcarney) * #94 - allow `#ephemeral` topic names (thanks @jamesgroat) ### 1.0.1 - 2014-11-09 **Upgrading from 1.0.0**: There are no backward incompatible changes functionally, however this release no longer compiles with Go `1.0.x`. * #89 - don't spam connection teardown cleanup messages * #91 - add consumer `DisconnectFrom*` * #87 - allow `heartbeat_interval` and `output_buffer_timeout` to be disabled * #86 - pluggable `nsqlookupd` behaviors * #83 - send `RDY` before `FIN`/`REQ` (forwards compatibility with nsqio/nsq#404) * #82 - fix panic when conn isn't assigned * #75/#76 - minor config related bug fixes * #75/#77/#78 - add `tls-cert` and `tls-key` config options ### 1.0.0 - 2014-08-11 **Upgrading from 0.3.7**: The public API was significantly refactored and is not backwards compatible, please read [UPGRADING](UPGRADING.md). * #58 - support `IDENTIFY` `msg_timeout` * #54 - per-connection TLS config and set `ServerName` * #49 - add common connect helpers * #43/#63 - more flexible `nsqlookupd` URL specification * #35 - `AUTH` support * #41/#62 - use package private RNG * #36 - support 64 character topic/channel names * #30/#38/#39/#42/#45/#46/#48/#51/#52/#65/#70 - refactor public API (see [UPGRADING](UPGRADING.md)) ### 0.3.7 - 2014-05-25 **Upgrading from 0.3.6**: There are no backward incompatible changes. **THIS IS THE LAST STABLE RELEASE PROVIDING THIS API**. Future releases will be based on the api in #30 and **will not be backwards compatible!** This is a bug fix release relating to the refactoring done in `0.3.6`. * #32 - fix potential panic for race condition when # conns == 0 * #33/#34 - more granular connection locking ### 0.3.6 - 2014-04-29 **Upgrading from 0.3.5**: There are no backward incompatible changes. This release includes a significant internal refactoring, designed to better encapsulate responsibility, see #19. Specifically: * make `Conn` public * move transport responsibilities into `Conn` from `Reader`/`Writer` * supply callbacks for hooking into `Conn` events As part of the refactoring, a few additional clean exit related issues were resolved: * wait group now includes all exit related goroutines * ensure that readLoop exits before exiting cleanup * always check messagesInFlight at readLoop exit * close underlying connection last ### 0.3.5 - 2014-04-05 **Upgrading from 0.3.4**: There are no backward incompatible changes. This release includes a few new features such as support for channel sampling and sending along a user agent string (which is now displayed in `nsqadmin`). Also, a critical bug fix for potential deadlocks (thanks @kjk for reporting and help testing). New Features/Improvements: * #27 - reader logs disambiguate topic/channel * #22 - channel sampling * #23 - user agent Bug Fixes: * #24 - fix racey reader IDENTIFY buffering * #29 - fix recursive RLock deadlocks ### 0.3.4 - 2013-11-19 **Upgrading from 0.3.3**: There are no backward incompatible changes. This is a bug fix release, notably potential deadlocks in `Message.Requeue()` and `Message.Touch()` as well as a potential busy loop cleaning up closed connections with in-flight messages. New Features/Improvements: * #14 - add `Reader.Configure()` * #18 - return an exported error when an `nsqlookupd` address is already configured Bug Fixes: * #15 - dont let `handleError()` loop if already connected * #17 - resolve potential deadlocks on `Message` responders * #16 - eliminate busy loop when draining `finishedMessages` ### 0.3.3 - 2013-10-21 **Upgrading from 0.3.2**: This release requires NSQ binary version `0.2.23+` for compression support. This release contains significant `Reader` refactoring of the RDY handling code paths. The motivation is documented in #1 however the commits in #8 identify individual changes. Additionally, we eliminated deadlocks during connection cleanup in `Writer`. As a result, both user-facing APIs should now be considerably more robust and stable. Additionally, `Reader` should behave better when backing off. New Features/Improvements: * #9 - ability to ignore publish responses in `Writer` * #12 - `Requeue()` method on `Message` * #6 - `Touch()` method on `Message` * #4 - snappy/deflate feature negotiation Bug Fixes: * #8 - `Reader` RDY handling refactoring (race conditions, deadlocks, consolidation) * #13 - fix `Writer` deadlocks * #10 - stop accessing simplejson internals * #5 - fix `max-in-flight` race condition ### 0.3.2 - 2013-08-26 **Upgrading from 0.3.1**: This release requires NSQ binary version `0.2.22+` for TLS support. New Features/Improvements: * #227 - TLS feature negotiation * #164/#202/#255 - add `Writer` * #186 - `MaxBackoffDuration` of `0` disables backoff * #175 - support for `nsqd` config option `--max-rdy-count` * #169 - auto-reconnect to hard-coded `nsqd` Bug Fixes: * #254/#256/#257 - new connection RDY starvation * #250 - `nsqlookupd` polling improvements * #243 - limit `IsStarved()` to connections w/ in-flight messages * #169 - use last RDY count for `IsStarved()`; redistribute RDY state * #204 - fix early termination blocking * #177 - support `broadcast_address` * #161 - connection pool goroutine safety ### 0.3.1 - 2013-02-07 **Upgrading from 0.3.0**: This release requires NSQ binary version `0.2.17+` for `TOUCH` support. * #119 - add TOUCH command * #133 - improved handling of errors/magic * #127 - send IDENTIFY (missed in #90) * #16 - add backoff to Reader ### 0.3.0 - 2013-01-07 **Upgrading from 0.2.4**: There are no backward incompatible changes to applications written against the public `nsq.Reader` API. However, there *are* a few backward incompatible changes to the API for applications that directly use other public methods, or properties of a few NSQ data types: `nsq.Message` IDs are now a type `nsq.MessageID` (a `[16]byte` array). The signatures of `nsq.Finish()` and `nsq.Requeue()` reflect this change. `nsq.SendCommand()` and `nsq.Frame()` were removed in favor of `nsq.SendFramedResponse()`. `nsq.Subscribe()` no longer accepts `shortId` and `longId`. If upgrading your consumers before upgrading your `nsqd` binaries to `0.2.16-rc.1` they will not be able to send the optional custom identifiers. * #90 performance optimizations * #81 reader performance improvements / MPUB support ### 0.2.4 - 2012-10-15 * #69 added IsStarved() to reader API ### 0.2.3 - 2012-10-11 * #64 timeouts on reader queries to lookupd * #54 fix crash issue with reader cleaning up from unexpectedly closed nsqd connections ### 0.2.2 - 2012-10-09 * Initial public release