History log of /Couchbase_NET_Client_v3.0/src/Couchbase/Core/IO/Operations/GetK.cs (Results 1 - 14 of 14)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: 3.2.5, 3.2.5-DI, 3.2.4, 3.2.3, 3.2.1, 3.2.0, 3.1.7, 3.1.5, 2.7.25, 3.1.4, 2.7.24, 3.1.3
# 1a28374e 04-Feb-2021 Brant Burnett <bburnett@centeredgesoftware.com>

NCBC-2813: Cleanup IOperation and OperationBase code

Motivation
----------
Reduce DLL size, improve performance, and reduce complexity (and
therefore the risk of future bugs).

NCBC-2813: Cleanup IOperation and OperationBase code

Motivation
----------
Reduce DLL size, improve performance, and reduce complexity (and
therefore the risk of future bugs).

Modifications
-------------
Remove members from IOperation and IOperation<T> which are not used via
the interface. Also make properties readonly which are never set via the
interface. Organize members better, add XML doc comments, and enable
nullable reference types.

Remove unused members from OperationBase, and adjust the visibility of
members to be the minimum required. Remove the virtual keyword from
members that are never overridden, and remove no-op overrides from
descendants. Organize the members and add XML doc comments.

Since IRequest.Idempotent and IOperation.IsReadOnly are basically the
same thing, remove the implementation of Idempotent and forward the
requests to IsReadOnly. This also drops a backing field.

Drop backing fields from ClientContextId and Statement, which are never
set on operations.

Drop IsReplicaRead in favor of making ReplicaIdx nullable.

Drop GetResultWithValue returning IOperationResult<T> since every call
site was only reading .Content, which is available directly from
GetValue(). This allowed removing several other supporting methods that
were effectively unused, such as GetMessage() and its supporting
methods.

Drop ErrorMap/ErrorCode handling from reading the operation header, as
this was unused.

Renamed IOperation.GetConfig to ReadConfig to be more clear.

Results
-------
- Smaller DLL due to removed unused code
- There should be a marginal performance gain because OperationBase is
smaller, reducing memory allocations and cost to zero memory
- There should also be a marginal performance gain due to elimating a
few virtual method calls
- The code is much cleaner and easier to understand, which should make
further work in this area easier and less likely to introduce bugs

Change-Id: Ib5836078440e26ba1417efe4b46c95e9b04d1df9
Reviewed-on: http://review.couchbase.org/c/couchbase-net-client/+/145154
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


Revision tags: 3.1.2, 2.7.23, 3.1.1, 3.1.0, 2.7.22, 3.0.7, 3.0.5, 2.7.20, 3.0.4, 2.7.19, 3.0.3, 3.0.2, 3.0.1, 2.7.18, 2.7.17
# 55520e40 01-Apr-2020 Brett Lawson <brett19@gmail.com>

NCBC-2454: Replicas should be tracked separate from vbuckets.

Motivation
----------
The existing implementation utilized the vbucket index to hold the
replica index while the ope

NCBC-2454: Replicas should be tracked separate from vbuckets.

Motivation
----------
The existing implementation utilized the vbucket index to hold the
replica index while the operation is being transitioned from the high
level operation creation down to operation dispatch. This caused
issues when operations were retried as the replica index was lost and
then miss-used for a replica index lookup when it was in fact a
vbucket index at that point.

Changes
-------
Implemented a new parameter on the operation which tracks the replica
index target of an operation and modified all usages of VbucketId
relating to replica indexes to use it.

Change-Id: I5bf9d0789f3ed9e6dc202da44d9a81a90b2d401a
Reviewed-on: http://review.couchbase.org/c/couchbase-net-client/+/124780
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Matt Ingenthron <ingenthr@gmail.com>

show more ...


Revision tags: 3.0.0, 2.7.16, 3.0.0-beta4, 3.0.0-beta3, 2.7.14, 3.0.0-beta2
# e308481b 07-Nov-2019 Jeff Morris <jeffry.morris@couchbase.com>

NCBC-2174: Port Error Map from 2.X and integrate into 3.x

Motivation
----------
Removes legacy namespace and enables operations to use the ErrorMap
after processing.

Mod

NCBC-2174: Port Error Map from 2.X and integrate into 3.x

Motivation
----------
Removes legacy namespace and enables operations to use the ErrorMap
after processing.

Modifications
-------------
- Move Couchbase.Core.IO.Operations.Legacy to Couchbase.Core.IO.Operations
- Hook up ErrorMap in operation completed callback
- Write unit tests

Result
------
ErrorMap is now used to add additional error information to Exceptions
if thrown.

Change-Id: I93a9d741613a16a7d1c202392e2e3e4b84f4a659
Reviewed-on: http://review.couchbase.org/117475
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: David Nault <david.nault@couchbase.com>

show more ...


Revision tags: 3.0.0-beta1, 2.7.12, 2.7.11, 2.7.10, 2.7.9, 2.7.8, 3.0.0-alpha4, 3.0.0-alpha3, 2.7.7, 2.7.6, 3.0.0-alpha2, 3.0.0-alpha1
# 43cf091c 08-Mar-2019 Mike Goldsmith <goldsmith.mike@gmail.com>

NCBC-1857: Move SDK v3 source into Gerrit

MOTIVATION
----------
The .NET SDK v3 development was taking place in another repository.
This should be moved to the main repository.

NCBC-1857: Move SDK v3 source into Gerrit

MOTIVATION
----------
The .NET SDK v3 development was taking place in another repository.
This should be moved to the main repository.

MODIFICATIONS
-------------
- migrate .NET SDK v3 to gerrit

RESULT
------
The SDK v3 source code for .NET is now on Gerrit.

Change-Id: Id8eaa49dba3d10fd9069f6377160f4ebec8586e2
Reviewed-on: http://review.couchbase.org/105924
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...


Revision tags: 2.7.5, 2.7.3, 2.7.2, 2.7.1, 2.7.4, 2.7.0, 2.6.2, 2.6.1, 2.6.0, 2.5.12, 2.5.11, 2.5.10, 2.6.0-beta, 2.5.9, 2.5.8, 2.5.7, 2.5.6, 2.6.0-dp1, 2.5.5, 2.5.4, 2.5.3, 2.5.2, 2.5.1
# 7d8db365 03-Oct-2017 Mike Goldsmith <goldsmith.mike@gmail.com>

NCBC-1524: Add missing license information

MOTIVATION
----------
All files in the Couchbase SDK should have appropriate license
information. This is done using a LICENSE file in

NCBC-1524: Add missing license information

MOTIVATION
----------
All files in the Couchbase SDK should have appropriate license
information. This is done using a LICENSE file in the root of the
repository and each file should have a region at the end with
license details.

MODIFICATIONS
-------------
- add LICENSE file to root of repository with license information
- add missing license region to all files in Couchbase project

RESULT
------
License information is now available both through a LICENSE file in the
root of the repository and in each file in the Couchbase project.

Change-Id: I271da98ef2d5491ed2e12f547397833a075c9e8f
Reviewed-on: http://review.couchbase.org/83959
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...


Revision tags: 2.5.0, 2.4.8, 2.4.7, 2.4.6
# 79298113 15-May-2017 Mike Goldsmith <goldsmith.mike@gmail.com>

NCBC-1340: Add KV error map retries

MOTIVATION
----------
As part of the KV Error Map feature, retry strategies will be provided
and should be used to handle failed operations. T

NCBC-1340: Add KV error map retries

MOTIVATION
----------
As part of the KV Error Map feature, retry strategies will be provided
and should be used to handle failed operations. The retry strategies
will form part of the Error Map provided by the server.

MODIFICATIONS
-------------
- Extend ErrorMap to implement Retry strategies
- Extend OperationBase to get next retry interval using ErrorCode for
  failed operations
- Copy ErrorCode during all operation Clone methods
- Add integration tests to verify retry strategy behaviours against
  CouchbaseMock

RESULT
------
The error map has been extended to include retry strategies and failed
KV operations can now use the ErrorMap to determine if they
should implement a retry strategy. There are three retry strategies,
constant, linear and exponential.

Change-Id: I7558b5a733db2cd4cdb834a221429c067fbeca59
Reviewed-on: http://review.couchbase.org/78970
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...


Revision tags: 2.4.5
# 19cd1979 02-May-2017 jeffrymorris <jeffrymorris@gmail.com>

NCBC-1410: Ensure bucketName is cloned for retries

Motivation
----------
If the BucketName is null for an operation when it fails and is retried, a
NullReferenceException will be

NCBC-1410: Ensure bucketName is cloned for retries

Motivation
----------
If the BucketName is null for an operation when it fails and is retried, a
NullReferenceException will be caught and handled. This patch will ensure
that the bucektName is not null.

Modifications
-------------
Update all operations that are retriable so that the Clone() method clones
the bucketName as well.

Results
-------
Retriable operations will have a bucketName so that the response can be
mapped to the appropriate bucket if a config refresh is required.

Change-Id: I317c348af8edf3a88b46670dea6b6acbb9532538
Reviewed-on: http://review.couchbase.org/77629
Reviewed-by: Jaekwon Park <jaekwon.park@couchbase.com>
Tested-by: Jaekwon Park <jaekwon.park@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...


Revision tags: 2.4.3, 2.4.2, 2.4.1, 2.4.0, 2.3.11, 2.3.10, 2.3.9, core-dp1, 2.3.8
# 7eff8cd8 12-Aug-2016 Mike Goldsmith <goldsmith.mike@gmail.com>

NCBC-1141: When Id is not present in doc fail-fast

MOTIVATION
----------
Whenever mn insert, replace, append or prepend command is executed without a
key property an exception is

NCBC-1141: When Id is not present in doc fail-fast

MOTIVATION
----------
Whenever mn insert, replace, append or prepend command is executed without a
key property an exception is thrown during serialization. It would be
better to fail-fast if the key was null or empty.

Whenever an operation that requires a key is executed without a valid
key an exception is thrown during serialization. It would be better to
fail-fast and throw an exception when the operation is created with an
invalid key.

MODIFICATIONS
-------------
Add new KeyException that sets the message to "Key cannot be null or
empty.".

Thorw KeyException during construction if key is null or empty for:
- Get, GetL, GetQ, GetQ and GetT
- Hello
- Add, Append, Decrement, Delete, Prepend, Replace and Set
- Observe
- ReplicaRead
- Touch
- Unlock

- All Subdocument operations

Added tests to prove a null or empty key throws for each operation type
correctly.

Also added local.config to .gitignore so we can have local appSettings
that don't need to be added to source control.

RESULT
------
If an insert command is executed without a valid key the operation now
fails quickley before trying to serialize the operation.

Change-Id: I8a155c6909204ac60059b1c4ce3becddd3153510
Reviewed-on: http://review.couchbase.org/66725
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...


Revision tags: 2.3.5, 2.3.3, 2.3.1, 2.3.0, 2.3.6
# d3892232 15-Apr-2016 jeffrymorris <jeffrymorris@gmail.com>

NCBC-1061: Improve vBucket Retry Logic

Motivation
----------
Make the .NET Not My VBucket (NMV) behavior consistent with others SDK's
per RFC:0005_vbucket_retries.

Modif

NCBC-1061: Improve vBucket Retry Logic

Motivation
----------
Make the .NET Not My VBucket (NMV) behavior consistent with others SDK's
per RFC:0005_vbucket_retries.

Modifications
-------------
Make overload for GetServer take a cluster map rev # which is that latest
revision that the operation was executed against that uses the VBucket
forward map if it's available on a retry, otherwise uses the regular
VBucket Map. Change the rev# on various classes to be a unsigned integer
since a rev # should always be a positive integer. Update various code
paths so that the rev# is included with each operation retry.

Results
-------
Client will use the VBucket Forward Map if it's available if a NMV is
returned by the server, but only if the rev # hasn't changed, otherwise it
will use the regular VBucket Map.

Change-Id: I47d1806092ecce0ab59cf07ed614380d7c8bba6a
Reviewed-on: http://review.couchbase.org/62881
Reviewed-by: Simon Baslé <simon@couchbase.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...


Revision tags: 2.2.7, 2.2.8, 2.2.6, 1.3.13, 2.2.4, 2.2.5, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.2.0-dp1, 2.1.4, 2.1.3, 2.1.2, 2.1.1, 2.1.0
# 8108e5a6 18-Apr-2015 jeffrymorris <jeffrymorris@gmail.com>

NCBC-676: Make JSON Serializer "Pluggable"

Motivation
----------
The Couchbase .NET SDK uses JSON.NET as the default serializer and it
previously was tightly coupled to the inter

NCBC-676: Make JSON Serializer "Pluggable"

Motivation
----------
The Couchbase .NET SDK uses JSON.NET as the default serializer and it
previously was tightly coupled to the internals of the client. This commit
makes it possible to create and plug-in custom serializers using whatever
serialization dependency you chose to use.

Modifications
-------------
A new interface, ITypeSerializer, was added that defines the methods which
need to be implemented by your custom serializer. A default serializer
that uses JSON.NET was added; it is aptly named the DefaultSerializer. A
SerializerFactory was added that returns Func<ITypeSerializer> objects;
the configuration has added support for creating ITypeSerializers from a
<serializer type="" name=""/> element in the App.Config. Finally, the
constructors of all operations were refactored so that they used the value
returned by the Func<ITypeSerializer>.

Results
-------
Now, if the DefaultSerializer based off JSON.NET does not suit your fancy,
you can create a custom one (ServiceStack.Text, Jil, etc) and inject it into the client.

Change-Id: If765552821cbea6b19e14f5e61032a7ff38f1434

Conflicts:
Src/Couchbase/CouchbaseBucket.cs
Src/Couchbase/MemcachedBucket.cs
Change-Id: I8cfcd71e45ab8e575c21971380b71246ecd81823
Reviewed-on: http://review.couchbase.org/50209
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...


Revision tags: 1.3.12
# 0ba3f4aa 31-Mar-2015 jeffrymorris <jeffrymorris@gmail.com>

NCBC-842: Add overloads for non-generic SendWithRetry and SendWithRetryAsync

Motivation
----------
Certain operations, Touch for example, do not have a body, thus the
generic Typ

NCBC-842: Add overloads for non-generic SendWithRetry and SendWithRetryAsync

Motivation
----------
Certain operations, Touch for example, do not have a body, thus the
generic Type parameters are meaningless. In the past, a placeholder Type
was used. In this commit we are changing the requirement for place holder
types by providing non-generic operations and execution flows.

Modifications
-------------
OperationBase<T> was refactored into two classes: a non-generic and a
generic version. Operations with no body inherit from the non generic one.
The Clone method was changed to be non-generic. The IRequestExecutor
interface and implementations, the IServer and it's implmentation, and
IIOstrategy were updated to support the non-generic operations as well.

Result
------
Placeholder types no longer need to be used for non-generic operations.
Specialization and cohesion have been improved.

Change-Id: I12de8cb3e4cc7e79767175dfdea08823ca19fbc0

Conflicts:
Src/Couchbase/Core/Buckets/IRequestExecuter.cs
Change-Id: I33ac14d83a74c3540a3ef918e0658f18617f5604
Reviewed-on: http://review.couchbase.org/49142
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...


Revision tags: 2.0.3
# a53409d9 02-Mar-2015 Simon Baslé <simon.basle@gmail.com>

NCBC-811: Make operation lifespan configurable

Motivation
----------
Currently, operations have a lifespan, a timeout for the whole thing to
finish. It is defined as Timeout prop

NCBC-811: Make operation lifespan configurable

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>

show more ...


Revision tags: 1.3.11, 2.0.2, 2.0.1, 2.0ga
# e4fbacc6 02-Dec-2014 jeffrymorris <jeffrymorris@gmail.com>

Provide clone overrides for each operation

Motivation
----------
Add a clone override for each operation so that the operation can be
cloned and it's (select) internal state pres

Provide clone overrides for each operation

Motivation
----------
Add a clone override for each operation so that the operation can be
cloned and it's (select) internal state preserved. This is useful for
operation's that have failed for example with a NMV and will be retried.

Modifications
-------------
Override the virtual Clone method and provide's an operation specific
implementation.

Result
------
An operation can be cloned with operation specific fields preserved. The
following fields are typically included: key, value (if exists), CAS,
CreationTime and VBucket.

Change-Id: Ifafcff0b8e83d5cc471fe8863aa5853fba613205
Reviewed-on: http://review.couchbase.org/43860
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Brett Lawson <brett19@gmail.com>

show more ...


# 1569dbca 07-Nov-2014 jeffrymorris <jeffrymorris@gmail.com>

NCBC-711: Add support for GetL, Unlock and provide GetWithLock impl on IBucket

Change-Id: Ibd33d0ece5bf7408f0d4291408c9c1b1821b5f19
Reviewed-on: http://review.couchbase.org/42912
Rev

NCBC-711: Add support for GetL, Unlock and provide GetWithLock impl on IBucket

Change-Id: Ibd33d0ece5bf7408f0d4291408c9c1b1821b5f19
Reviewed-on: http://review.couchbase.org/42912
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>

show more ...