Version 2.0.3 GA is the third bug fix release of the 2.0 series. It provides important bug fixes and stability improvements, especially during rebalance and failover scenarios.
New features and behavioral changes
This release contains the following enhancements:
- JVMCBC-103 : RxJava has been upgraded to 1.0.4 which provides bug fixes and performance improvements. The update is fully backward compatible.
- JVMCBC-110 : The internally used Netty library for IO has been upgraded to 4.0.25 to provide better HTTP performance and bug fixes with SSL. It also explicitly removes SSSLv3 to prevent the POODLE attack. Note that even before, the Couchbase Java SDK was negotiating with TLS only.
- JVMCBC-115 : A minimum reconnect delay of 128 milliseconds has been added when a connection is lost. This delay prevents the remote node from being overwhelmed with reconnect requests. In future versions, the delay will be configurable through the environment completely.
- JCBC-651 : It is now possible to write maps and lists into JsonObject and JsonArray respectively. Appropriate put(Map) and add(List) methods have been added. All values passed in are checked for the allowed types.
This release contains the following bug fixes:
- JVMCBC-100 , JVMCBC-101 : Bootstrapping has been made more resilient when one more nodes as part of the bootstrap list are not available. This includes a bug fix where the node was not properly ignored when it was available (listening on ports), but acting as an uninitialized node for a cluster.
- JVMCBC-75 , JVMCBC-82 , JVMCBC-98 , JVMCBC-99 , JVMCBC-111 , JVMCBC-116 : Bugs in the area of configuration management and rebalance resiliency have been fixed, which lead to better performance and greater stability during rebalance and failover scenarios with various workloads. This also includes compatibility fixes with older clusters that do not support the carrier configuration protocol and still rely on HTTP-based configuration (Couchbase Server 2.2 and earlier).
- JVMCBC-106 , JVMCBC-107 , JVMCBC-113 , JVMCBC-114 , JCBC-657 : In various places, reference counting of pooled byte buffers has been improved or fixed to avoid leaking out of the buffer pool for shared buffers.
- JCBC-661 , JCBC-671 , JCBC-672 , JCBC-673 , JCBC-675 : Transparently retrying views under various conditions has been fixed and improved. The code is now more resilient during rebalance and will also retry view requests from failed over nodes because they are idempotent and can be safely retried. In addition, bugs have been fixed that prevent proper retry under rebalance conditions.
- JCBC-668 : Because a Document always needs to have a non-null ID, the empty() factory methods have been removed (since they would trigger an Exception immediately during instantiation).
- JCBC-653 : The development(boolean) method on the ViewQuery DSL was not respecting the flag passed in. This has been corrected.
- JCBC-663 : The toString() methods on both the JsonArray and JsonValue now properly escape characters and always produce valid JSON (that is in return parsable by libraries like Jackson).
- JVMCBC-97 : There has been an issue where the view service always was trying to be enabled, even on memcached type buckets and during some rebalance scenarios. With this change, it is only conditionally enabled when actually available.
- JVMCBC-97 : If a very large view response chunk is arriving, the code now properly checks the bounds and has no issues looking ahead in the stream. This fixes a reported issue when debug is enabled during a view request that the response could not be parsed properly.