Skip to content

Releases: nats-io/nats-streaming-server

Release v0.20.0

09 Jan 03:06
814b51a
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.15.6: Both release executables and Docker images are built with this Go release.

Added

  • replace_durable configuration option. When this boolean is enabled, if a connection sends a subscription request for a durable subscription that is detected as a duplicate, the server will replace the old one with the new one. Thanks to @etrochim, @adklager and @yadvlz for the feedback (#1136)

Changed

  • The cluster ID is now always used in the subject of the internal subscriptions. It was already the case in clustering mode, channel partitioning, but otherwise it was a generated NUID. For consistency and helps for users wanting to set NATS permissions, the cluster ID will now be used in all modes. However, existing deployment with persistent storage will maintain their existing subjects (#1128)

Improved

  • SQLStore: if the configuration option bulk_insert_limit under the sql{} block, is set to anything positive, the server will do bulk message inserts (if caching is enabled) instead of individual prepared statements under a transaction. Thanks to @carr123 for the recommendation (#1140, #1142)

Fixed

  • Possible race causing acknowledged messages to be redelivered (#1138)
  • Do not panic on protobuf's Unmarshal errors (#1141)

Complete Changes

v0.19.0...v0.20.0

Release v0.19.0

02 Nov 20:14
c658000
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.14.10: Both release executables and Docker images are built with this Go release.

Added

  • ClientURL() API and expose OS-assigned server port via the NATS Server Options. Thanks to @adrian-thurston for the contribution (#1075)
  • Clustering: Ability to add/remove nodes at runtime. Thanks to @rwenz3l for the suggestion (#1090)
  • Authentication fields in streaming configuration block (#1100)
  • NKey authentication support. Thanks to @SimonVHB for the suggestion (#1101)

Updated

  • Dependencies (RAFT, Postgres driver, NATS Server, etc..) (#1098, #1099)

Improved

  • Clustering: Report list of known peers on startup and possible misconfiguration of the peer list. Thanks to @tharrold for the suggestion (#1091)

Fixed

  • Absolute URL in streaming monitoring menu. Thanks to @bfoxstudio for the contribution (#1079)
  • FileStore: index file may be recreated with wrong offsets. Thanks to @johnsusi for the report (#1087)
  • FileStore: possible panic when unable to open an index file. Thanks to @Ryner51 for the report (#1096)
  • Clustering: possible panic on restart with "log not found" error (#1088)
  • Display all configured channels (in channel partition mode) (#1107)
  • Command line -file_slice_max_bytes 0 was not working (#1116)
  • Fatal error on startup was not logged to log file. Thanks to @Jess3Jane for the report (#1119)

Complete Changes

v0.18.0...v0.19.0

Release v0.18.0

24 Jun 19:47
026e3a6
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.14.4: Both release executables and Docker images are built with this Go release.

Added

  • Monitoring route "/streaming/isFTActive" to evaluate if a server is running as the FT active server or not. Thanks to @mharr22 for the contribution (#1024)
  • Reload signal now accepted for embedded NATS Server. Thanks to @costa for the suggestion (#1031)

Updated

  • etcd/bbolt version dependency to fix unsafe pointer conversion found by Go 1.14 (#1052)
  • Raft library updated to v1.1.2. Thanks to @pengux for the contribution (#1056)
  • Other dependencies (#1066)

Fixed

  • Windows Service: create the syslog only if explicitly set or if no log file has been specified (#1025)
  • Add filename to "unable to verify file version" error message on server startup. Thanks to @encee for the report (#1035)
  • Re-open file log signal suppresses NATS debug/trace in some cases. Thanks to @yadvlz for the report (#1053)
  • Messages could be sent to a subscription that has just been closed (#1059)
  • Message redelivery was stopped in case of an error during a store lookup. Thanks to @wisni for the contribution/report (#1061)

Complete Changes

v0.17.0...v0.18.0

Release v0.17.0

11 Feb 19:36
f4b7190
Compare
Choose a tag to compare

Changelog

Backward compatibility note

See backward compatibility note if moving from v0.14.3 to this release here

Go Version

  • 1.13.7: Both release executables and Docker images are built with this Go release.

Added

  • In/Out Msgs/Bytes in /serverz monitoring endpoint. Thanks to @renanberto for the report (#976)
  • server_name and skip_veriy configuration parameters (TLSServerName and TLSSkipVerify options) (#981)
  • Support for Redelivery Count. Thanks to @robertmircea, @bmcstdio, @sujeshthekkepatt, @kell18, @vtolstov and many others for their feedback (#997)
  • Ability to set log file size limit (#1018)

Updated

  • Some code cleanup. Thanks to @tegk for the contribution (#973)
  • RAFT transport timeouts, which may help reduce occurrences of error Failed to flush response: write to closed conn (#988)
  • Some dependencies, including NATS Server v2.1.4 (#1017)

Improved

  • Use NoFreelistSync for RAFT bbolt store. This was removed since v0.12.2 due to a defect in the underlying bbolt library (#989)

Fixed

  • Duplicate shadow durable queue subscription due to race. Thanks to @will-yip for the report (#951)
  • On catching SIGTERM signal, the server will now exit with error 143, which will allow kubernetes to restart the pod instead of considering it "complete". Thanks to @wanjunlei for the report and contribution (#957)
  • Typo in usage for --encryption_key. Thanks to @derekbekoe for the contribution (#978)
  • Stop subscription redelivery timer and signal handler on shutdown (#1004)
  • FileStore: Empty() should remove all message files (dat/idx) (#1011)
  • Clustering: Incorrect RAFT logging (#987)
  • Clustering: Issue with subscription "is_stalled" state on leader election that would prevent delivery of new messages. Thanks to @bfoxstudio for the report (#994)
  • Clustering: Add flag to allow node to proceed on restore failure. Thanks to @emalovan for the report (#1012)
  • Clustering: Handling of deleted channels (#1013)

Complete Changes

v0.16.2...v0.17.0

Release v0.16.2

12 Sep 19:30
910d6e1
Compare
Choose a tag to compare

Changelog

Backward compatibility note

See backward compatibility note if moving from v0.14.3 (or lower) to this release here

Go Version

  • 1.11.13: Both release executables and Docker images are built with this Go release.

Added

  • Logging when server is ready. Thanks to @CarloWakefield for the report (#918)
  • Credentials option to connect to external NATS Server 2.0. Thanks to @david-gurley for the contribution (#941)

Updated

Fixed

  • Expire messages based on their timestamp. Thanks to @bfoxstudio for the report (#916)
  • Clustering: snapshot skip sequence on error. Thanks to @bfoxstudio for the report (#923)
  • Server possibly skipping sequence when sending to subscription when processing message acknowledgment (#929)
  • Ensure subscription response is sent prior to messages. This is for resumed durable subscriptions (#930)
  • Clustering: possible wrong pending_count on followers node. Thanks to @bfoxstudio for the report (#936)
  • FileStore: handle possible gaps in message sequence. Thanks to @PBug90 for the report (#940)

Complete Changes

v0.16.0...v0.16.2

Release v0.16.0

15 Aug 21:18
27593aa
Compare
Choose a tag to compare

Changelog

Backward compatibility note

See backward compatibility note if moving from v0.14.3 to this release here

Go Version

  • 1.11.13: Both release executables and Docker images are built with this Go release.

Added

  • Use of GoReleaser. Thanks to @caarlos0 for this tool! (#913)
  • Deb and RPM packages (#913)
  • Example in readme of usage of SQL Postgres. Thanks to @Olshansk for the contribution (#857)
  • FileStore: read-ahead capabilities improving delivery to subscriptions (#875)
  • FileStore: auto-sync interval allowing to disable file sync on every flush, but sync at regular interval (#882, #886, #909)
  • SQLStore: ability to set read/write timeouts for Postgres driver. Thanks to @kartikpasupathy for the report (#908)
  • Support for Risc-V platform by updating some of the dependencies. Thanks to @carlosedp for the contribution (#891)

Updated:

  • NATS Server and other dependencies (#867, #880, #913)
  • Moved sql scripts to scripts/ directory (#870)

Fixed

  • Possible stall of queue member (#863)
  • Redelivery of unacknowledged messages of a leaving queue member (#871)
  • Panic when running 32-bit release (caused by the RAFT library). Thanks to @tharrold for the report (#888)
  • Logging of RAFT events (#889)
  • SQLStore: tick column of StoreLock table not updated if active server was shutdown (#902)

Complete Changes

v0.15.1...v0.16.0

Release v0.15.1

05 Jun 19:44
8e6aa7c
Compare
Choose a tag to compare

Changelog

Backward compatibility note

Note that the Streaming server itself is backward compatible with previous releases, however, v0.15.0 now embeds a NATS Server 2.0, which means that if you run with the embedded NATS server and want to route it to your existing v0.14.3- servers, it will fail due to NATS Server routing protocol change. You can however use v0.15.0 and connect it to existing NATS cluster and therefore have a mix of v0.15.0 and v0.14.3- streaming servers.

Go Version

  • 1.11.10: Both release executables and Docker images are built with this Go release.

Updated

  • All dependencies and added go.mod file. Still use /vendor though (#852, #854)

Complete Changes

v0.14.3...v0.15.1

Release v0.15.0

04 Jun 21:09
Compare
Choose a tag to compare

Changelog

This version was vendoring NATS Server v2.0.0-RC19. The version v0.15.1 should be used instead since it vendors the official v2.0.0 NATS Server release.

Backward compatibility note

Note that the Streaming server itself is backward compatible with previous releases, however, v0.15.0 now embeds a NATS Server 2.0, which means that if you run with the embedded NATS server and want to route it to your existing v0.14.3- servers, it will fail due to NATS Server routing protocol change. You can however use v0.15.0 and connect it to existing NATS cluster and therefore have a mix of v0.15.0 and v0.14.3- streaming servers.

Go Version

  • 1.11.10: Both release executables and Docker images are built with this Go release.

Updated

  • All dependencies and added go.mod file. Still use /vendor though (#852)

Complete Changes

v0.14.3...v0.15.0

Release v0.14.3

31 May 19:05
1ce7677
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.11.10: Both release executables and Docker images are built with this Go release.

Fixed

  • Clustering: SQLStore memory growth on follower nodes. Thanks to @ferdianr for the report (#849)
  • Ability to run all tests without sql (-sql=false) was broken in 312742a. Thanks to @nathanejohnson for the report (#849)

Complete Changes

v0.14.2...v0.14.3

Release v0.14.2

21 May 20:09
0844ce1
Compare
Choose a tag to compare

Changelog

Go Version

  • 1.11.10: Both release executables and Docker images are built with this Go release.

Fixed

  • Clustering: possibly getting empty messages (#815, #840)
  • Clustering: possible issue when subscription and/or connection is closed while messages are published (#825)
  • Clustering: improper restore of messages from snapshot when some messages are no longer available (expired or removed due to limits) (#835, #841)
  • Clustering: channel first/last sequence may fall to zero. Thanks to @Will2817 for the report (#840)
  • Incorrect number of subscriptions in /streaming/serverz monitoring endpoint. Thanks to @selstam for the report (#827)
  • Channel may not be deleted when it should (#824)
  • SQLStore: possible panic when updating subscriptions pending state. Thanks to @LafonteFull and @TipDev for the report (#828)

Complete Changes

v0.14.1...v0.14.2