Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Jul 30, 2015
  1. @jeffrymorris

    NCBC-925: .NET Client 2.1.1 leaks connections when bucket does not exist

    jeffrymorris authored
    Motivation
    ----------
    If the .NET Couchbase Client attempts to .GetBucket() on a bucket that's
    in the configuration, but does not exist, the client will throw an
    AggregateException. Additionally, the client will leak connections (equal
    to the min pool size) for every attempt.
    
    Modifications
    -------------
    If bootstrapping fails for an IP/host the client will dispose of the
    IOStrategy which will call Dipose on the internal ConnectionPool.
    
    Results
    -------
    All connections are closed when boostrapping fails.
    
    Change-Id: Iff8bf050f77a16ec2572dbab999741ced286f2ad
    Reviewed-on: http://review.couchbase.org/53907
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  2. @jeffrymorris

    NCBC-940: throw CouchbaseBootstrapException if servers list is not in…

    jeffrymorris authored
    …itialized
    
    Motivation
    ----------
    After receiving a cluster map and reconfigging, if the client cannot
    resolve the node names resulting in the server's list being empty,
    fail-fast with a CouchbaseBootstrapException.
    
    Modifications
    -------------
    Add CouchbaseBootstrapException and throw after configging in the context
    object if it's empty.
    
    Results
    -------
    Instead of receiving an error during an operation request the client will
    fail-fast while bootstrapping if it cannot properly initialize.
    
    Change-Id: Ib179c52f043058970346f85bdfa16a53b2ad33df
    Reviewed-on: http://review.couchbase.org/53906
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  3. @jeffrymorris

    NCBC-941: N1QL Request Timeout is missing from QueryClient

    jeffrymorris authored
    Motivation
    ----------
    A N1QL query request can timeout at the client level using the .NET stack and
    at the server level per the REST API's timeout. The default timeout for
    the server is zero which means it will never timeout; a query could hang
    indefinitly. This commit adds a client side timeout.
    
    Modifications
    -------------
    Adds a new field to ClientConfiguration called QueryRequestTimeout which
    defaults to 70s. Updates the QueryClient to use this value to timeout the
    client if a request exceeds the value.
    
    Results
    -------
    The client will now timeout if a N1QL query exceeds the
    QueryRequestTimeout value.
    
    Change-Id: I69231fd13270ed678e8cac103c26c262354233e1
    Reviewed-on: http://review.couchbase.org/53778
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Jul 29, 2015
  1. @subalakr @jeffrymorris

    NCBC-434 Test to ensure E2BIG is returned for large append

    subalakr authored jeffrymorris committed
    Motivation
    ----------
    Verify the behavior on append greater than 20MB
    
    Modifications
    -------------
    Added a feature test which appends large value and verifies 
    if the append fails with ValueTooLarge response status
    
    Change-Id: Ifec5518dc43ecaed98b2e1214921c9641614ada4
    Reviewed-on: http://review.couchbase.org/53886
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @subalakr @jeffrymorris

    Unit Tests for DML

    subalakr authored jeffrymorris committed
    Motivation
    ----------
    Test experimental DML support in Couchbase 4.0
    
    Changes
    -------
    Use query sync api to test insert, update and delete on the beer sample
    bucket. Additional cases using named and positional parameters are also
    covered.
    
    Change-Id: I7ea16bb82b8db58e37a1dd08ecaaca78e1cab6df
    Reviewed-on: http://review.couchbase.org/53883
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jul 22, 2015
  1. @Svizel @jeffrymorris

    NCBC-956: Fix exception when decoding char type

    Svizel authored jeffrymorris committed
    Motivation
    ----------
    Decode of char type used to lead to invalid cast exception. This is now
    fixed as char is handled separately from string.
    
    Modifications
    -------------
    Added logic to DefaultSerializer to decode strings and char's separately.
    
    Results
    -------
    Char values will properly be decoded.
    
    Change-Id: Ied9137dd9d027070bbb4c72726112ff2e00dd62f
    Reviewed-on: http://review.couchbase.org/53439
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @brantburnett @jeffrymorris

    NCBC-948: Corrected errors when running N1QL queries as bare strings

    brantburnett authored jeffrymorris committed
    Motivation
    ----------
    When running a N1QL query using CouchbaseBucket.Query<T>(string),
    QueryClient.Query<T>(Uri, string), or QueryClient.QueryAsync<T>(Uri,
    string) the request is not formatted correctly.  N1QL will always return
    an error that the statement is blank.
    
    Modifications
    -------------
    Change QueryClient.Query<T>(Uri, string) and its Async counterpart to
    simply format all queries as a QueryRequest and then process through their
    counterparts that use a QueryRequest parameter.  For
    CouchbaseBucket.Query<T>(string), changed it to use the _requestExecutor
    and provide a QueryRequest parameter, just like its Async counterpart that
    was already correct.  Updated unit tests to test for these bugs.
    
    Result
    ------
    Ad hoc queries w/out an associated QueryResult object are supported and will
    use the default settings of QueryResult.
    
    Change-Id: I21fb29a73cee460ff4fed9bf030c4ccd5ab0437f
    Reviewed-on: http://review.couchbase.org/53448
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  3. @Svizel @jeffrymorris

    NCBC-955: Add option to affect operation flags with value fomatting

    Svizel authored jeffrymorris committed
    Motivation
    ----------
    The original implementation of ITypeTranscoder does not allow full
    customization of encoded values. It still binds the encoding by hard wired
    formatting flags based on the generic type of operation. The new
    implementation allows for full encoding customization like unwrapping of
    values passed in as object generic type.
    
    Modifications
    -------------
    Added GetFormat to ITypeTranscoder and implementation to
    DefaultTranscoder. Removed GetFormat method from OperationBase and instead
    use the ITypeTranscoder's GetFormat method.
    
    Result
    ------
    Now supports customization of encoded values for custom ITypeTranscoder
    implementations.
    
    Change-Id: I1590fc995223a250063818fa68ed460bfe97e68a
    Reviewed-on: http://review.couchbase.org/53438
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jul 21, 2015
  1. @jeffrymorris

    NCBC-949: Unit test cleanup and refactoring

    jeffrymorris authored
    Motivation
    ----------
    Fixes a number of breaking unit tests; this part of a project to automate
    the setup the unit test (read integration test) environment so that's it
    repeatable and easy to run on a host. See NCBC-942 for details.
    
    Modifications
    -------------
    A bunch of refactoring to improve the success rate of the UT's.
    
    Results
    -------
    Assuming you a have a 4 node cluster with 3 replicas, SSL certs and the
    following buckets defined: default, beer-sample, travel-sample,
    authenticated (with 'secret' as a password) and memcached (a Memcached
    bucket), you should get around 97% success rate.
    
    Change-Id: Ifc61339804a9a7473196b5957020e35012060a79
    Reviewed-on: http://review.couchbase.org/52804
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Jul 2, 2015
  1. @jeffrymorris

    NCBC-934: Ensure GetFromReplica returns an IOperationResult

    jeffrymorris authored
    Motivation
    ----------
    In certain cases the replicas list may be empty, even though replicas are
    available. If no replicas are found an IOperationResult should be
    returned, not null as was happening in previous versions. Additionally,
    the SDK will try to do a successful replica read until it times out or
    success is returned if replicas are configured.
    
    Modifications
    -------------
    Moved around the code in CouchbaseCOnfigContext to ensure that there is
    not a time in which the replicas could be empty. Added logic to ensure
    that IOperationResult is returned instead of null if the replicas list is
    empty.
    
    Result
    ------
    If no replicas can be found (perhaps an inconsistent state during a
    rebalance), an IOperationResult will be returned. The Result field will
    indicate an OperationTimeout if it ran to timeout, NoReplicasFOund if replicas are
    not configured, or success if the read was successful.
    
    Change-Id: I06b3b7711b68b2d9ac334ad53fc2eece9f3f0aa4
    Reviewed-on: http://review.couchbase.org/52766
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jun 30, 2015
  1. @jeffrymorris

    NCBC-932: BodyLength is zero when receive buffer tries read from it

    jeffrymorris authored
    Motivation
    ----------
    Fixes a bug where the receive buffer length is the size of the last send.
    In certain cases when the buffer is smaller than the header size, the
    first receive will fail to read the entire document.
    
    Modifications
    -------------
    Before the first receive is called in Connection.Send, the buffer is reset
    back to the size specified in the config.
    
    Results
    -------
    Documents that exceed the buffer length by less than 24 bytes will still
    properly be inserted; ResponseStatus.None will not be returned.
    
    Change-Id: I6b9f974cea267a5ba26ee48c94be81088aed79af
    Reviewed-on: http://review.couchbase.org/52692
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jun 23, 2015
  1. @jeffrymorris

    NCBC-924: part 2 - Port defaults to 0 when NodeExt is not found in cl…

    jeffrymorris authored
    …uster map
    
    Motivation
    ----------
    Moves the setting of the CouchbaseApiBase fields above the node
    initialization section. This was omitted in the intial patch and will
    cause an error.
    
    Modification
    ------------
    Moves the setting of the CouchbaseApiBase fields above the node
    initialization section in NodeAdapter.
    
    Result
    ------
    If the Node is used, it will not error out when trying to parse the port
    from CouchbaseApiBase.
    
    Change-Id: I50d346d2e6925b1f100fc120d82b32d90a1dbdfa
    Reviewed-on: http://review.couchbase.org/52395
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Subhashni Balakrishnan <b.subhashni@gmail.com>
Commits on Jun 22, 2015
  1. @jeffrymorris

    NCBC-917: Collection modified error during bulk operation

    jeffrymorris authored
    Motivation
    ----------
    Fixes a bug were seperate thread would modify a collection while it was
    being enumerated.
    
    Modification
    ------------
    Extended the critical section to include the check to see if the endpoints
    collection was null or empty before loading it.
    
    Result
    -------
    The code should no longer throw the following exception:
    System.InvalidOperationException: Collection was modified; enumeration
    operation may not execute.
    
    Change-Id: I86b82c3d46f3c2f308f2ec1e77e184464aa1621e
    Reviewed-on: http://review.couchbase.org/52349
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  2. @jeffrymorris

    NCBC-924: Port defaults to 0 when NodeExt is not found in cluster map

    jeffrymorris authored
    Motivation
    ----------
    Fixes a regression in which the ports will default to 0 in pre-nodesExt
    versions of Couchbase server.
    
    Modifications
    -------------
    Updated NodeAdapter so that it detects the case in which nodesExt is
    missing and uses the Nodes information to get the ports to use. Added unit
    tests and some refactoring/formatting to existing tests.
    
    Result
    ------
    If the nodesExt object is missing from the cluster map, the client will
    now default to the nodes array for port information.
    
    Change-Id: I466b396272fdec816aaff5e610f6a71240f26169
    Reviewed-on: http://review.couchbase.org/52347
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  3. @jeffrymorris

    NCBC-922: Part 2 - Receiving none(0xffffffff) as response status duri…

    jeffrymorris authored
    …ng failover
    
    Motivation
    ----------
    This amends a previous commit for NCBC-922 by adding a new ResponseStatus
    called TransportFailure which is returned when a SocketException is
    returned indicating that their was a transport level failure on send or
    recieve. In a future feature, this will make it easier to allow app to
    determine which type of failures it may want to retry for example.
    
    Modifications
    -------------
    ResponseStatus now has a new field called TransportFailure (0x0500) which
    is returned if a SocketException is thrown and caught while sending or
    receiving an operation. Catch blocks were updated so that that the
    IOperationResult.Status would have this value assigned depending upon the
    exception type.
    
    Results
    -------
    If a SocketException is caught, the SDK will return TransportFailure; all
    other client side exceptions (errors not returned in the memcached packet)
    will be ClientFailure.
    
    Change-Id: I2e03de03a2a03988ef4d74584f1b84ba938d3330
    Reviewed-on: http://review.couchbase.org/52327
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Jun 19, 2015
  1. @jeffrymorris

    NCBC-922: Receiving none(0xffffffff) as response status during failover

    jeffrymorris authored
    Motivation
    ----------
    A response status of 'None' indicates that the status was never set; the
    SDK should never return this value.
    
    Modifications
    -------------
    Added a catch block which sets the Exception field on the operation which
    will cause the GetResult and GetResultWithValue methods to return a failure
    state.
    
    Result
    ------
    If an error occurs the proper respons status will be returned.
    
    Change-Id: I6252b86bd9cb53a3b90ca10b6a2125ff5a66e426
    Reviewed-on: http://review.couchbase.org/52288
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Jun 18, 2015
  1. @jeffrymorris

    NCBC-913: SDK incorrectly states down node heartbeat is 1000s instead…

    jeffrymorris authored
    … of 1000ms
    
    Motivation
    ----------
    If a node unavailable, the sdk will return an error message that states
    "...The SDK will continue to try to connect every 1000 seconds..". This
    should be 1000 milliseconds not seconds.
    
    Modifications
    -------------
    Message was modified from 1000 seconds to 1000ms in ExceptionUtil.cs
    
    Result
    ------
    The SDK now returns the correct error message indicating that it will try
    re-connect in 1 second.
    
    Change-Id: Ice93a0906def8bf0e22d3c8f42c45470f4875cc4
    Reviewed-on: http://review.couchbase.org/52197
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  2. @jeffrymorris

    NCBC-918: Throughput is not restored with rb2out on memcached bucket

    jeffrymorris authored
    Motivation
    ----------
    Fixes bug in which the SDK continues to return NodeUnavailable even after
    failover/rebalance is completed.
    
    Modifications
    -------------
    MemcachedConfigContext was using the class level (older) nodes collection
    when creating the servers list instead of the new, updated nodes
    collection passed into the method.
    
    Result
    ------
    Throughput is restored after a rebalance on a Memcached bucket.
    
    Change-Id: I4d6bd9bac50617728b578aeadf84a67e74175ed3
    Reviewed-on: http://review.couchbase.org/52161
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  3. @jeffrymorris

    NCBC-895: BufferAllocator is created per Connection

    jeffrymorris authored
    Motivation
    ----------
    Makes the buffer for K/V IO a contiguous buffer per cluster node.
    
    Modifications
    -------------
    Refactored so that BufferAllocator is now allocated at the ConnectionPool
    level, instead of per connection. Changed the connection logic to use the
    Offset of the SAEA assigned to itself as the offset for reading and
    writing to the contiguous buffer.
    
    Result
    ------
    The SDK now uses the full range of indexes available and allocates the
    buffer for each cluster node as a contiguous buffer.
    
    Change-Id: If66e3eba88af5cb6ae801dbbace5cf9dd52a8e83
    Reviewed-on: http://review.couchbase.org/52038
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  4. @jeffrymorris

    NCBC-886: Check opaque of response header against op Opaque

    jeffrymorris authored
    Motivation
    ----------
    Adds a comparison of the opaque returned in the packet with the
    operation object's opaque field to ensure that they match.
    
    Modifications
    -------------
    The Read method in OperationBase now does a opaque comparison after
    reading the header; if the two are not equal, a ClientFailure will be
    returned and a message indicating the expected and actual opaque values.
    Some of the SASL operation's didn't send an opaque, so they were modified
    to do so. The Connection class now sets IsDead to true if the read request
    ends up returning 0 bytes.
    
    Results
    -------
    If the response of the operation does match the request, the client will
    return an error.
    
    Change-Id: I0c89c1b8d8560263507ebdc7efc8386cd9c4e1da
    Reviewed-on: http://review.couchbase.org/51933
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  5. @Svizel @jeffrymorris

    NCBC-919: Global connection pool setting for app.config

    Svizel authored jeffrymorris committed
    Motivation
    ----------
    Programmatic configuration allowed setting up connection pools on global
    level. Add same functionality to configuration through app.config.
    
    Modifications
    -------------
    
    Results
    -------
    It is now possible to configure connection pools at a global level via the
    config file or programatically.
    
    Change-Id: Ic2ad0f7fbfd76e18e56cfd708a1428ae77337a46
    Reviewed-on: http://review.couchbase.org/52163
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jun 11, 2015
  1. @subalakr @jeffrymorris

    Add internal apis for exists returning IOperationResult

    subalakr authored jeffrymorris committed
    Motivation
    ----------
    Make the operation result visible to sdkd for failure analysis
    
    Modification
    ------------
    Internal methods _Exists and _ExistsAsync in CouchbaseBucket class
    
    Change-Id: I72f2d7ae1d28604c4954982e581f747b94cf60e5
    Reviewed-on: http://review.couchbase.org/51525
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jun 10, 2015
  1. @jeffrymorris

    NCBC-823: IndexOutOfRangeException when IO error occurs

    jeffrymorris authored
    Motivation
    ----------
    If an IO error occurs while an operation is in mid-flight, the SDK would
    handle the IO exception and try to read the buffer. Often the buffer would
    be empty which would cause an IOORE leading to the Exception field of the
    IOperationResult being overridden with the IOORE, masking the actual
    error.
    
    Modifications
    -------------
    Added several checks to ensure the buffer was valid before reading in
    OperationBase and DefaultIOStrategy. Added a new enum value to
    ResponseStatus: None, which indicates that the header has never been read.
    
    Results
    -------
    The correct error should be returned back to the client. Operations that
    can be re-tried such as GET and any mutation operations with a CAS value
    will be retried. If the retry is not succesful, the operation may timeout.
    
    Change-Id: I3d21dd256a77d084a3413752e2c300f372320676
    Reviewed-on: http://review.couchbase.org/51890
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jun 9, 2015
  1. @jeffrymorris

    NCBC-912: Client tries to deserialize memcached body when it is empty

    jeffrymorris authored
    Motivation
    ----------
    If the body is empty, the SDK should bypass deserialization and the value
    field should be the default value of T.
    
    Modifications
    -------------
    Added a check in the DefaultSerializer to see if the length of the buffer
    is 0, if it is, deserialization is bypassed.
    
    Results
    -------
    The overhead of deserilization is no longer encountered when it's not
    needed.
    
    Change-Id: I636ae35784013cfbde47a212ce0a604421f5eab2
    Reviewed-on: http://review.couchbase.org/51802
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @jeffrymorris

    NCBC-903: Ensure k/v requests to memcached buckets use data nodes

    jeffrymorris authored
    Motivation
    ----------
    Memcached nodes require Ketama hashing for uniform key assignment to
    nodes. The list of available nodes should only be Data nodes (not Query or
    Index for example).
    
    Modifications
    -------------
    When the KetemaKeyMapper is initialized, only include nodes with the
    IsDataNode to be used.
    
    Results
    -------
    Memcached buckets will only use data nodes for K/V operations.
    
    Change-Id: I509d1361c45d3e88190689a49eae376d107bc7ea
    Reviewed-on: http://review.couchbase.org/51635
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  3. @jeffrymorris

    NCBC-904: Return error when op is attempted on node that doesn't supp…

    jeffrymorris authored
    …ort service
    
    Motivation
    ----------
    If an operation is attempted on a service that the cluster doesn't
    support, throw an error with the reason.
    
    Modifications
    -------------
    The Is[SERVICE]Capable flag is set when the cluster config is read and
    checked when an operation is attempted. If the cluster doesn't support the
    service, a ServiceNotSupportedException is thrown.
    
    Result
    ------
    If the cluster does not support a requested operation, the SDK will
    immediatly throw a ServiceNotSupported exception.
    
    Change-Id: I6c052d67d48c5d1dd66a3d8f338f9039738b00fd
    
    Conflicts:
    	Src/Couchbase/Configuration/CouchbaseConfigContext.cs
    Change-Id: Ie11d290d42162a2a051ec8c867df6c85830b24b3
    Reviewed-on: http://review.couchbase.org/51879
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  4. @jeffrymorris

    NCBC-902: Make Server selection 'service aware'

    jeffrymorris authored
    Motivation
    ----------
    This changeset makes the SDK 'service aware'; when a Query request is
    executed only the nodes with the query service registered will execute the
    query, otherwise an exception will be raised.
    
    Modifications
    -------------
    The ConfigContextBase now has segragates the nodes by service into
    separate lists. Accessor methods are available which will return a random
    node if called. Additional properties were added to IConfigInfo to reflect
    if the cluster supports a service.
    
    Results
    -------
    The SDK now will send a request for an operation to the correct node if
    the cluster doesn't support a service then the client will return an
    exception.
    
    Change-Id: I9b5d7df3e7b5eaa10019fac06cf0ee9cc3e4f5ae
    Reviewed-on: http://review.couchbase.org/51559
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  5. @jeffrymorris

    NCBC-901: Make IServer implementations aware of Services defined by N…

    jeffrymorris authored
    …odesExt
    
    Motivation
    ----------
    In order for the SDK to take advantage of multi-dimensional scaling, the
    client must maintain statefulness of which service each node is reponsible
    for.
    
    Modifications
    -------------
    The IService interface has added properties for which service it is
    reponsible for: IsQueryNode, IsDataNode, etc. These are set by the values
    in nodesExt from the cluster config. Some additional refactoring was done
    around url writing and IPEndPoint and IPAddress resolution, finally unit
    tests were updated.
    
    Result
    ------
    The internal nodes (IServer) instances are aware of the services that they
    are reponsible for via configuration.
    
    Change-Id: I80458a3a2ed21c200d4927a7da29bcb530529214
    Reviewed-on: http://review.couchbase.org/51494
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  6. @jeffrymorris

    NCBC-891: Update Common.Logging to version 3.1

    jeffrymorris authored
    Motivation
    ----------
    Common.Logging updated to from 3.0 to 3.1 which has cause some versioning
    issues.
    
    Modifications
    -------------
    Updated NuGet dependencies to 3.1.
    
    Result
    ------
    SDK now depends on Common.Logging 3.1.
    
    Change-Id: Ic25c1a3d315917aefc1305778cb47a3610a0e461
    Reviewed-on: http://review.couchbase.org/51381
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on May 28, 2015
  1. @Svizel @jeffrymorris

    NCBC-908: Fix connection leak on Memcached bucket dispose

    Svizel authored jeffrymorris committed
    Motivation
    ----------
    Memcached buckets are using HttpStreamingProvider for Couchbase server
    node configuration. This implementation did not properly Dispose
    underlying ConnectionPools instances.
    
    Modifications
    -------------
    Dipose is now called on the IConfigInfo implementation after it is released.
    
    Result
    ------
    Memcached buckets no longer leak resources.
    
    Change-Id: Ia88a6f220e76ebda9dc2ae68ff4064eabc57cb6f
    Reviewed-on: http://review.couchbase.org/51512
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on May 21, 2015
  1. @jeffrymorris

    NCBC-898 - Make NodeUnavailable and TemporaryFailures retriable

    jeffrymorris authored
    Motivation
    ----------
    If a node goes offline, we want to retry operations if we can.
    
    Modifications
    -------------
    NodeUnavailable and TempFailure response status return true for retry.
    
    Results
    -------
    An operation with one of these status's will retried until either it
    completes or timesout.
    
    Change-Id: I1b809286a14cabddd98cd1f012c3d13a451d1d9f
    Reviewed-on: http://review.couchbase.org/51302
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Subhashni Balakrishnan <b.subhashni@gmail.com>
Commits on May 20, 2015
  1. @jeffrymorris

    Add default NodeAvailableCheckInterval to ClientConfiguration

    jeffrymorris authored
    Motivation
    ----------
    The ClientConfiguration needs a default NodeAvailableCheckInterval so that
    it does not overwhelm the server.
    
    Modifications
    -------------
    Added NodeAvailableCheckInterval and set it to 1000ms (1 second).
    
    Result
    ------
    SDK will wait 1 second before trying to reconnect to a down node by
    default.
    
    Change-Id: Ied35cfe163aa3224138c312a01eee1ad8a434c40
    Reviewed-on: http://review.couchbase.org/51296
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Subhashni Balakrishnan <b.subhashni@gmail.com>
  2. @jeffrymorris

    NCBC-897: When SendAsync returns synchronously call OnCompleted manually

    jeffrymorris authored
    Motivation
    ----------
    Per MSDN documentation, if Socket.SendAsync returns false, it has
    completed synchronously. In which case we manually need to call
    OnComepleted passing the socket and the SAEA instance.
    
    Modifications
    -------------
    If SendAsync returns false, manually call OnCompleted(socket, args) in
    Connection.
    
    Results
    -------
    If a send completes synchronously, OnCompleted will be called manually.
    
    Change-Id: I915cde9480b5622a278692beaa931ce50c0ca8a0
    Reviewed-on: http://review.couchbase.org/51258
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  3. @jeffrymorris

    NCBC-896: Support translation between Hostname and IPAddress

    jeffrymorris authored
    Motivation
    ----------
    The IPEndpointExtensions.GetServer(server) method, unlike the other
    overloads, did not correctly handle the case where the passed in hostname
    was not an IPAddress. This patch will correctly resolve the IPAddress of
    the hostname.
    
    Modifications
    -------------
    Updated IPEndpointExtensions.GetServer(server) so that if the value of
    server is a hostname, the IPAddress will be resolved from it.
    
    Results
    -------
    If a cluster is configured to use a hostname as opposed to a IPAddress,
    the SDK will correctly resolve it.
    
    Change-Id: I9de54a354c5f9e5952a0405696c92e596d01017d
    Reviewed-on: http://review.couchbase.org/51237
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on May 18, 2015
  1. @dionoid @jeffrymorris

    NCBC-892: In ClientConfiguration TcpKeepAliveTime and TcpKeepAliveInt…

    dionoid authored jeffrymorris committed
    …erval are switched
    
    Motivation
    ----------
    Default values for TcpKeepAliveTime and TcpKeepAliveInterval are switched
    in Client Configuration, thus the keep alives start after 1s of inactivity.
    
    Modification
    ------------
    Switched around values for TcpKeepAliveTime and
    TcpKeepAliveInterval in ClientConfiguration.cs
    
    Results
    -------
    The TCP keep alives will be sent correctly after 2hrs of inactivity at
    intervals of 1s by default.
    
    Change-Id: I301b4a7079db44a911856697c8191ce08229316d
    Reviewed-on: http://review.couchbase.org/51148
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Something went wrong with that request. Please try again.