Release notes

Release notes for the Couchbase .NET SDK version 2.

Version 2.0 GA

Version 2.0 GA is the general availability release of the .NET Couchbase 2.0 SDK, the official SDK for creating applications using Couchbase Server with Microsoft .NET languages. This release includes all new developer documentation, API reference, NuGet packages, and binaries.

In this release

This release, which builds on the previous beta and developer preview releases, contains many bug fixes and stability improvements. Features added include:

  • Replica reads: support for the client to read from one or more replicas. In certain situations, for instance when a node is down, this allows for inconsistent reads when acceptable.
  • Support for GetL, Unlock, and GetWithLock
  • Overloads for prepend and append methods that accept byte arrays
  • Improvements to the View API that make serializing to and from POCOs easier
  • Many bug fixes and stability improvements

Missing features

The major missing functionality that did not make it into GA, but will be included in a future minor release, is support for asynchronous operations using the async and await keywords with the Task-based Asynchronous Pattern (TAP). This work is in progress.

Other missing features include:

  • Plugable JSON parser support to allow you to use the JSON serializer/deserializer of your choice
  • Per connection TCP heartbeat settings

Known issues

  • On Windows 2012, in certain situations the client might experience port exhaustion and related performance issues. If this happens, you will receive errors in your log similar to this: System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted. There is a workaround that you can find here.

List of select JIRA tickets in this release

  • NCBC-730: Ensure that argument out of range (AOOR) exceptions are not thrown when Observe fails
  • NCBC-729: Ensure bulk methods use thread-safe dictionaries
  • NCBC-717: Add expiration as TimeSpan overloads
  • NCBC-728: Rename IOperationResult.Value to IOperationResult.Content
  • NCBC-727: Make a constructor that takes CouchbaseClientSection public
  • NCBC-719: Ensure operations use FMap if available
  • NCBC-725: Make the ICluster interface public so that it can be mocked
  • NCBC-726: Ensure ViewDataMapper uses configured serializer settings
  • NCBC-722: Add support for mapping view results to POCOs
  • NCBC-724: Version numbers and configuration logging
  • NCBC-723: Timings: public interface level, server level, I/O level
  • NCBC-721: Ensure Increment wraps when it overflows
  • NCBC-493: Implement replica read capability
  • NCBC-711: Add support for GetL, Unlock, and provide GetWithLock an implementation on IBucket
  • NCBC-714: JSON and URI encode view input parameters
  • NCBC-700: Add overload for prepend and append methods that accepts byte arrays
  • NCBC-693: ODE in ConnectionPool.Dispose when run against cluster_run
  • NCBC-713: Ensure that multiple buckets can be added to a configuration
  • NCBC-716: IBucket.Replace overload has wrong type for CAS
  • NCBC-715: Hdd.UsedByData overflows when input is greater than int.maxsize

Version 2.0 Beta 2

Version 2.0 Beta 2 is the second beta release of the .NET Couchbase 2.0 SDK, the official SDK for creating applications using Couchbase Server with Microsoft .NET languages. This release includes all new developer documentation, API reference, NuGet packages, and binaries.

In this release

This release builds upon the previous beta release and includes the following features:

  • Bulk methods for getting or inserting a set of keys, key-values, or documents
  • Asynchronous view support using the familiar async/await programming model
  • Experimental support for asynchronous N1QL queries using async/await
  • Support for common data-types so that the various SDK's can use the same JSON documents and key-values across different platforms
  • An all-new Management API for programmatically managing Couchbase clusters, buckets and views.

Missing features

While we always strive to get as many features as possible into a given release, there are always a few that don't make it. If you're looking forward to any of the following features, don't worry; they will eventually make their way into a future release.

  • Asynchronous memcached operations using async or await
  • Replica reads: the ability to read from a non-master node
  • Plugable JSON parser support: the ability to use the JSON serializer/deserializer of your choice
  • Per connection TCP heartbeat settings

Known issues

  • For those using SSL, note that a vulnerability has been found in Ssl3. It's advised that the ServicePointManager.SecurityProtocol be set to Security.Protocol.Tls within the hosting app domain. This will ensure that the client is not using Ssl3.

List of select JIRA tickets in this release

  • NCBC-696Use default settings for SecurityProtocol
  • NCBC-676Make JsonSerializerSettings externally configurable
  • NCBC-684Rename Couchbase.dll to Couchbase.NetClient.dll
  • NCBC-697Ensure ConfigObservers collection is not null
  • NCBC-692Increase field sizes to avoid overflow errors
  • NCBC-699Upsert should take IDictionary input parameter
  • NCBC-698Add BucketType property to IBucket
  • NCBC-689: Disable ServicePointManager.Expect100Continue by setting to false
  • NCBC-685: provide a means of exiting the IConnectionPool.Acquire method
  • NCBC-675: Fixed servers with FQDN not properly resolving.
  • NCBC-683: When a node goes on/offline ensure that the cluster map is up to date
  • NCBC-644: ops/sec is not restored to the expected value - part 2
  • NCBC-682: Make mutual exclusion locks RWSLs were applicable
  • NCBC-673: MEMD_ENOENT errors after failover nodes
  • NCBC-674: missing test files and renaming
  • NCBC-667: Throw an argument out of range (AOOR) exception at VBucket.LocatePrimary - part 3
  • NCBC-668: 'HOST' causes parsing error on Memcached buckets - part 2
  • NCBC-667: ensure VBucket.LocatePrimary() does not throw AOOR
  • NCBC-668: '$HOST' causes parsing error on Memcached buckets
  • NCBC-669: Client incorrectly assumes 1024 vbuckets
  • NCBC-534: Provide async/await Methods for ad hoc N1QL queries
  • NCBC-533: Provide async/await Methods for Views
  • NCBC-665: Significant regression in memcached ops
  • NCBC-664: HOST placeholder causes a UriFormatException in UpddateBootstrapList method
  • NCBC-663: Authentication error when making View request to bucket with SASL Auth
  • NCBC-662: Ensure Config is decoded as an object
  • NCBC-659: Make KetamaKeyMapper and VBucketKeyMapper Dispose HashAlgorithm after every
  • NCBC-640: Rename CouchbaseCluster to Cluster
  • NCBC-658: Fix bug where /pools is not added to bootstrap URLs when configuration is app.config
  • NCBC-653: Add SendWithRetryMethod to MemcachedBucket
  • NCBC-626: Set defaults on ViewResult to avoid NRE
  • NCBC-594: Provide support for Management API
  • NCBC-652: Add support for bulk operations: Get and Upsert
  • NCBC-608: Implement Common Flags
  • NCBC-641: Update version and other assembly metadata
  • NCBC-639: ThrowOperationCanceledException in SendWithRetry[T](ViewQuery query)
  • NCBC-590: Refactor logging so that ODE are not raised when it references a disposed object
  • NCBC-624: Refactor View API

Version 2.0 Beta

Version 2.0 Beta is the first beta release of the .NET Couchbase 2.0 SDK, the official SDK for creating applications using Couchbase Server with Microsoft .NET languages. This release includes all new developer documentation, API reference, NuGet packages, and binaries.

In this release

  • This release introduces a new document-centric API for working with JSON documents in Couchbase. The purpose of this API is to make it easier to perform CRUD operations on JSON documents and to provide a consistent programming interface for JSON documents across all of the Couchbase SDKs: Java, Node, Ruby, PHP and others.
  • A completely rewritten .NET driver for connecting to and developing highly scalable NoSql applications using the .NET framework and Couchbase Server with minimal 3rd party dependencies.
  • A new and improved, fluent View API for querying views in Couchbase. Views are a means of creating secondary and composite indexes, reductions, and filters over a set of keys by using MapReduce functions written in JavaScript.
  • Support for encrypting data sent between client applications using the SDK and Couchbase server. This is done through Secure Socket Layer (SSL) on all TCP and HTTP connections if the SSL is enabled on the client and the proper certificate is imported on the application servers.
  • A new connection pool that while configurable, uses a much smaller number of connections than its predecessor.
  • Experimental support for executing ad hoc N1QL queries against Couchbase buckets. N1QL is the new SQL-like language for querying JSON documents within Couchbase.

Known issues

  • While the SDK has gone through rigorous situational and feature testing, it hasn't yet achieved a passing score for all tests. There are a couple of outstanding issues that have yet to be addressed, specifically NCBC-551 and NCBC-561. These issues and the passing of the complete suite of situational and feature tests will be completed prior to GA.
  • Being prerelease, there is a strong probability that public interfaces of some of the APIs might change significantly before GA.
  • A number of features available in 1.3.x have not yet been implemented in 2.0, for example: bulk methods and the management APIs. These will be available for GA or in a post-GA release.
  • Other features that are missing include replica reads and common flags (common types across all SDKs). These will also be released either at GA or in a subsequent release.