Skip to content

Release v2.6.0

Choose a tag to compare
@NATS-CI NATS-CI released this 21 Sep 23:33
· 3279 commits to main since this release


Notice for JetStream Users

See important note if upgrading from a version prior to v2.4.0.

Notice for MQTT Users

See important note if upgrading from a version prior to v2.5.0.

Go Version

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


  • Monitoring:
    • JetStream's reserved memory and memory used from accounts with reservations in /jsz and /varz endpoints (#2539, #2555)
  • Hardened systemd service. Thanks to @c0deaddict for the contribution (#2318)


  • JetStream:
    • The server store message headers with a uint 16, which limits to 64KB, however, it was not rejecting incoming messages with headers bigger than that but then was failing its recovery (#2526)
    • The server was accepting consumer creation requests with flow control enabled but without heartbeats, which could lead to the consumer stalling if the library missed the flow control message. The server will now reject such consumer creation request (#2533)
    • Trying to add a stream with a configuration that matched exactly the one of an existing stream would report an error in cluster mode, not in standalone mode. The cluster mode will now behave as standalone mode and treat the stream creation as idempotent (#2535)
    • The server will now reject negative duplicate window values (#2546)
  • The server will now fail to start if a token is specified in cluster{authorization{}} or gateway{authorization{}}. Routes and Gateways have never supported token authentication, however, it was silently ignored. Thanks to @antong for the report (#2518)


  • JetStream:
    • Filestore compaction issue that could to message lookup to fail, possibly stalling consumers (#2522)
    • Reject messages with headers greater than 64KB (#2526)
    • Condition where assets could be created in multiple leafnode domains (#2529)
    • Reject consumer creation requests with a flow control but no heartbeat (#2533)
    • Stream creation request was idempotent in standalone mode, but not in clustered mode (#2535)
    • In clustered mode, getting consumer information or a just created consumer could sometimes return a "consumer not found" error (#2537)
    • Make large pull subscribe batch requests expire more efficiently (#2538)
    • Stabilize filestore implementation. Thanks to @izarraga for the report (#2545)
    • Reject duplicate window with negative value (#2546)
    • Memory store memory leak when running in cluster mode. Thanks to @anjmao for the report (#2550)
    • Some issues with RAFT WAL repair (#2549)
    • A consumer on mirror stream would fail to be recovered if its stream was recovered before the mirrored stream. Thanks to @tbeets for the report (#2554)
  • Websocket:
    • Possible panic when decoding CLOSE frames. Thanks to @byazrail for the report (#2519)
  • Memory leak when using Queue Subscriptions. Thanks to @andrey-shalamov for the report and fix! (#2517)
  • Fail configuration that would have token specified in cluster{} or gateway{}'s authorization{} blocks. Authentication token were never supported there but the misconfiguration was silently ignored. Thanks to @antong for the report (#2518)

Complete Changes