Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Mar 24, 2015
  1. @jeffrymorris

    NCBC-790: Add Support for Exists method

    jeffrymorris authored
    Motivation
    ----------
    The Exists method was supported in 1.3.X versions of the SDK, but absent
    from v2.X. This commit adds the functionality to the SDK.
    
    Modifications
    -------------
    Two methods were added Exists and ExistsAsync were added to the IBucket
    interfaces and implementations were created for Memcached and Couchbase
    buckets. Note that the async versions are not implemented in this commit,
    however the signatures were added. The impolementation for these methods
    will be added in a subsequent commit after the async-await branch is
    merged with master.
    
    Results
    -------
    You can now check for the existence of a key using the Exist method. Async
    support for ExistsAsync will be added in a later commit.
    
    Change-Id: I264735c0b1fd85732f9b28a070b9757cfd567fd8
    Reviewed-on: http://review.couchbase.org/48663
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @jeffrymorris

    NCBC-828: Provide support for GetAndTouch and Touch

    jeffrymorris authored
    Motivation
    ----------
    GetAndTouch (GAT) and Touch allow for a keys expiration to be updated.
    This is also known as "sliding expirations". While touch simply updates
    the expiration of an exiting key, failing if it doesn't exist, GAT will
    return the value of the key as well.
    
    Modifications
    -------------
    The Touch and GetT commands were implemented. The CouchbaseBucket and
    MemcachedBucket have had additional methods to support these commands
    added. Support for methods which return IOperationResult and
    IDocumentResult were added.
    
    Results
    -------
    The SDK now supports these methods which existed in v1.3.X and were absent
    for v2.X.
    
    Change-Id: I1e96c043c4988e643b0858be13bda3def089a977
    Reviewed-on: http://review.couchbase.org/48656
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Mar 20, 2015
  1. @benbenwilde @jeffrymorris

    Fix memcached bucket replace with cas.

    benbenwilde authored jeffrymorris committed
    Motivation
    ----------
    The MemcachedBucket.Replace(key, value, cas) untested and doing an Add
    instead of a Replace. This patch fixes it and adds the appropriate tests.
    
    Modifications
    -------------
    MemcachedBucket.Replace(key, value, cas) was corrected and tests were added to
    MemcachedBucket.Tests.
    
    Results
    -------
    MemcachedBucket.Replace(key, value, cas) is fixed and has tests to
    assert that it works correctly.
    
    Change-Id: I3a948b701605f9ff03a536da5287c72b7f1ba6b5
    Reviewed-on: http://review.couchbase.org/48487
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Mar 17, 2015
  1. @jeffrymorris

    NCBC-832: Refactor 'SendWithRetry' methods into IRequestExecuter

    jeffrymorris authored
    Motivation
    ----------
    The IBucket implementations have retry logic strewn about - this ticket is
    to refactory that logic into a more cohesive IRequestExecuter
    implementation for Memcached and Couchbase buckets.
    
    Modifications
    -------------
    A new interface, IRequestExecuter, has been defined with two
    implementations: MemcachedRequestExecuter and CouchbaseRequestExecuter.
    The CouchbaseBucket and MemcachedBuckets have been updated to use the
    executer, however some work still needs to be done in a later commit for
    async/await; this is depenendent on another changset, though.
    
    Results
    -------
    The send and retry logic is now centrally located and easier to mock and
    test.
    
    Change-Id: If7f85329bf5cb974aa108ab8b8dead5b2970d24e
    Reviewed-on: http://review.couchbase.org/48276
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Mar 16, 2015
  1. @simonbasle

    NCBC-817: catch ServerUnavailable in IsSecure

    simonbasle authored simonbasle committed
    Motivation
    ----------
    In some cases (like IoC with Autofac for instance), the server cannot
    be reached and the IsSecure fails with a ServerUnavailableException.
    This should be guarded against, logging the error and returning false.
    
    Modifications
    -------------
    CouchbaseBucket and MemcachedBucket IsSecure now catches the exception.
    It is logged (info level) and the method defaults to returning false.
    
    Result
    ------
    Less irrelevant exception when using dependency injection.
    
    Change-Id: I791ec7fae3b8dec82a64c322937b70a1e98a61d7
    Reviewed-on: http://review.couchbase.org/48178
    Tested-by: Simon Baslé <simon@couchbase.com>
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @simonbasle

    NCBC-831: Make Prepare part of the Bucket API

    simonbasle authored simonbasle committed
    Motivation
    ----------
    QueryClient is just there for modularity and should be made internal.
    Thus, the Prepare API that has previously been added should be instead
    exposed in the IBucket interface.
    Also, the use of QueryRequest parameters should be favored over uri and
    string.
    
    Modifications
    -------------
    Prepare API has been exposed in IBucket, delegating to IServer and at
    last delegating to the QueryClient.
    Both string and IQueryRequest overloads are available. In both cases
    only the Statement is used, the IQueryRequest one will see its BaseUri
    overwritten by the one of the Server.
    
    IQueryClient has been fixed and now only take a IQueryRequest as input.
    Out of this request, only the BaseUri and Statement are used in order
    to obtain a IQueryPlan.
    
    Tests have been added/fixed in consequence.
    
    Result
    ------
    A statement (either as plain string or embedded in a IQueryRequest) can
    now be prepared from the IBucket.
    
    Change-Id: Ia46f2df09fb265307f935cae41dda2b3af21c264
    Reviewed-on: http://review.couchbase.org/48118
    Tested-by: Simon Baslé <simon@couchbase.com>
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Mar 14, 2015
  1. @jeffrymorris

    Misc unit test fixes

    jeffrymorris authored
    Motivation
    ----------
    Refactor unit tests so they are valid.
    
    Modifications
    -------------
    Minor changes to several test fixtures (see files list).
    
    Result
    ------
    Tests that were failing for invalid reasons are now passing.
    
    Change-Id: I69f94bb7c62f48e900b4779a70dacc208b2b1946
    Reviewed-on: http://review.couchbase.org/48119
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Mar 11, 2015
  1. @jeffrymorris @simonbasle

    Update N1QL tests to use QueryRequest

    jeffrymorris authored simonbasle committed
    Motivation
    ----------
    Updates the QueryClient tests to use QueryRequest instead of raw
    statements, because those tests were failing after Dp4.
    
    Modifications
    -------------
    QueryClientTests are now using QueryRequest for all N1QL queries.
    
    Results
    -------
    The tests will no longer fail.
    
    Change-Id: If4bab6ea2d213418f0f8372b0751954463240010
    Reviewed-on: http://review.couchbase.org/48061
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Mar 3, 2015
  1. @jeffrymorris

    Move hardcoded IPs in unit tests to config

    jeffrymorris authored
    Motivation
    ----------
    Several of the unit tests use IPs and Uris that are hardcoded within the
    tests which makes running the in environments other than localhost
    difficult. This patch moves those values to the App.Config so that it is
    easier to change them to run in an enviroment other than localhost. This
    is one step of many required to automate UTs.
    
    Modifications
    -------------
    In all tests if a hardcoded IP exists, they were moved to the App.Config.
    
    Results
    -------
    To run the tests outside of localhost, change the OperationTestAddress
    (ip+port) in the App.Config.
    
    Change-Id: I335102581f0765e73694ddbdc19b5f04c20728d6
    Reviewed-on: http://review.couchbase.org/47593
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @jeffrymorris

    Update management classes to use pools API

    jeffrymorris authored
    Motivation
    -----------
    The pools API gives all the information to construct the Cluster API
    calls. This commit uses that information to construct the REST calls and
    refactors/cleans up some duplicate code.
    
    Modifications
    -------------
    The ClusterManager now takes takes an IServerCOnfig in it's ctor and uses
    the Controllers values to construct the URI. The construction of the URI
    is now done by one of two methods: GetApiURI and GetBucketApiUri. The
    Controllers class was removed and replaced with a Controller class and the
    Pools class modified to use a Dictionary of Controller classes from the
    pools configuration.
    
    Result
    ------
    The Management API uses the correct source to generate it's URI's.
    Duplicate code has been refactored and is in general, easier to
    maintain.
    
    Change-Id: Id2749a3576a90b80c9b8934274503bf407b61fd4
    Reviewed-on: http://review.couchbase.org/47653
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  3. @simonbasle @jeffrymorris

    NCBC-811: Make operation lifespan configurable

    simonbasle authored jeffrymorris committed
    Motivation
    ----------
    Currently, operations have a lifespan, a timeout for the whole thing to
    finish. It is defined as Timeout property but its default value is in
    OperationBase'.cs (2500ms).
    This default value should be customizable, both programmaticaly and via
    the App.config file. It should also be possible to define it on a per
    bucket basis (overriding the value at cluster level).
    
    Modifications
    -------------
    Removed the DefaultTimeout in OperationBase' and made so that all ctors
    of operations now require the timeout.
    
    Added the notion of OperationLifespanTimeout in ClientConfiguration +
    BucketConfiguration (programmatic API) and in CouchbaseClientSection +
    BucketElement (app.config).
    Programmatic API will track if default value has changed and update the
    bucket config accordingly.
    
    Each bucket implementation will extract the default operation lifespan
    from the BucketConfiguration (and fallback to using ClientConfiguration
    if no bucket configuration matches) at instantiation. After that, each
    call to an operation except those that may already have passed in a
    timeout will use this default operation lifespan.
    
    KeyObserver and SaslFactory both require the timeout to create a few
    operations, but they don't have a reference to the configuration. They
    now have their own DefaultTimeout (set to 2500ms for backward compat.).
    
    All tests use a default 2500ms timeout, when possible defined in a
    parent class (like OperationTestBase.cs), except TimerTests and
    FakeOperation that use 500ms.
    
    Added a few tests to validate configuration behavior.
    
    Result
    ------
    WORK IN PROGRESS - need to fully run tests
    The lifespan timeout used by default for every operation can now be
    customized via configuration. Note that it only affect buckets created
    after the customization has been done as they cache the timeout value.
    
    Change-Id: If1f0e8faa44c9747f97152dca4bb855659ce0fed
    Reviewed-on: http://review.couchbase.org/47555
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Mar 2, 2015
  1. @weitaolee @jeffrymorris

    NCBC-801: Add async versions of all methods to BucketManager and Clus…

    weitaolee authored jeffrymorris committed
    …terManager
    
    Change-Id: I94eefb0a920b0e7b713fd55ad54e065a22e63bc7
    Reviewed-on: http://review.couchbase.org/46303
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Feb 27, 2015
  1. @simonbasle @jeffrymorris

    NCBC-816: Rework prepared statement API

    simonbasle authored jeffrymorris committed
    Motivation
    ----------
    In order to have coherence between the Java SDK and the .Net SDK, a
    rework of the Prepared Statement N1QL feature is needed. The new API
    will not involve transparent caching of prepared queries but will leave
    it to the user. The two steps of the process (preparing the plan and
    executing it) will be made explicit in the API (cf Java SDK).
    
    Modifications
    -------------
    Removed IPreparable and all references to it, removed all occurrences
    of caching.
    Added IQueryPlan interface. Added a method on IQueryClient to prepare
    a statement and obtain the associated IQueryPlan.
    Reworked IQueryRequest / QueryRequest to consider such a IQueryPlan the
    only source of prepared request (IsPrepared = true).
    Reworked actual query building and existing unit tests to reflect that.
    
    Result
    ------
    Doing a prepared query is now fully into the hands of the user who can
    decide when to best cache the plan he can now directly obtain.
    API is coherent with the Java SDK one.
    
    Change-Id: I90ed2b47806ff110ec787e6c293d16067ebd8450
    Reviewed-on: http://review.couchbase.org/47293
    Tested-by: Simon Baslé <simon@couchbase.com>
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Feb 25, 2015
  1. @simonbasle

    NCBC-802: Rename ConnectionTimeout to SendTimeout

    simonbasle authored simonbasle committed
    Motivation
    -----------
    For clarity and to align with other namings, rename ConnectionTimeout
    to SendTimeout in PoolConfiguration. The tuning should also be made
    possible at the App.config level.
    
    Modifications
    -------------
    Renamed the parameter in PoolConfiguration.
    Added a property for it in ConnectionPoolElement and let it be picked
    up by bucket configurations when constructing the ClientConfiguration.
    
    Added tests related to this parameter and ammended a few existing
    ones.
    
    Change-Id: I0211d44a5d01e6c462a463e33c6ec7a9dff2f082
    Reviewed-on: http://review.couchbase.org/47076
    Tested-by: Simon Baslé <simon@couchbase.com>
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @simonbasle

    NCBC-824: Cluster.OpenBucket honor pwd in config

    simonbasle authored simonbasle committed
    Motivation
    ----------
    Same as NCBC-818 for ClusterHelper, Cluster.OpenBucket(name) should try
    to use the password in ClientConfiguration.BucketConfigs if one is
    found there.
    
    Modifications
    -------------
    Cluster.OpenBucket(name) now peek into the ClientConfiguration and uses
    the password for bucket name if it can be found. Otherwise default to
    empty password (use OpenBucket(name, password) if you want to be sure).
    
    Added related test.
    
    Result
    ------
    If there's a password defined for the bucket in configuration, it is
    automatically picked up if no password is explicitely provided.
    
    Change-Id: I3c98112c2ed660902e1e54283dba7443b1ca1d03
    Reviewed-on: http://review.couchbase.org/47116
    Tested-by: Simon Baslé <simon@couchbase.com>
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Feb 20, 2015
  1. @simonbasle

    NCBC-818: use config's password in ClusterHelper

    simonbasle authored simonbasle committed
    If the configuration has a password defined for the requested bucket,
    ClusterHelper must use that password in the GetBucket overload where
    only the bucket name is specified.
    
    Change-Id: Ife99fcc77a1456973f61a66b3acc1a7efa1e67f8
    Reviewed-on: http://review.couchbase.org/47066
    Tested-by: Simon Baslé <simon@couchbase.com>
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Feb 8, 2015
  1. @jeffrymorris

    Flag connection as dead so it's not reused after IO exception

    jeffrymorris authored
    Motivation
    ----------
    If a connection throws an exception, we want to flag it as dead so that
    it's not reused. The connection will be cleaned up in the connection pool
    and not added back into the queue.
    
    Modifications
    -------------
    Before rethrowing an exception the connection is marked as dead.
    
    Result
    ------
    The connection will not be reused; instead it will free up a spot in the
    pool for a new connection to be created.
    
    Change-Id: I633786f9afeabee89aee2455c8ca2e713d681d2a
    Reviewed-on: http://review.couchbase.org/46564
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  2. @jeffrymorris @andreibaranouski

    Add missing configs for testing

    jeffrymorris authored andreibaranouski committed
    Motivation
    ----------
    Compilation error.
    
    Modifications
    -------------
    Added config files for Unit tests.
    
    Result
    ------
    Project will compile.
    
    Change-Id: I483a77e9d7e68bcdb82b38522c847e887fe42924
    Reviewed-on: http://review.couchbase.org/46565
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Andrei Baranouski <andrei.baranouski@gmail.com>
    Reviewed-by: Andrei Baranouski <andrei.baranouski@gmail.com>
Commits on Feb 7, 2015
  1. @jeffrymorris

    NCBC-810: Ensure NodeAdapter list uses order of ServersList for VBuck…

    jeffrymorris authored
    …et mapping
    
    Motivation
    ----------
    In CB 2.5, the nodes list order may change and be different from the
    ServerList usually during a rebalance in. When this happens, the client
    will recieve NMV's. This fix ensures that the nodes and serverlist are
    ordered the same. In addition, it makes the client more sensitive to
    config changes.
    
    Modifications
    -------------
    Sorting was added to the creation of the NodeAdapters based upon the
    ServerList. Doing this broke many unit tests, so it cascaded into a lot of
    changes to small util and extension classes. Unit tests were added to
    ensure VBucketForwardMaps were correctly being treated as a configuration
    change.
    
    Results
    -------
    There will be a reduction in NMV's and the client will rebound after a
    rebalance. There is still work to be done here, however.
    
    Change-Id: I8aaed8611d91338802b677ae833995cf7f6ae507
    Reviewed-on: http://review.couchbase.org/46554
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  2. @jeffrymorris

    NCBC-807: ops/sec drop to 0 during rebalance on 2.5 CB

    jeffrymorris authored
    Motivation
    ----------
    During a rebalance the client may receive many configurations, so many
    that it will all of it's time reconfigging. This fix ensures when a config
    change is discovered, the client will only update the VBucketServerMap if
    that is the only change, otherwise it will do a full reconfiguration.
    
    Modifications
    -------------
    The CouchbaseConfigContext was changed so that recreating the servers and
    the vbucket maps is done seperately and only when needed. Additionally,
    equals methods were added to make it easier to detect smaller config
    changes.
    
    Result
    ------
    The client will be much more efficient with respect to creating and
    destroying connections.
    
    Change-Id: Id80840d5182cfecce906e253583ebd9ae8ea010c
    Reviewed-on: http://review.couchbase.org/46481
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Feb 3, 2015
  1. @jeffrymorris

    NCBC-774: Ensure .NET SDK CAS behaviour is consistent with Java SDK 2.0

    jeffrymorris authored
    Motivation
    ----------
    We want to ensure that the behavior of the IBucket methods which operate
    on an IDocument<T> use CAS consistently between Java and C#.
    
    Modifications
    -------------
    IBucket.Replace(IDocument<T>) now uses CAS, Insert and Upsert do not. Any
    other method which uses a Key/Value overload has not been changed.
    
    Result
    ------
    The Java and .NET SDK's have the same Replace behavior for CAS: they use
    it; Insert and Upsert do not.
    
    Change-Id: Ib197704b2559a41c93e405ab6af19a5e3d029a3a
    Reviewed-on: http://review.couchbase.org/46296
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  2. @jeffrymorris

    NCBC-792: make BucketManager.GetDesignDocuments(bool) obsolete

    jeffrymorris authored
    Motivation
    ----------
    BucketManager.GetDesignDocuments(includeDevelopment=true) has been
    deprecated/made obsolete. The accompanying REST API that it wraps has no
    support for a includeDevelopment parameter and thus it is ignored.
    
    Modifications
    -------------
    BucketManager.GetDesignDocuments(bool) has been marked as obsolete. If
    called the parameter will be ignored.
    
    Result
    ------
    Use BucketManager.GetDesignDocuments() instead.
    
    Change-Id: I1ad8cdc1358f7efcd8cde23075e0fdc7b5e6216a
    Reviewed-on: http://review.couchbase.org/46295
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  3. @jeffrymorris

    NCBC-799: ServerUnavailableException after failing over node

    jeffrymorris authored
    Motivation
    ----------
    IBucket.CreateQuery will throw a ServerUnavailableException in certain
    cases. This patch changes how URIs are created so that exception are no
    longer thrown.
    
    Modifications
    -------------
    The client will no longer try to generate a URI during CreateQuery,
    instead it will defer the URI creation until after ExecuteQuery is called.
    Additionally, to support testing the IViewQuery interface has a new
    property called UseSsl which when enabled will generate urls with 'https'
    and that use port 18092. Additionally, IConfigInfo has a new bool property
    called SslConfigured which is used to set the UseSsl property of
    IViewClient. Finally, the Server.Send method for async has added logic for
    handling exceptions that are thrown so that the caller gets a
    Task<IOperationResult> instance.
    
    Results
    -------
    CreateQuery will no longer throw ServerUnavailableExceptions.
    Furthermore, the ViewQuery uri's can be tested in isolation.
    
    Change-Id: Icda3d0f983ccd51312ca8405e714747354bd4331
    Reviewed-on: http://review.couchbase.org/46292
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Feb 2, 2015
  1. @jeffrymorris

    NCBC-619: Make Socket connection timeout configurable

    jeffrymorris authored
    Motivation
    ----------
    The default socket connect timeout is around 20s, so if the client tries
    to connect to a node that's been removed from the cluster, then the app
    will wait this time before failing. This commit adds a new property called
    ConnectTimeout, which allows you to change this to a lower timespan. If
    you set it higher than the Socket's default, it will honor the socket's
    default and ignore the ConnectTimeout value.
    
    Modifications
    -------------
    The ClientConfiguration has a new property, ConnectTimeout. The
    DefaultConnectionFactory was nmodified to force a timeout based upon the
    value of the ConnectTimeout. The default was set to 10s (this may change
    in later releases).
    
    Results
    -------
    If set lower than the Socket's default timeout of 20s, the ConnectTimeout
    will force the client to abort a connection if it cannot be established by
    the value defined by ConnectTimeout.
    
    Change-Id: I00999cf644e5541e034927d1dd06091301322e0b
    Reviewed-on: http://review.couchbase.org/46185
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Jan 31, 2015
  1. @simonbasle @jeffrymorris

    NCBC-800: fix encoding of query params and test

    simonbasle authored jeffrymorris committed
    Motivation
    ----------
    Query spec sometimes specifies that a parameter must be JSON, but most
    of them are not. Despite that, some (like compression) are encoded in
    QueryRequest.cs as JSON then urlencoded.
    
    Scan_consistency is also badly rendered in the GET url, for example the
    REQUEST_PLUS consistency is rendered as RequestPlus, which is rejected
    by the server.
    
    Modifications
    -------------
    Parameters that should be plainly encoded are not serialized to JSON
    anymore, parameters that should actually be JSON encoded are (except
    for scan_vector which haven't been tested).
    
    Tests have been put in place to check that this encoding is well done
    in GetFormValues(), that GetQueryParameters() is a simple appending of
    GetFormValues() and that GetRequestUri()'s http parameters corresponds
    to GetQueryParameters() output.
    
    Result
    ------
    Query parameter encoding better following N1QL DP4 specifications.
    
    Change-Id: I1d94bcbc2364c5210e61ccd9a6d3f7db9a5c1c03
    Reviewed-on: http://review.couchbase.org/46141
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
  2. @jeffrymorris

    Add ctor to QueryRequest for 'statement'

    jeffrymorris authored
    Motivation
    ----------
    When you create a request for a N1QL query, it makes sense to provide a
    ctor overload for QueryRequest to take a string statement.
    
    Modifications
    -------------
    Added ctor overload to QueryRequest and cleaned up formatting issue in
    QueryRequest.
    
    Result
    ------
    Using the API is more intuitive.
    
    Change-Id: Ic2f5d81247718161b4509882d0fae3540599442d
    Reviewed-on: http://review.couchbase.org/46006
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  3. @jeffrymorris

    Add IDocumentResult interface for operations that do return content

    jeffrymorris authored
    Motivation
    ----------
    Certain operations do not return content, Remove for example. This commit
    adds an additional interface to support this use-case.
    
    Modifications
    -------------
    A new interface IDocumentResult was added which implements IResult, but
    adds the ResponseStatus field. IDocumentResult<T> implements this
    interface.
    
    Result
    ------
    This is mainly to help with testing.
    
    Change-Id: I2c6a7e6eb5c01e718786636036b983f27dceac8a
    Reviewed-on: http://review.couchbase.org/45952
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  4. @jeffrymorris

    NCBC-797: Client throws JsonSerializationException on Mono during boo…

    jeffrymorris authored
    …tstrapping
    
    Motivation
    ----------
    Using Mono and a non-Windows platform, the client will throw an
    NotImplementedException which will be rethrown by NewtonSoft as a
    JsonSerializationException. This is a Mono bug in that the getter is not
    implemented:
    http://mono.1490590.n4.nabble.com/Not-implemented-exceptions-in-Getters-td4663304.html
    
    Modifications
    -------------
    In Cluster.LogConfigurationAndVersion the exception is caught and logged
    under INFO.
    
    Result
    ------
    The exception will no longer be thrown by the client.
    
    Change-Id: I9fbb4a0342c8deb8ab5d780dc0bce523fc9bdf48
    Reviewed-on: http://review.couchbase.org/45951
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
    Tested-by: Patrick Varley <patrick@couchbase.com>
  5. @jeffrymorris

    NCBC-788: Fix 'LogManager.GetCurrentClassLogger() is obsolete' compil…

    jeffrymorris authored
    …er warning
    
    Motivation
    ----------
    After upgrading to Common.Logging 3.0 the GetCurrentClassLogger has become
    obsolete. This changes the code to use the GetLogger method instead.
    
    Modifications
    -------------
    In all places where LogManager.GetCurrentClassLogger() was found, the code
    was changed to call LogManager.GetLogger.
    
    Result
    ------
    The compiler warning no longer is generated.
    
    Change-Id: I9e3248f6df1dfb1aa4f8a51d823d22efe9b6d7aa
    Reviewed-on: http://review.couchbase.org/45842
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  6. @jeffrymorris

    Make Couchbase.Tests.Management uses localhost

    jeffrymorris authored
    Motivation
    ----------
    The App.Config was using a VM IP for it's tests.
    
    Modifications
    -------------
    All IP's in the App.Config were changed to localhost.
    
    Result
    ------
    The tests will use localhost.
    
    Change-Id: I4a612aea72007187882a9fa763d724b8ebc2b170
    Reviewed-on: http://review.couchbase.org/45807
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
Commits on Jan 26, 2015
  1. @jeffrymorris

    Make noop use GetLengthSafe on Key

    jeffrymorris authored
    Motivation
    ----------
    The noop operation overrides a base method passing in null values
    resulting in an NullReferenceException for the Key field.
    
    Modifications
    -------------
    Change noop to use GetLengthSafe instead of GetLength so that NRE is no
    thrown if Key is null (which it always will be for a noop).
    
    Result
    ------
    A NullReferenceException will not be thrown.
    
    Change-Id: Ibe510bb2b21cf2bf1013521a88d2e6641a9350a3
    Reviewed-on: http://review.couchbase.org/45804
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  2. @jeffrymorris

    Make unit test use App.Config values

    jeffrymorris authored
    Motivation
    ----------
    This unit test was using a hardcoded IP and port.
    
    Modifications
    -------------
    The unit test now uses the App.Config settings.
    
    Result
    ------
    Test no longer fails when IP changes for the test in the App.Config.
    
    Change-Id: Iddf81efecaf3e0776436f39d369d68de4cbb1f86
    Reviewed-on: http://review.couchbase.org/45803
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Simon Baslé <simon@couchbase.com>
  3. @jeffrymorris

    Update README.md

    jeffrymorris authored
    Change-Id: I6258c36e83133ddfe93633ced7bb35ab6dda672f
    Reviewed-on: http://review.couchbase.org/45896
    Reviewed-by: Matt Ingenthron <matt@couchbase.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jan 24, 2015
  1. @honestegg @jeffrymorris

    NCBC-793: Make config thread for HttpStreamingProvider a background t…

    honestegg authored jeffrymorris committed
    …hread
    
    Motivation
    ----------
    If cluster object is properly disposed on a MemcachedBucket or
    CouchbaseBucket where CCCP has failed, the configuration thread for
    HttpStreamingProvider will hang indefinitly, since it's a foreground
    thread.
    
    Modifications
    -------------
    The configuration thread in ListenForConfigChanges is now a background
    thread. A new MemcachedBucketTests_Isolated class was added for tests in
    which the usual SetUp/TearDown methods should not be run.
    
    Result
    ------
    The process will no longer hang if the configuration thread has not
    properly been shutdown by the Dispose method.
    
    Use a background thread for ListenForConfigChanges so that the main
    process isn't prevented from terminating.
    
    Change-Id: I72b9e6338da313b46d24cc4124f027b780cb12c6
    Reviewed-on: http://review.couchbase.org/45825
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Commits on Jan 23, 2015
  1. @jeffrymorris

    NCBC-756: N1QL DP4 support for the .NET SDK

    jeffrymorris authored
    Motivation
    ----------
    This commit adds support for N1QL DP4. The following features are
    supported: statements, prepared statements, timeout, readonly, metrics,
    positional and named parameters, signature, errors, client context id.
    Anything else may or may not work as expected.
    
    Modifications
    -------------
    A new class for creating the N1QL REST API request was added called
    QueryRequest. The QueryClient was rewritten and improved to support
    requests generated by the QueryRequest class. Support for metrics and
    errors was added.
    
    Result
    ------
    NQ1L queries can be executed by the client assuming that the N1QL DP4
    support is running in the environment. Please see here to do
    this: http://www.couchbase.com/nosql-databases/downloads#PreRelease.
    
    Change-Id: I28fc895d38b5089c36c01ac06f8b47b566fcc09e
    Reviewed-on: http://review.couchbase.org/45799
    Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Something went wrong with that request. Please try again.