Skip to content

Latest commit

 

History

History
380 lines (269 loc) · 18.5 KB

CHANGELOG.md

File metadata and controls

380 lines (269 loc) · 18.5 KB

Change Log

Version 2.11.5

Pull Requests

[ENHANCEMENT] PR #506 handle unsigned long values in JetStream api data.

Version 2.11.4

Revert performance fix due to high cpu during idle.

Version 2.11.3

Pull Requests

  • [ENHANCEMENT] PR #472 / #477 benchmark improvements (@scottf)
  • [ENHANCEMENT] PR #473 performance improvements(@scottf)
  • [FIXED] PR #475 fixed filter subject (@scottf)
  • [EXAMPLES] PR #478 Clarify examples with deliver subjects (@scottf)

Version 2.11.2

Pull Requests

  • [ENHANCEMENT] PR #470 JsMultiTool and AutoBench Reporting Enhancements (@scottf)
  • [ENHANCEMENT] PR #468 duplicates and orphans (@scottf)
  • [FEATURE] PR #467 / #471 Heartbeat and Flow Control (@scottf)
  • [FIXED] PR #466 JsMultiTool Queue Fix (@scottf)

Version 2.11.1

JetStream Multi Tool enhancements and documentation

Version 2.11.0

Issue Bug Fixes

  • [FIXED] Issue #340 No connection possible when using multiple servers PR #455 (@scottf)

Pull Requests

  • [FIXED] PR #451 Header status improvements (@scottf)
  • [ENHANCEMENT] PR #452 handle no ack publishing (@scottf)
  • [ENHANCEMENT] PR #456 switched to jnats-server-runner library (@scottf)
  • [ENHANCEMENT] PR #446 improve cleanup of async responses (@scottf)

Issues General Closed

  • [NON ISSUE] Issue #298 NatsConnection does not report SSL error (@scottf)
  • [WILL NOT IMPLEMENT] Issue #272 Add ability to publish byte arrays with specified offset and length (@scottf)
  • [DOCUMENTED] Issue #316 Failure creating a subscription on a (fairly) new connection (@scottf)
  • [NON ISSUE] Issue #344 Performance issue when publishing to certain topics (@scottf)
  • [WILL NOT IMPLEMENT] Issue #373 Why not netty for networking? (@sasbury)
  • [PRE-RELEASE FEATURE REMOVED] Issue #388 In the jetstream subscriber examples... (@scottf)
  • [DOCUMENTED] Issue #402 Unable to connect to NATS server via Android Studio
  • [DOCUMENTED] Issue #445 NatsConnection.request(Message) does not use Message.replyTo (@scottf)
  • [DOCUMENTED] Issue #423 createContext() not documented (@scottf)

Version 2.10.0

  1. JetStream (message and management) support added.
  2. Miscellaneous bug fixes.
  3. Examples and benchmarks updated
  4. Improved unit tests with reusable scaffolding
  5. General Improvements

Non JetStream Pull Requests

  • [GENERAL] PR #358 Use OS Default SecureRandom (@scottf)
  • [BUILD] Issue #360 Automatic-Module-Name clause added to jar manifest. (@bjorndarri)
  • [BUILD] PR #365 gradle minor improvements, support windows (@scottf)
  • [TEST] PR #375 fix test failing because of timeout that aren't testing timing (@scottf)
  • [GENERAL] PR #380 Add a flushBuffer API (@ColinSullivan1)
  • [GENERAL] PR #383 nuid speed improvements (@scottf)
  • [GENERAL] PR #391 reconnect-jitter-handler-serverinfo-tests (@scottf)

Issue Features

  • [JETSTREAM] Issue #335 Add Message Headers (@scottf)
  • [GENERAL] Issue #336 Support no-responders (@scottf)
  • [JETSTREAM] Issue #353 Jetstream APIS (@ColinSullivan1) (@scottf)
  • [BUILD] Issue #355 Automatic module name (@bjorndarri)
  • [GENERAL] Issue #377 Add a flushBuffer Connection API (@ColinSullivan1) Added in PR #380
  • [JETSTREAM] Issue #393 Create Asynchronous Jetstream.Publish API (@scottf) Added in PR #398
  • [JETSTREAM] Issue #396 Jetstream Consumer Delete API (@scottf) Added in PR #408
  • [JETSTREAM] Issue #412 Add a JS management API to get consumer info (@scottf) Added in PR #413

Issue Bug Fixes

  • [FIXED] Issue #424 ERROR: Subject remapping requires Options.oldRequestStyle()... (@scottf)
  • [FIXED] Issue #345 "unable to stop reader thread" log message (@ColinSullivan1) Fixed in PR #427
  • [FIXED] Issue #310 NatsConnection.close unnecessarily sleeps for one second (@scottf)

Issues General

  • [COMMENTED] Issue #341 Why is a char[] more secure then a String for connection auth details? (@scottf)
  • [OTHER] Issue #384 Validations on expectedLastSeqence, expectedStream and expectedLastMsgId are not working for jetstream producer (fixed by nats-server PR #1787)

Version 2.8.0

  • [ADDED] #323 Nats.connect v2 credentials (@olicuzo)
  • [CHANGED] #320 Update MAINTAINERS.md (@gcolliso)
  • [FIXED] #318 Printing trace when NUID initialization takes long (@matthiashanel)
  • [FIXED] #327 Subject Remapping Fix (@brimworks)
  • [FIXED] #331 Close connection when flush fails during drain (@matthiashanel)
  • [FIXED] #330 Reconnect wait was not being honored (@ColinSullivan1)

Version 2.6.8

  • [FIXED] - #309 - Removed some debug printf statements
  • [CHANGED] - Allow disable reconnect buffer by using size of zero
  • [CHANGED] - Added option to set the max unsent size at the writer and fail or discard messages
  • [CHANGED] - Updated build.gradle to not fail if TRAVIS_BRANCH isn't set

Version 2.6.6

  • [FIXED] - #274 - Added a check to prevent double event notification
  • [CHANGED] - #276 - Updated TLS certs to match go client
  • [FIXED] - #275 - Updated connect to randomize with the same code as reconnect

Version 2.6.2, 2.6.3, 2.6.4 & 2.6.5

  • [FIXED] - problem with jars being built with jdk 11
  • [ADDED] - Automated deploy

Version 2.6.1

  • [FIXED] - #263 - Added server URLs to connect exception (not to auth exception)
  • [FIXED] - #262 - Added @deprecated as needed
  • [FIXED] - #261 - Added a static credentials implementation that uses char arrays
  • [FIXED] - #260 - Moved to nats-server from gnatsd for testing
  • [FIXED/CHANGED] - #259 - Double authentication errors from a server during reconnect attempts will result in the connection being closed.
  • [FIXED] - #257 - Added connection method to messages that come from subscriptions, dispatchers and requests
  • [FIXED] - #243 - Added check for whitespace in subjects and queue names
  • [FIXED] - Improved a couple flaky tests

Version 2.6.0

  • [FIXED] - cleaned up use of "chain" instead of "creds"
  • [FIXED] - #255 - added special ioexception when possible to indicate an authentication problem on connect
  • [FIXED] - #252 - deprecated strings for username/pass/token and use char arrays instead, required changing some other code to CharBuffer
  • [ADDED] - Openjdk11 to travis build and updated gradle wrapper to 5.5
  • [ADDED] - an option to trace connect timing, including a test and example
  • [FIXED/ADDED] - #197 - the ability to use a single dispatcher for multiple message handlers, including multiple subscriptions on a single subject

Version 2.5.2

  • [FIXED] - #244 - fixed an issue with parsing ipv6 addresses in the info JSON, added unit test for parser
  • [FIXED] - #245 - fixed a timing bug in nats bench, now subscribers start timing at the first receive
  • [FIXED/CHANGED] - #246 - fixed a confusing output from nats bench in CSV mode, now the test count and the total count are printed
  • [ADDED] - spring cache to git ignore file
  • [ADDED] - support for running nats bench with conscrypt

Version 2.5.1

  • [FIXED] - #239 - cleaned up extra code after SSL connect failure
  • [FIXED] - #240 - removed stack trace that was left from debugging
  • [FIXED] - #241 - changed method used to create an ssl socket to allow support for conscrypt/wildfly native libraries
  • [ADDED] - conscrypt flag to natsautobench to allow testing with native library, requires Jar in class path

Version 2.5.0

  • [CHANGED] added back pressure to message queue on publish, this may effect behavior of multi-threaded publishers so moving minor version

Version 2.4.5 & 2.4.6

  • Clean up for rename to nats.java

Version 2.4.4

  • [FIXED] - #230 - removed extra executor allocation
  • [FIXED] - #231 - found a problem with message ordering when filtering pings on reconnect, caused issues with reconnect in general
  • [FIXED] - #226 - added more doc about ping intervals and max ping
  • [FIXED] - #224 - resolved a latency problem with windows due to the cost of the message queues spinwait/lock
  • [CHANGED] - started support for renaming gnatsd to nats-server, full release isn't done so using gnatsd for tests still

Version 2.4.3

  • [FIXED] - #223 - made SID public in the message
  • [FIXED] - #227 - changed default thread to be non-daemon and normal priority, fixes shutdown issues
  • [FIXED] - minor issue in javadoc that showed up when building on windows
  • [ADDED] - test for fast pings and disconnect, duration.zero on nextMsg
  • [CHANGED] - accepted pull request to replace explicit thread creation with executor

Version 2.4.2

  • [FIXED] - #217 - added check to "ignore" exceptions from reader during drain
  • [CHANGED] - no longer call exception handler for "ignored" communication exceptions during close/drain after close occurs
  • [ADDED] - #209 - support for comma separated urls in connect() or server()
  • [FIXED] - #206 - incorrect error message when reconnect buffer is overrun
  • [CHANGED] - #214 - moved to an executor instead of 1-off threads
  • [FIXED] - #220 - an icky timing issue that could delay messages
  • [CHANGED] - added larger TCP defaults to improve network performance
  • [ADDED] - public method to create an inbox subject using the prefix from options
  • [FIXED] - #203 & #204 - Fixed a thread/timing issue with writer and cleaning pong queues

Version 2.4.1

  • [FIXED] - #199 - turns out we had to hard code the manifest to remove the private package

Version 2.4.0

  • [ADDED] - support for JWT-based authentication and NGS
  • [FIXED] - issue with norandomize server connect order, it was broken at some point
  • [FIXED] #199 - import of a private package
  • [FIXED] #195 - issue with "discovered" servers not having a protocol but we tried to parse as uri
  • [FIXED] #186, #191 - sneaky issue with connection reader not reseting state on reconnect
  • [ADDED] #192 - option to set inbox prefix, default remains the same
  • [FIXED] #196 - updated all the versions i could find, and added note in gradle file about them

Version 2.3.0

  • [BREAKING CHANGE] Replaced use of strings for seeds and public keys in NKey code to use char[] to allow better memory security.

Version 2.2.0

  • [ADDED] Support for NKeys, and nonce based auth

Version 2.1.2

  • [FIXED] #181 - issue with default pending limits on consumers not matching doc
  • [FIXED] #179 - added version variable for jars in build.gradle to make it easier to change
  • [ADDED] Support for UTF8 subjects

Version 2.1.1

  • [FIXED] Issue with version in Nats.java, also updated deploying.md with checklist
  • [FIXED] Fixed issue during reconnect where buffered messages blocked protocol messages

Version 2.1.0

  • [ADDED] Support for consumer or connection drain. (New API lead to version bump.)
  • [FIXED] Fixed an issue with null pointer when ping/pong and reconnect interacted poorly.

Version 2.0.2

  • [FIXED] In a cluster situation the library wasn't using each server's auth info if it was in the URI.

Version 2.0.1

  • [CHANGED] Request now returns a CompletableFuture to allow more application async options
  • [ADDED] Added back OSGI manifest information
  • [ADDED] getLastError method to connection
  • [ADDED/CHANGED] Implemented noEcho tests, and require the server to support noEcho if it is set

Version 2.0.0

  • [BREAKING CHANGE] Moved build to gradle
  • [BREAKING CHANGE] Ground up rewrite to simplify and address API issues, API has changed
  • [BREAKING CHANGE] Simplified connection API
  • [CHANGED] Removed external dependencies

Version 1.1-SNAPSHOT

2017-02-09 GitHub Diff

  • [FIXED] Flush wait interval (the amount of time the flusher waits before checking the flush queue) is once again set at 1ms.
  • [FIXED] Do not shuffle entire pool when adding URL from INFO
  • [ADDED] Connection name can now be accessed using Connection#getName()
  • [CHANGED] CI tests now run against both Oracle JDK 8 and OpenJDK 8

Version 1.0

2017-02-02 GitHub Diff

  • [ADDED] Nats.connect() and variants have been added as a preferred method for connecting to NATS. ConnectionFactory.createConnection() will also continue to be supported.
  • [ADDED] Connection#getServers() and Connection#getDiscoveredServers() APIs to match Go client
  • [ADDED] isTlsRequired() and isAuthRequired() to match Go client capabilities.
  • [CHANGED] Methods that previously threw TimeoutException now simply return null (for non-void methods) or throw IOException if their timeout elapses before they complete.
    • ConnectionFactory#createConnection()
    • ConnectionImpl#flush(int timeout)
    • SyncSubscription#nextMessage(int timeout) - returns null if the timeout elapses before a message is available.
  • [CHANGED] Several constant definitions have been moved to the Nats class.

Version 0.7.3

2016-11-01 GitHub Diff

  • FIXED #83 All thread pool executors are now properly shutdown by Connection#close().

Version 0.7.1

2016-10-30 GitHub Diff

  • [NEW API] Connection#publish(String subject, String reply, byte[] data, boolean flush) allows the caller to specify whether a flush of the connection's OutputStream should be forced. The default behavior for the other variants of publish is false. This was added to optimize performance for request-reply (used heavily in java-nats-streaming). The internal flush strategy of ConnectionImpl minimizes flush frequency by using a synchronized flusher thread to 'occasionally' flush. This benefits asynchronous publishing performance, but penalizes request-reply scenarios where a single message is published and then we wait for a reply.
  • NatsBench can now be configured via properties file (see src/test/resources/natsbench.properties)

Version 0.7.0

2016-10-19 GitHub Diff

  • [BREAKING CHANGE] SyncSubscription#nextMessage() and its variants now throw InterruptedException if the underlying poll/take operation is interrupted.
  • Fixed interrupt handling.
  • Removed Channel implementation in favor of directly using BlockingQueue.

Version 0.6.0

2016-10-11 GitHub Diff

  • Implemented asynchronous handling of INFO messages, allowing the client to process INFO messages that may be received from the server after a connection is already established. These asynchronous INFO messages may update the client's list of servers in the connected cluster.
  • Added proper JSON parsing via google/gson.
  • Cleaned up some threading oddities in ConnectionImpl
  • Moved async subscription threading mechanics into the Connection, similar to the Go client.
  • Fixed a number of inconsistencies in how subscription pending limits were handled.
  • Removed subscription pending limits from ConnectionFactory. These should be set on the Subscription using Subscription#setPendingLimits().
  • ConnectionImpl is now public, to avoid some issues with reflection in Java and reflective languages such as Clojure. Described further in #35 (special thanks to @mccraigmccraig).
  • #58 Updated NUID implementation to match the Go version
  • #48 Fixed an NPE issue in TCPConnectionMock when calling bounce() (affects tests only).
  • #26 Fixed a problem with AsyncSubscription feeder thread not exiting correctly in all cases.
  • Updated integration tests to more closely reflect similar Go tests.
  • Miscellaneous typo, style and other minor fixes.

Version 0.5.3

2016-08-29 GitHub Diff

  • Moved nats_checkstyle.xml out of src tree to avoid jar/bundle filtering

Version 0.5.2

2016-08-29 GitHub Diff

  • Depends on stable nats-parent-1.1.pom
  • Excludes nats_checkstyle.xml from jar/bundle
  • Downloads gnatsd binary for current arch/os to target/ for test phase
  • Housekeeping changes to travis-ci configuration

Version 0.5.1

2016-08-21 GitHub Diff

  • Fixed a problem with gnatsd 0.9.2 connect_urls breaking the client connect sequence. This field is now ignored.
  • Retooled the way that releases are shipped from Travis CI, using the deploy: clause and new scripts

Version 0.3.2

2016-08-20 GitHub Diff

  • Fixed a problem parsing Long from String on Android.

Version 0.5.0

2016-08-10 GitHub Diff

  • Reverted to Java 1.7 compatibility to avoid Android incompatibility
  • Fixed an issue that was preventing TLS connections from reconnecting automatically.
  • Fixed an issue with asynchronous subscriptions not terminating their feeder thread.
  • Exposed pending limits APIs
  • Updated examples to match Go client and added benchmark program
  • Integrated NATS parent POM
  • Integrated check style
  • Integrated maven-bundle-plugin to provide OSGI compliant java-nats bundle
  • Miscellaneous minor bug fixes and javadoc updates

Version 0.4.1

_2016-04-03 GitHub Diff

  • Removed a stray log trace statement in publish that was affecting performance.

Version 0.4.0

2016-03-29 GitHub Diff

  • Built on JDK 8
  • Added NUID (a java implementation of http://github.com/nats-io/nuid), an entropy-friendly UUID generator that operates ~40 ns per op
  • Connection#newInbox() now uses NUID to generate the unique portion of the inbox name
  • Added support for pending byte/msg limits for subscriptions:
  • Subscription#setPendingLimits(int msgs, int bytes)
  • Made the size of the Connection reconnect (pending) buffer configurable with ConnectionFactory setters and getters
  • Optimized parser performance
  • Optimized parser handling of large message payloads
  • ConnectionFactory will now construct a default URL by combining supplied host, port, user, and password if no URL is directly supplied.
  • Fixed a couple of issues with misnamed properties
  • Miscellaneous doc corrections/updates

Version 0.3.1

2016-01-18 Initial public release of java-nats, now available on Maven Central.

  • Added support for TLS v1.2
  • Numerous performance improvements
  • The DisconnectedEventHandler, ReconnectedEventHandler and ClosedEventHandler classes from the Alpha release have been renamed to DisconnectedCallback, ReconnectedCallback and ClosedCallback, respectively.
  • Travis CI integration
  • Coveralls.io support
  • Increased test coverage