[NCBC-437] Publish docs for .NET April 2014 release Created: 18/Apr/14  Updated: 18/Apr/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Critical
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-436] Revieve error when I and try and access a view through the .net SDK Created: 18/Apr/14  Updated: 18/Apr/14

Status: In Progress
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.4
Fix Version/s: 1.3.5

Type: Task Priority: Critical
Reporter: sglazer Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: 64bit Windows 7 I am running in a WCF service with target framework 4.5

Attachments: PNG File Couchbase.png    

 Description   
sample documents:

{
  "type": "UserWebsiteProperties",
  "url": "http://google.com",
  "keywords": [
    "k1",
    "k2",
    "k3",
    "k4",
    "k5"
  ]
}

{
  "type": "UserWebsiteProperties",
  "url": "http://www.test.com",
  "keywords": [
    "k1",
    "k2",
    "k2",
    "video1",
    ""
  ]
}

Map Function:
function (doc, meta) {
  if (doc.type && doc.type == "UserWebsiteProperties" && doc.keywords) {
     emit(doc.url, null);
  }
}

c# code:

 public KeywordList GetAllKeywords()
        {
            var client = CouchbaseManager.Instance;
            var view = client.GetView("_design/keywords", "keywords", true);
            
            var count = view.Count();
            foreach (var row in view)
            {
                var key = row.Info["key"];
            }

            
            return new KeywordList();
        }

Error Result:

Message: Query failed for view keywords in design document _design/keywords

Reason: attachments not supported in Couchbase

Stacktrace: at Couchbase.CouchbaseViewHandler.d__0`1.MoveNext()
at SEOServices.Service1.GetAllKeywords() in c:\Users\Stephen\Desktop\SEO\Services\SEO Services\SEOServices\Service1.svc.cs:line 32
at SyncInvokeGetAllKeywords(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
- See more at: http://www.couchbase.com/communities/q-and-a/net-client-getview-not-working#sthash.MRr0wTgI.dpuf







 Comments   
Comment by sglazer [ 18/Apr/14 ]
Please note: I'm querying the production version of the view in the code: var view = client.GetView("_design/keywords", "keywords", true); but posted a screen shot of the development view. They are the same in both and the error occurs regardless of which version of the view I use. Also a bit more code in case you need it: ublic static class CouchbaseManager
    {
        private readonly static CouchbaseClient _instance;

        static CouchbaseManager()
        {
            _instance = new CouchbaseClient();
        }

        public static CouchbaseClient Instance { get { return _instance; } }
    }
Comment by Jeff Morris [ 18/Apr/14 ]
It's a bug...the client is emitting a url that looks like this:
http://127.0.0.1:8092/default/_design/_design/keywords/_view/keywords

instead of:
http://127.0.0.1:8092/default/_design/keywords/_view/keywords

Can you try installing 1.3.3 and see if you can reproduce it? You may need to revert to 1.3.3 or even 1.3.1 - I'll have a patch pretty soon, if you need it I can do a verification fix.
Comment by Jeff Morris [ 18/Apr/14 ]
Actually, it's not a bug :) well, it's a bug on the users side: you are passing in "_design/keywords" as your design document, when all you need is "keywords". The "_design" portion is an API abstraction and not needed (the API will construct the url and add it). This will work:

var view = client.GetView("keywords", "keywords", true);

That being said, i think we should go ahead and remove the "_design" portion if it's added like this given the level of confusion it causes. The error message returned by the server was less that helpful.

Thanks,

Jeff
Comment by sglazer [ 18/Apr/14 ]
Thanks again for the speedy response Jeff. I would be happy to try installing 1.3.3 and letting you know what happens.I'm not exactly sure what a verification fix is but anything that can get me over this hump so that I can continue working with views would be great. I'll try 1.3.3 in the meantime. Can I use NUGET to intall that version?

Stephen
Comment by sglazer [ 18/Apr/14 ]
Thanks Jeff that did the trick. I apologize if I wasted your time but I used some posted sample code as a reference and the error message definitely threw me for a loop. Great job and thanks a ton for the help.




[NCBC-435] Create suite of Mocks/Fakes for running unit tests in isolation Created: 12/Apr/14  Updated: 13/Apr/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: backlog-2.0
Fix Version/s: None

Type: Story Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
As a tester/developer
I want a library of Mocks/Fakes
So that I can run the entire test suite *without requiring a CB instance

*There are some feasibility constraints to do this 100%. Likely, we will have two or more classifications of tests and they will have different environment requirements - i.e. integration tests will be run against a cluster and "pure" unit tests against the mocks/fakes. Note that we can use attributes (annotations) to define these classifiers.

 Comments   
Comment by Matt Ingenthron [ 13/Apr/14 ]
Definitely talk with Brett about CAVES on this one.




[NCBC-434] add feature test ensuring that E2BIG is returned on append above 20MB Created: 07/Apr/14  Updated: 11/Apr/14

Status: In Progress
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.4
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Saakshi Manocha
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on MB-10778 Append do not return the correct erro... Resolved

 Description   
When continuing to append beyond the maximum value of 20MByte, we should verify that applications receive the correct error response.




[NCBC-433] Doc: Troubleshooting guide is lacking. Created: 07/Apr/14  Updated: 07/Apr/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Patrick Varley Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://docs.couchbase.com/couchbase-sdk-net-1.3/#troubleshooting





[NCBC-432] Doc: Expand the maxPoolSize and minPoolSize description Created: 07/Apr/14  Updated: 07/Apr/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Patrick Varley Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: documentation
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://docs.couchbase.com/couchbase-sdk-net-1.3/#configuring-the-net-client-library


 Description   
It would be good to expand the maxPoolSize and minPoolSize lines to expand that it is per a node in the cluster.




[NCBC-431] Doc: Sockpool Formatting wrong. Created: 07/Apr/14  Updated: 07/Apr/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 1.3.4

Type: Bug Priority: Minor
Reporter: Patrick Varley Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: documentation
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://docs.couchbase.com/couchbase-sdk-net-1.3/#configuring-the-net-client-library


 Description   
I think *sockpool* with *minpoolsize* and *maxpoolsize* is meant to be a bullet point with sub bullet points.


Ethier way the minpoolsize line is not formatted correctly.




[NCBC-430] Docs: unclear text in .net API ref page Created: 21/Mar/14  Updated: 16/Apr/14  Resolved: 16/Apr/14

Status: Closed
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Cihan Biyikoglu Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The formatting of the number 253 is broken on the page under store methods;

http://docs.couchbase.com/couchbase-sdk-net-1.2/

Store Methods¶

The Store() methods add or replace a value in the database with the specified key.

The behavior of Store and ExecuteStore operations is defined by setting the first parameter to a value from the StoreMode enumeration.
    StoreMode.Add - Add a key to the database, failing if the key exists
    StoreMode.Replace - Replace a key in the database, failing if the key does not exist
    StoreMode.Set - Add a key to the database, replacing the key if it already exists

JavaScript can store numbers up to a maximum size of 2 53. If you are storing 64-bit integers within Couchbase and want to use the numbers through the Map/Reduce engine, numbers larger than 2 53 should be stored as a string to prevent number rounding errors.

 Comments   
Comment by Ruth Harris [ 04/Apr/14 ]
Hi Amy, you want to take this one?
Comment by Amy Kurtzman [ 07/Apr/14 ]
Sure, it's another lingering bug from the DocBook to markdown conversion.
Comment by Amy Kurtzman [ 07/Apr/14 ]
Fixed in version 1.3 and 1.2 documentation.




[NCBC-429] Documentation in tutorial mentions RESTsharp, which is no longer used/needed Created: 07/Apr/14  Updated: 16/Apr/14  Resolved: 16/Apr/14

Status: Closed
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.4
Fix Version/s: 1.3.5, 1.3.6

Type: Task Priority: Critical
Reporter: Jeff Morris Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
This section needs to be updated:
http://docs.couchbase.com/couchbase-sdk-net-1.3/#setting-up-a-project




[NCBC-428] Refactor URI creation across all HTTP endpoints Created: 01/Apr/14  Updated: 01/Apr/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Task Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The current source is a mishmash of different ways to create uri's on the fly for configs, view requests, and query requests. This needs to be better thought and implemented or else we'll have a maintenance nitemare.




[NCBC-426] Memory leak and application pool shutdown after Impersonation error Created: 28/Mar/14  Updated: 28/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.3.4
Fix Version/s: None

Type: Bug Priority: Critical
Reporter: Alain Quirion Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Windows 2008 Server R2

Attachments: Text File error-log Bug 14h 13min 31sec.txt    

 Description   
I'm using client version 1.3.4 and server version 2.1.1

After several investigation and some help from a community member, here is the conclusions I have.

My application pool running my web app inside the windows process (w3wp) has a memory leak of some kind only when I use couchbase. Without couchbase, the process is really stable (private memory around 400Mb, CPU rarely over 75, most of the times around 10). But when I do use couchbase, private memory doesn't stop growing up to 900Mb and the CPU is almost always over 75 (some from sigar and erl process, and some from w3wp).

I have 3 web server in a farm and I installed couchbase server on all of them so the 3 web servers can make calls to all 3 couchbase server which in my case are the same servers. Maybe this is the problem but I tried using only 1 server for couchbase and 2 web servers with the exact same result so I guess this was not the problem.

After a while, even with a really small load on the server (couple users), the application pool process throws an error.

An unhandled exception occurred and the process was terminated. Exception: System.TypeInitializationException Message: The type initializer for 'Enyim.Caching.MemcachedClient' threw an exception. StackTrace: at Enyim.Caching.MemcachedClient.Finalize() InnerException: System.Web.HttpException Message: An error occurred while attempting to impersonate. Execution of this request cannot continue.

I also receive a system warning in my event viewer saying this :

A process serving application pool 'my application pool name' suffered a fatal communication error with the Windows Process Activation Service. The process id was '6944'. The data field contains the error number.

The application pool process restarts at the same time.

This happens every 20-30 minutes with a small load. But with a big load, this happens every 2-3 minutes and cause my application pool to stop. I can disable the rapid fail protection to be sure my application pool never stops but this doesn't solve my problem.

My web app only does Get, Store, Remove calls. My CouchBaseClient is a static member of a singleton object and is used by the data access layer before and after calls to the database (if needed). When i go check the couchbase console, I see that the couchbase server does not have a lot of data. Around 2000 objects and only 3-4Mb under a big load. I also have around 500-900 Page faults (no minor no major).

I do not use impersonation anywhere. I even tested it to see which user is running my app before calling a couchbaseclient method and the user is "IIS APPPool\My Application Name" which is normal with IIS7.

Does Couchbase/memcached use impersonation somewhere and this user should have specific privileges ? The community member who helped me think that for some reason a problem could occur inside memcached during impersonation (why ? I dont know) and this would cause all TCP connection to close...which could lead to a severe exception because my application pool user doesn't have the rights to do this.

Which privileges should I give to my user or why there's an impersonation problem inside MemcachedClient.Finalize.

The community member also told me that the Finalize method should not be called if .Dipose() is called before. So I added the call to .Dipose() inside the Application_End method but that didn't change anything. Why and when would .Finalize be called in the first place ? With a better anwser to that, I could add .Dispose somewhere else.

Finally, I added Log4Net and was able to log the error.

Also, I did increase the number of ephemeral ports allowed on the server to 60 000. In fact, I answered Yes when ask during installation process and restart the server. I don't know where to check if it was done properly or not.

In the attached log file, the error happens at 14h 13mins 31secs




[NCBC-425] SetSocketOption throws exception under mono runtime Created: 28/Mar/14  Updated: 01/Apr/14  Resolved: 01/Apr/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.5

Type: Bug Priority: Major
Reporter: Bowie Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: MacOSX, mono
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: mono runtime


 Description   
the code "socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, true);" in SocketPool.cs throws exception under mono runtime

The correct code should like this:

LingerOption lingerOption = new LingerOption (true, 10);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption);


 Comments   
Comment by Jeff Morris [ 28/Mar/14 ]
Thanks for creating this Bowie!
Comment by Jeff Morris [ 01/Apr/14 ]
http://review.couchbase.org/#/c/35163/




[NCBC-424] add SSL support in support of Couchbase Server 3.0 Created: 27/Mar/14  Updated: 27/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs, library
Affects Version/s: None
Fix Version/s: 2.0.0

Type: New Feature Priority: Critical
Reporter: Matt Ingenthron Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
blocks MB-10084 Sub-Task: Changes required for Data E... Open

 Description   
In support of the new SSL feature in Couchbase Server 3.0, we will need to add SSL support. See the related issue CCBC-344.




[NCBC-423] Add couchbase cluster compatibility to documentation Created: 25/Mar/14  Updated: 25/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: backlog-1.0

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Gantt: finish-start
has to be done after JCBC-438 Add table for 1.8, 2.x and 3.x compat... Open

 Description   
We should probably specify for this given major.minor of the SDK, one of three things for Couchbase Cluster releases:
- unsupported
- supported
- supports all features

These might be an 'x', '—' and "✓" in a table, or whatever Amy comes up with.

This is, in part, planning for 3.0 including beta.

This should be based on the work done in JCBC-438, so it's blocked by that issue.




[NCBC-422] Check that a CCCP config's rev# is greater than the current Created: 24/Mar/14  Updated: 31/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Task Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-421] Refactor and Improve IO layer Created: 24/Mar/14  Updated: 12/Apr/14

Status: In Progress
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Story Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The current impl needs to be optimized - SocketAsynEventArgs are not being reused causing excessive GC.




[NCBC-420] N1QL Support for ad-hoc queries Created: 24/Mar/14  Updated: 01/Apr/14  Resolved: 01/Apr/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Story Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 01/Apr/14 ]
I shouldn't have made this a story, it's really a task under a story. I'll close it and create a more detailed one for the next sprint.

That being said, basic support for ad-hoc queries using the N1QL DP2 works. It's still a long way from production ready, but you can do this:

var bucket = (ICouchbaseBucket) _cluster.OpenBucket("default");
            const string query = "SELECT * FROM tutorial WHERE fname = 'Ian'";

            var result = bucket.Query<dynamic>(query);
            foreach (var row in result.Rows)
            {
                Console.WriteLine(row);
            }




[NCBC-419] A Linq implementation for N1QL Created: 24/Mar/14  Updated: 24/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Epic Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Epic Name: Linq Provider
Epic Status: To Do




[NCBC-418] SASL Authentication Created: 24/Mar/14  Updated: 12/Apr/14  Resolved: 12/Apr/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Story Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Provide support for SASL authentication.

 Comments   
Comment by Jeff Morris [ 12/Apr/14 ]
Basic plain text support for SASL




[NCBC-417] Cluster.Dispose does not release all resources - config listener thread hangs in certian cases Created: 16/Mar/14  Updated: 16/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Bug Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-416] Method overloading ambiguity with named parameters Created: 13/Mar/14  Updated: 31/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.4
Fix Version/s: 1.3.5

Type: Bug Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates to

 Description   
"method overloading is differentiated with return type only hence wrong method was invoked from
line 1311: public IView GetView(string designName, string viewName)
In order to fix this i have added named parameter from the correct method definition."

Ref: https://github.com/couchbase/couchbase-net-client/pull/13


 Comments   
Comment by Jeff Morris [ 13/Mar/14 ]
We need to ensure that this is the only case.
Comment by Wayne Siu [ 31/Mar/14 ]
Hi Jeff,
Can you help define the test case(s) for this issue? I'll have SDKQE to script and automate it afterward. Thanks.
Comment by Jeff Morris [ 31/Mar/14 ]
Wayne -

Assume a view as such:

function (doc, meta) { emit(meta.id, null); }

When you iterate over the results of the client, it should return a list of the keys. It currently returns null, even though the TotalRows will return a value > 0 if there are keys available.

var view = client.GetView("utils", "allKeys");
foreach(var row in view){
//this should iterate through the keys.
}

I'll add a unit test that covers it,

-Jeff




[NCBC-415] Exception throw while getting View after update to 1.3.3 Created: 10/Mar/14  Updated: 11/Mar/14  Resolved: 11/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.5

Type: Bug Priority: Blocker
Reporter: wilsont Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: ASP.net MVC3/4 , couchbase server 2.1.1 community edition (build-764)

Attachments: Zip Archive MvcApplication2.zip     JPEG File screen1.JPG     JPEG File screen2.JPG     JPEG File screen3.JPG    

 Description   
First of all this problem doesn't exists in 1.3.1, it starts after I have updated the .net client to 1.3.3

The exception is being threw while i call

client.GetView(designName, viewName)

The View's object is not JSON, it's an serializable c# custom class.

Is there any way to solve this problem? Thanks a lot!

- See more at: http://www.couchbase.com/communities/comment/1633#comment-1633

Full exception

Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: A. Path '', line 0, position 0. at Newtonsoft.Json.JsonTextReader.ParseValue() at Newtonsoft.Json.JsonTextReader.ReadInternal() at Newtonsoft.Json.JsonTextReader.Read() at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value) at Couchbase.GenericViewRowTransformer`1.TransformRow(JsonReader reader, ICouchbaseClient client, Boolean shouldLookupById) at Couchbase.CouchbaseView`1.b__0(JsonReader jr) at Couchbase.CouchbaseViewHandler.d__0`1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)

- See more at: http://www.couchbase.com/communities/comment/1633#comment-1633


Definition of View

function (doc, meta) {
 if(meta.id.indexOf("AsyncInsert") > -1)
    emit(meta.id, doc);
}

Sample Data
Key : SnapBucketAsyncInsertPhotoLike.4639.7616
Data : "AAEAAAD/////AQAAAAAAAAAMAgAAAEJPUkZyYW1ld29yaywgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAACBPUkZyYW1ld29yay5Nb2RlbHMuQXN5bmNJbnNlcnRUTwQAAAAPX2ludmFsaWRhdGVsaXN0CV9jYWNoZWtleQRfc3FsDl9zcWxQYXJhbWV0ZXJzAwEBA9UCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXSwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV2OAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbT1JGcmFtZXdvcmsuTW9kZWxzLlNpbXBsZVNxbFBhcmFtZXRlciwgT1JGcmFtZXdvcmssIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0CAAAACQMAAAAGBAAAABNQaG90b0xpa2UuNDYzOS43NjE2BgUAAAClBiBJbnNlcnQgaW50byBbUGhvdG9MaWtlXSAoW1NuYXBQaG90b0lkXSAsIFtTbmFwUGhvdG9TaXRlSWRdICwgW1NuYXBVc2VySWRdICwgW09SVXNlcklkXSAsIFtPUlVzZXJTaXRlSWRdICwgW1JhdGluZ10gLCBbQ3JlYXRlVGltZV0gKSB2YWx1ZXMgKEBTbmFwUGhvdG9JZCAsIEBTbmFwUGhvdG9TaXRlSWQgLCBAU25hcFVzZXJJZCAsIEBPUlVzZXJJZCAsIEBPUlVzZXJTaXRlSWQgLCBAUmF0aW5nICwgQENyZWF0ZVRpbWUgKSA7IFVQREFURSBbU25hcFBob3RvXSBTRVQgTGlrZUNvdW50PUxpa2VDb3VudCsxLExpa2VDb3VudDI0SG91cnM9TGlrZUNvdW50MjRIb3VycysxLExhc3RMaWtlVGltZT1AQ3VycmVudERhdGVUaW1lMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXN0TGlrZURhdGVTZXJpYWw9QExhc3RMaWtlRGF0ZVNlcmlhbDINCiAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBTbmFwUGhvdG9JZD1AU25hcFBob3RvSWQyO0lOU0VSVCBJTlRPIFNuYXBVc2VyQWN0aXZpdHkgKFtTbmFwVXNlcklkXSxbVHlwZUlkXSxbQWN0aW9uVXNlcklkXSxbU25hcFBob3RvSWRdLFtJc1JlYWRdLFtDcmVhdGVUaW1lXSkgVkFMVUVTDQogICAgICAgICAgICAgICAgICAgICAgICAoIChTRUxFQ1QgU25hcFVzZXJJZCBGUk9NIFNuYXBQaG90byBXSVRIKG5vbG9jaykNCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIFNuYXBQaG90b0lkID0gQFNuYXBQaG90b0lkMiksIEBTbmFwVXNlckFjdGl2aXR5VHlwZUlkMixAQWN0aW9uVXNlcklkMixAU25hcFBob3RvSWQyLDAsQEN1cnJlbnREYXRlVGltZTIpOyAJBgAAAAQDAAAA1QJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uSW50MzIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uAwAA5QFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXVtdCAgJBwAAAAEAAAABAAAABAYAAACOAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbT1JGcmFtZXdvcmsuTW9kZWxzLlNpbXBsZVNxbFBhcmFtZXRlciwgT1JGcmFtZXdvcmssIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAACdPUkZyYW1ld29yay5Nb2RlbHMuU2ltcGxlU3FsUGFyYW1ldGVyW10CAAAACAgJCAAAAAwAAAAMAAAABwcAAAAAAQAAAAQAAAAD4wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQT3////4wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLkludDMyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAADa2V5BXZhbHVlAQAIBgoAAAAJU25hcFBob3RvwB0AAAH1////9////woAAAAAAfT////3////CgAAAAAB8/////f///8KAAAAAAcIAAAAAAEAAAAQAAAABCVPUkZyYW1ld29yay5Nb2RlbHMuU2ltcGxlU3FsUGFyYW1ldGVyAgAAAAkOAAAACQ8AAAAJEAAAAAkRAAAACRIAAAAJEwAAAAkUAAAACRUAAAAJFgAAAAkXAAAACRgAAAAJGQAAAA0EDBoAAABOU3lzdGVtLkRhdGEsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQ4AAAAlT1JGcmFtZXdvcmsuTW9kZWxzLlNpbXBsZVNxbFBhcmFtZXRlcgMAAAAFX25hbWUGX3ZhbHVlB19kYnR5cGUBAgQVU3lzdGVtLkRhdGEuU3FsRGJUeXBlGgAAAAIAAAAGGwAAAAxAU25hcFBob3RvSWQJHAAAAAXj////FVN5c3RlbS5EYXRhLlNxbERiVHlwZQEAAAAHdmFsdWVfXwAIGgAAAAgAAAABDwAAAA4AAAAGHgAAABBAU25hcFBob3RvU2l0ZUlkCR8AAAAB4P///+P///8IAAAAARAAAAAOAAAABiEAAAALQFNuYXBVc2VySWQJIgAAAAHd////4////wgAAAABEQAAAA4AAAAGJAAAAAlAT1JVc2VySWQJJQAAAAHa////4////wgAAAABEgAAAA4AAAAGJwAAAA1AT1JVc2VyU2l0ZUlkCSgAAAAB1////+P///8IAAAAARMAAAAOAAAABioAAAAHQFJhdGluZwkrAAAAAdT////j////CAAAAAEUAAAADgAAAAYtAAAAC0BDcmVhdGVUaW1lCS4AAAAB0f///+P///8EAAAAARUAAAAOAAAABjAAAAANQFNuYXBQaG90b0lkMgkxAAAAAc7////j////CAAAAAEWAAAADgAAAAYzAAAAEUBDdXJyZW50RGF0ZVRpbWUyCTQAAAABy////+P///8EAAAAARcAAAAOAAAABjYAAAAYQFNuYXBVc2VyQWN0aXZpdHlUeXBlSWQyCTcAAAAByP///+P///8IAAAAARgAAAAOAAAABjkAAAAOQEFjdGlvblVzZXJJZDIJOgAAAAHF////4////wgAAAABGQAAAA4AAAAGPAAAABRATGFzdExpa2VEYXRlU2VyaWFsMgk9AAAAAcL////j////CAAAAAUcAAAAHVN5c3RlbS5EYXRhLlNxbFR5cGVzLlNxbEludDMyAgAAAAptX2ZOb3ROdWxsB21fdmFsdWUAAAEIGgAAAAHAHQAAAR8AAAAcAAAAAQAAAAABIgAAABwAAAABHxIAAAElAAAAHAAAAAHYtAEAASgAAAAcAAAAAQAAAAABKwAAABwAAAABAQAAAAUuAAAAIFN5c3RlbS5EYXRhLlNxbFR5cGVzLlNxbERhdGVUaW1lAwAAAAptX2ZOb3ROdWxsBW1fZGF5Bm1fdGltZQAAAAEICBoAAAAB66IAABwsGgABMQAAABwAAAABwB0AAAE0AAAALgAAAAHrogAAHCwaAAE3AAAAHAAAAAEDAAAAAToAAAAcAAAAAR8SAAABPQAAABwAAAABF1EzAQs="


 Comments   
Comment by wilsont [ 10/Mar/14 ]
The sample project is using .net client 1.3.4 , the problem is still exists.
Comment by Jeff Morris [ 11/Mar/14 ]
This is a regression bug that was causing the generic CouchbaseView to be used in place of the standard CouchbaseView. This caused the GenericRowTransformer to be used which expects a type of "T".
Comment by Jeff Morris [ 11/Mar/14 ]
http://review.couchbase.org/#/c/34391/
Comment by Jeff Morris [ 11/Mar/14 ]
http://review.couchbase.org/#/c/34391/




[NCBC-414] Develop MemcachedBucket class for non-persistent, in-memory operations Created: 10/Mar/14  Updated: 16/Mar/14  Resolved: 16/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Couchbase supports both persistent (Membase buckets) and volatile storage (Memcached buckets). This ticket is to develop a class to support volatile operations.

 Comments   
Comment by Jeff Morris [ 16/Mar/14 ]
Get and Insert working for string values. Will continue to build on functionality and support for all data types later.




Subclass KeyMapper for VBucket and Ketama based Key mapping (NCBC-410)

[NCBC-413] Refactor ConfigContext so that keymapping details are contained only within the IKeyMapper impl Created: 10/Mar/14  Updated: 11/Mar/14  Resolved: 11/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Currently, the IConfigInfo impl creates the key mapping data structures (VBuckets) - this should be handled by the IKeyMapper impl itself.




Subclass KeyMapper for VBucket and Ketama based Key mapping (NCBC-410)

[NCBC-412] Develop Ketama based Keymapper Created: 10/Mar/14  Updated: 19/Mar/14  Resolved: 19/Mar/14

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0.0

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





Subclass KeyMapper for VBucket and Ketama based Key mapping (NCBC-410)

[NCBC-411] Develop VBucket based Keymapper Created: 10/Mar/14  Updated: 11/Mar/14  Resolved: 11/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-410] Subclass KeyMapper for VBucket and Ketama based Key mapping Created: 10/Mar/14  Updated: 19/Mar/14  Resolved: 19/Mar/14

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Story Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Σ Remaining Estimate: Not Specified Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: Not Specified Original Estimate: Not Specified

Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-411 Develop VBucket based Keymapper Technical task Resolved Jeff Morris  
NCBC-412 Develop Ketama based Keymapper Technical task Closed Jeff Morris  
NCBC-413 Refactor ConfigContext so that keymap... Technical task Resolved Jeff Morris  

 Description   
As a developer
I want both VBucket and Ketama key mappers
So that I can use Memcached and Couchbase buckets from the same client




[NCBC-409] Move 2.X repo to couchbaselabs Created: 03/Mar/14  Updated: 03/Mar/14  Resolved: 03/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Move 2.X repo from my personal github account to couchbaselabs.

 Comments   
Comment by Jeff Morris [ 03/Mar/14 ]
https://github.com/couchbaselabs/couchbase-csharp-client-ng




[NCBC-408] Retry Node Check during View Operations Created: 27/Feb/14  Updated: 03/Mar/14  Resolved: 03/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.4

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
During a View operation, the client will look for a node to use to execute the operation against. In certain cases (rebalance, etc) the list of nodes may be empty. This will add an additional check if a candidate node is not found before the client gives up and returns a "View {0} was mapped to a dead node, failing." error.

 Comments   
Comment by Jeff Morris [ 03/Mar/14 ]
http://review.couchbase.org/#/c/34123/




[NCBC-407] Retry View Operations When Specific Error Cases are Encountered Created: 27/Feb/14  Updated: 27/Feb/14  Resolved: 27/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.4

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/issues/browse/MB-10261

 Comments   
Comment by Jeff Morris [ 27/Feb/14 ]
Patchset: http://review.couchbase.org/#/c/34007/t:




[NCBC-406] Publish docs for .NET March 2014 release Created: 27/Feb/14  Updated: 10/Mar/14  Due: 04/Mar/14  Resolved: 10/Mar/14

Status: Closed
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 1.3.5

Type: Task Priority: Critical
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Edit and publish guide and autodocs.




[NCBC-405] add discussion of timeout accuracy and implementation Created: 27/Feb/14  Updated: 27/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Since our timeouts are only as accurate as the underlying APIs/subsystems we use, we should document this for our users so they can plan accordingly. For instance, if processes aren't scheduled for a long period of time owing to CPU or memory contention... or in some cases IO doesn't happen for a long time and our timeout is IO event driven, we may not timeout to the application until later.


 Comments   
Comment by Jeff Morris [ 27/Feb/14 ]
We also may want to discuss specific timeouts...since there are several "timeouts" at the SDK level: socket recv timeout, operation timeout, queue timeout (waiting for a socket to become available), send timeout, etc. Not all are equal.




[NCBC-404] system.threading.ThreadPool doesn't work with Couchbase client Created: 25/Feb/14  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Jasdeep Jaitla Assignee: Jeff Morris
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
When using the system.threading.ThreadPool standard library (and the ThreadPool.QueueUserWorkItem to execute operations). Operations just suddenly stop after about 67-70 iterations of a for loop to create data. There is no error code, error message, or an non-zero exit code. It just stops. This occurs when creating a connection within the Thread worker, and also sharing a connection outside the worker (both have same behavior).

So, they are curious about how to go about multi-threading operations...

 Comments   
Comment by Jeff Morris [ 25/Feb/14 ]
Jasdeep -

Would it be possible to include an example of this behavior?

-Jeff
Comment by Jasdeep Jaitla [ 25/Feb/14 ]
I requested it, but it was end of day already. I am sure they will do it tomorrow.
Comment by Jasdeep Jaitla [ 13/Mar/14 ]
Closing this because the customer wasn't able to reproduce.
Comment by Jasdeep Jaitla [ 13/Mar/14 ]
Yeah not sure, the same code suddenly worked, but if he reports again, I'll re-open.
Comment by Jasdeep Jaitla [ 13/Mar/14 ]
Thanks!




[NCBC-403] Update 2.X to use Apache Common Infrastructure Libraries for .NET Created: 24/Feb/14  Updated: 26/Feb/14  Resolved: 26/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
For this ticket: https://www.couchbase.com/issues/browse/NCBC-102 I did a custom API for logging, in retrospect it was a poor decision. This ticket is swap out the custom implementation with
http://netcommon.sourceforge.net/

This is a trivial task since the API are symmetric respect to interfaces.

 Comments   
Comment by Jeff Morris [ 26/Feb/14 ]
Completed.




[NCBC-402] Data not persisted using observe when a node is removed Created: 21/Feb/14  Updated: 22/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The second problem is that even with the above bug fixed(I fixed and recompiled the client), I'm still losing newly written data in an event of node restart, no matter what the PersistTo ReplicateTo values are set to.

see: https://www.couchbase.com/issues/browse/NCBC-401

 Comments   
Comment by Matt Ingenthron [ 21/Feb/14 ]
Note that the only way Durability Requirements can behave is give you a notification that the item has changed. It depends on what is meant with "node restart" here though.

It's a bit dated and needs to be updated, but see: http://www.couchbase.com/wiki/display/couchbase/Observe
Comment by Haik Nazlian [ 22/Feb/14 ]
"Node restart" means that I'm shutting down the VM, while data is being written. Always losing data even if PersistTo is set to 2.

To my understanding the cause for this is the lack of retry functionality on the Set operation.

The Set operation should implement a logic where it waits for a successful Observe operation and in case of a failure, the Set operation should write the data again and mark the old data as deleted.
Comment by Jeff Morris [ 22/Feb/14 ]
Sounds like a bug in the implementation. Thanks for the in-depth description of the issue.




[NCBC-401] Client crashes during observe, in an event of a node failure. Created: 21/Feb/14  Updated: 22/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.3.3
Fix Version/s: None

Type: Bug Priority: Critical
Reporter: Haik Nazlian Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Win


 Description   
For the past week, I'm benchmarking 2.5.0 with .NET Client and the things are not looking good.
First, there is bug causing the client to crash. This happens during Observe operation, in an event of node failure simulation. This is caused by poor coding of the Couchbase.ObserveHandler.CheckNodesForKey() method, that does not implement Try/Catch and retry functionality.
Here is the full info:
http://www.couchbase.com/communities/q-and-a/client-crashes-during-observe-event-node-failure#comment-1556
---------------------
The second problem is that even with the above bug fixed(I fixed and recompiled the client), I'm still losing newly written data in an event of node restart, no matter what the PersistTo ReplicateTo values are set to.
-------------------
The third problem is that the .NET client is SUPER SLOW compared to the C client. I have tested both in the same environment and the C client is about 100 times faster.


 Comments   
Comment by Jeff Morris [ 21/Feb/14 ]
Hi Haik -

I am exactly which bug this ticket is for, but it looks like you have #1 resolved - this is an open source project so please submit a pull request if you have found and fixed a bug :)

For the second issue, this should probably be a separate ticket: https://www.couchbase.com/issues/browse/NCBC-402

The third issue is a little more difficult...it's hard to compare these things, but I don't doubt the libcouchbase is faster than the client. There are several reasons for this, noticeably that the uses .NET client synchronous I/O and the 1.X client has been around for several years and has "morphed" into it's current form. The good news is that we are working on a new version dubbed 2.X. You can read more about it here: http://blog.couchbase.com/introducing-couchbase-net-sdk-20-development-blog-series

Thanks,

Jeff



Comment by Haik Nazlian [ 22/Feb/14 ]
You have a typo in the ticket link, it should go to https://www.couchbase.com/issues/browse/NCBC-402
Thanks for opening it!

About the 2.X Client: After examining all the clients, I wonder if wouldn't it be more sensible to use the libcouchbase so that it will be the core of the .NET client?
In this way all the clients will share the same unified core and will only have to provide an API.




Comment by Jeff Morris [ 22/Feb/14 ]
No problem and thanks for mentioning the typo :)

 As for using libcouchbase as the core, it's something that certainly been discussed. Actually the Java and the .NET clients are the two SDK's that don't use libcouchbase as a core. There are a couple reasons for this: a) history - both were developed before libcouchbase, b) capable platforms - java and .net are platforms that provide rich libraries for IO, threading etc c) since we are community driven, we want to provide SDK's that support community involvement, contributions - providing an SDK written 100% in the communities native platform helps to achieve these goals. d) some of those performance gains you see with C client will be mitigated marshaling between the managed/unmanaged worlds.




[NCBC-400] Constructor fails to initialize in a 2 node cluster Created: 18/Feb/14  Updated: 19/Feb/14  Resolved: 19/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.3.3
Fix Version/s: None

Type: Task Priority: Blocker
Reporter: Andrew Jebasingh Assignee: Jeff Morris
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: 2 node cluster running on Centos 6.5 with Couchbase Server 2.5

Attachments: Zip Archive TestApp (2).zip     Zip Archive TestApp.zip    

 Description   
Details are at http://www.couchbase.com/communities/q-and-a/constructor-hangs-while-trying-initialize#comment-1564

The test solution I created is attached.

Thanks!

 Comments   
Comment by Jeff Morris [ 18/Feb/14 ]
Tried this on a 2.5 Cluster and it worked. Logging wasn't working because you were missing the enyim sectionGroup.
Comment by Andrew Jebasingh [ 19/Feb/14 ]
Okay I got it figured out finally and can reproduce it all the time on demand now. It's fiddler2. If I have fiddler running, then it hangs on the streaming connection (which is to be expected I guess!)

However, when I close fiddler2 and then try running it, it works great and returns from the constructor immediately.

Thanks for your help in resolving this issue, and hope this helps anyone else who has this problem!




[NCBC-399] Standardize to SPACES for indenting in source files Created: 17/Feb/14  Updated: 11/Mar/14  Resolved: 11/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.5

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
We currently have a mixture of tabs and spaces within the files. This fix is to standardize on SPACES as opposed to tabs.

 Comments   
Comment by Jeff Morris [ 03/Mar/14 ]
Pushing this to next release "just in case" it doesn't go as planned - this will give me more time to resolve any "just-in-case" issues, instead of doing it at the end of a dev cycle.
Comment by Jeff Morris [ 11/Mar/14 ]
http://review.couchbase.org/#/c/34397/




[NCBC-398] Support Json.NET >= 6.0.1 Created: 17/Feb/14  Updated: 26/Feb/14  Resolved: 26/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: backlog-1.0

Type: New Feature Priority: Major
Reporter: Chad Kreimendahl Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: All .NET


 Description   
The most recent changes to the nuget package require an old version of Json.NET (<= 5.0.8). For that reason, it makes it impossible for us to upgrade any versions of this tool going forward, since we have other tools that require the more current version (6.0.1).

It should be fairly easy to support >= 6, as the changes we've seen are almost entirely new features... other than some minor deprecation.

 Comments   
Comment by Jeff Morris [ 17/Feb/14 ]
Hi Chad,

We had to restrict the version the JSON.NET to <=5.08 due to a last minute bug report that Json.NET 6.0.1 "broke" the 1.3.3 build. Json.NET released 6.0.1 when we were in the final packaging stages of the release (post QA), so it didn't make it's way into 1.3.3. This was a temporary restriction until the next release of the client as stated in the release notes: http://docs.couchbase.com/couchbase-sdk-net-1.3/#appendix-release-notes

Here is the ticket for inclusion in 1.3.4 release: http://www.couchbase.com/issues/browse/NCBC-383

You have a couple of options:
a) Hold off until 1.3.4
b) Build off the github source once the issue is resolved - you can track progress using this Jira issue.
c) Resolve this issue yourself and submit a pull request from github :)

Thanks,

Jeff
Comment by Jeff Morris [ 26/Feb/14 ]
http://review.couchbase.org/#/c/33938/




Standardize, Document and Change Logging Levels for Client (NCBC-392)

[NCBC-397] Document changes to logging levels including BP Created: 14/Feb/14  Updated: 10/Mar/14

Status: In Progress
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.3
Fix Version/s: 1.3.5

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 10/Mar/14 ]
Moving this to next release (1.3.5) since we had some last minute changes to: https://docs.google.com/document/d/1GhRxvPb7xakLL4g00FUi6fhZjiDaP33DTJZW7wfSxrI/edit




Standardize, Document and Change Logging Levels for Client (NCBC-392)

[NCBC-396] Log the creation and destruction of client instances Created: 14/Feb/14  Updated: 17/Feb/14  Resolved: 17/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.4

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
This is easy to add to the creation of a client, but a bit more difficult to log the destruction of a client instance without adding Dispose and Finalizer methods.

 Comments   
Comment by Matt Ingenthron [ 14/Feb/14 ]
I'd recommend strongly logging at INFO level the startup of the client including any parameters. Since we take params from both config files and programmatically, it'd be useful to record what's actually being used at startup time and in the logs. Saves time when diagnosing.
Comment by Jeff Morris [ 14/Feb/14 ]
Agreed, I shall do so. Thanks for the input.
Comment by Jeff Morris [ 17/Feb/14 ]
http://review.couchbase.org/#/c/33693/




Standardize, Document and Change Logging Levels for Client (NCBC-392)

[NCBC-395] Assign Each Client Instance and Identifier Created: 14/Feb/14  Updated: 17/Feb/14  Resolved: 17/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.4

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Assign an identifier to each client instance so that specific client instances can be traced in log files.

 Comments   
Comment by Jeff Morris [ 17/Feb/14 ]
http://review.couchbase.org/#/c/33691/




Standardize, Document and Change Logging Levels for Client (NCBC-392)

[NCBC-394] Add 'Warn' Level Logging to 'core' configuration classes Created: 14/Feb/14  Updated: 17/Feb/14  Resolved: 17/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.4

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 17/Feb/14 ]
http://review.couchbase.org/#/c/33694/




[NCBC-393] Deprecate or Rewrite MulitGet Operations Created: 14/Feb/14  Updated: 10/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.3
Fix Version/s: backlog-1.0

Type: Story Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-392] Standardize, Document and Change Logging Levels for Client Created: 14/Feb/14  Updated: 10/Mar/14

Status: In Progress
Project: Couchbase .NET client library
Component/s: docs, library
Affects Version/s: 1.3.3
Fix Version/s: 1.3.5

Type: Story Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Σ Remaining Estimate: Not Specified Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: Not Specified Original Estimate: Not Specified

Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-394 Add 'Warn' Level Logging to 'core' co... Technical task Resolved Jeff Morris  
NCBC-395 Assign Each Client Instance and Ident... Technical task Resolved Jeff Morris  
NCBC-396 Log the creation and destruction of c... Technical task Resolved Jeff Morris  
NCBC-397 Document changes to logging levels in... Technical task In Progress Jeff Morris  

 Description   
Most of the logging on the client is set to the Debug level, which traces all operations and their paths, config handling, heartbeat monitoring, cluster reconfiguration, etc. This task is to a) standardize and document the log levels and b) apply the changes to the client. These should be broken into sub-tasks.




[NCBC-391] Handle case where config thread cluster state is updated after bootstrapping Created: 13/Feb/14  Updated: 31/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: backlog-2.0

Type: Bug Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The config thread uses the information from the client configuration to bootstrap, however after bootstrapping this information (cluster topology) may change if nodes are added and/or removed. This ticket is to handle the case when the node that the config thread is listening to, goes offline.




[NCBC-390] 1.3.3 release notes Created: 11/Feb/14  Updated: 11/Feb/14  Resolved: 11/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.3
Fix Version/s: None

Type: Task Priority: Major
Reporter: Patrick Varley Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: releasenote
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://docs.couchbase.com/couchbase-sdk-net-1.3/#appendix-release-notes


 Description   
Missing the release notes for 1.3.3.

 Comments   
Comment by Jeff Morris [ 11/Feb/14 ]
The release notes are for 1.3.3, the title is wrong. Will fix.
Comment by Jeff Morris [ 11/Feb/14 ]
https://github.com/couchbaselabs/docs-ng/pull/92

It will be live after Amy merges the PR.




[NCBC-389] 1.3.3 getting started is still 1.3.1 Created: 11/Feb/14  Updated: 11/Feb/14  Resolved: 11/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.1
Fix Version/s: None

Type: Task Priority: Major
Reporter: Patrick Varley Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: gettingstarted
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://www.couchbase.com/communities/net/getting-started


 Description   
The following need to be updated to 1.3.3

bar/panel on the left
download link
text before the download link
release notes link

 Comments   
Comment by Jeff Morris [ 11/Feb/14 ]
There are two getting started pages:
1-http://www.couchbase.com/communities/net/getting-started
2-http://docs.couchbase.com/couchbase-sdk-net-1.3/#getting-started

I am not sure why, but the second is linked to the http://www.couchbase.com/communities/net/ landing page. I updated both :)




[NCBC-388] Improve Nunit tests Created: 11/Feb/14  Updated: 07/Apr/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.3.3
Fix Version/s: 1.3.5

Type: Improvement Priority: Major
Reporter: Saakshi Manocha Assignee: Saakshi Manocha
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency

 Description   
Some Nunit tests require special set up and tear down phases and not all of them run in one go.
So we need to improve them and get better coverage and test reports through Jenkins.

 Comments   
Comment by Jeff Morris [ 03/Mar/14 ]
Hi Saakshi -

Do you have pending check-ins for this ticket? If not close it or if it's revolving, let's move it to 1.3.5 ok?

Thanks,

Jeff
Comment by Saakshi Manocha [ 04/Mar/14 ]
No pending check-ins as of now, moving it to 1.3.5
Comment by Saakshi Manocha [ 20/Mar/14 ]
Change set:
http://review.couchbase.org/#/c/34736/

In test case: When_Deleting_Bucket_Bucket_Is_No_Longer_Listed, the method DeleteBucket() should be called before checking whether the bucket is deleted and is no longer listed. This missing statement was causing the test case to fail.




[NCBC-387] Use Sandcastle (or equivalent) to Generate Auto Docs for 1.X Client Created: 07/Feb/14  Updated: 07/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-386] .NET February 2014 documentation release Created: 05/Feb/14  Updated: 06/Feb/14  Resolved: 06/Feb/14

Status: Closed
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.2
Fix Version/s: None

Type: Task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Edit and publish updated documentation.




[NCBC-385] Multi get and touch Created: 05/Feb/14  Updated: 05/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: nvargas Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
One can get several keys in one round trip. Also one can do get-and-touch in a single round trip. But currently is not possible to do several get-and-touch in one round trip. Something like:

IDictionary<string, object> CouchbaseClient.Get(IEnumerable<string> keys, IEnumerable<TimeSpan> newExpirations);

Please add such an operation in a future version

Thanks.

- See more at: http://www.couchbase.com/communities/comment/1493#comment-1493




[NCBC-384] Improve overall quality of 1.X documentation Created: 04/Feb/14  Updated: 04/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.1
Fix Version/s: None

Type: Epic Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Epic Name: Improve .NET SDK 1.X Documentation
Epic Status: To Do




[NCBC-383] Update to Latest (stable) version of JSON.NET Created: 04/Feb/14  Updated: 17/Feb/14  Resolved: 17/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The client currently is fixed at version 4.5.11 which was released in November 2012. This ticket is to upgrade the 1.X client to the latest stable version of JSON.NET (newtonsoft) either 6.X.X or 5.0.8.


 Comments   
Comment by Jeff Morris [ 17/Feb/14 ]
Using community supplied ticket for this issue:
https://www.couchbase.com/issues/browse/NCBC-398




[NCBC-382] Ensure Couchbase.Log4Net uses Newtonsoft.NET Version 4.5.11 Created: 04/Feb/14  Updated: 04/Feb/14  Resolved: 04/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.3

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Follow up to this: http://www.couchbase.com/issues/browse/NCBC-381

 Comments   
Comment by Jeff Morris [ 04/Feb/14 ]
http://review.couchbase.org/#/c/33231/




[NCBC-381] Ensure that Nuget Installs Newtonsoft <= 5.0.8 Created: 04/Feb/14  Updated: 14/Feb/14  Resolved: 04/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Restrict the Newtonsoft.JSON version to 4.5.11

 Comments   
Comment by Jeff Morris [ 04/Feb/14 ]
http://review.couchbase.org/#/c/33219/




[NCBC-380] Filtering on Compound Key with "+" Char Fails Created: 31/Jan/14  Updated: 31/Jan/14  Resolved: 31/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
91b, Jan 14 09:34:
Hi,
Filter on compound key with `+` char won`t work from C# client.
Couchbase version: 2.2.0 enterprise edition (build-821)
C# client: CouchbaseNetClient.1.2.9\lib\net40\Couchbase.dll
Reproduce:
1) Create a new bucket
2) Create any document
3) Create a new view (in my case :* _design/test bug*
function (doc, meta) {
emit([123, "a+b"], null);
}
4) Execute from c# GetView with filter on key: [123, ”a+b”]
var testClient = new CouchbaseClient((CouchbaseClientSection)
ConfigurationManager.GetSection("couchbase/bucket-test-bucket"));
var item = testClient.GetView("test", "bug").Key(new object[] { 123,
"a+b"}).Stale(
StaleMode.False).FirstOrDefault();
if (item == null)
{
Console.Out.WriteLine("Nothing found, bug…");
}
else
{
Console.Out.WriteLine("Key found");
}
Zero rows found.
===============
If I run in couch GUI filter on key [123,”a+b”], I get the following:
http://plt-couchdb01.toyga.local:8092/auditing/_design/test/_view/bug?key=%5B123%2C%22a%2Bb%22%5D&stale=update_after&connection_timeout=60000&limit=10&skip=0
Response:
{"total_rows":1,"rows":[{"id":"abc","key":[123,"a+b"],"value":null}]}
In Fidler I see that ‘+’ character still ‘+’, but in request from couch GUI
‘+’ is *‘%2B’*


 Comments   
Comment by Jeff Morris [ 31/Jan/14 ]
http://review.couchbase.org/#/c/33096/




[NCBC-379] Create best practices about using .net SDK Created: 31/Jan/14  Updated: 07/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Larry Liu Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Hi, Jeff

Based on our discussion, create a jira for you to create best practices.

Thanks
Larry




[NCBC-378] Randomize Nodes when Responding to NotMyVBucket Requests Created: 30/Jan/14  Updated: 10/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.5

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-377] Only recreate connections when config change requires it Created: 30/Jan/14  Updated: 30/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: None

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.org/issues/browse/NCBC-358

http://review.couchbase.org/#/c/31834/1//COMMIT_MSG

"Out of curiosity, why don't you only recreate connections which have been changed? In that case, you would have the same result, but be much more performant in many cases."




[NCBC-376] Refactor Unit Test Project-Part 2 Created: 30/Jan/14  Updated: 10/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.5

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Saakshi Manocha
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Unit test project has multiple threading and other issues which make regression testing difficult. This is a task to refactor it so that we have 100% green after every test run and so that it runs in < 1 minute.

Note this is a follow up to: https://www.couchbase.com/issues/browse/NCBC-361

 Comments   
Comment by Jeff Morris [ 03/Mar/14 ]
Saakshi -

Same as the other ticket, let's either close this or move it to the next release if it's still in-progress or revolving, ok?

Thanks,

Jeff
Comment by Saakshi Manocha [ 04/Mar/14 ]
No pending check-ins as of now, moving it to 1.3.5




[NCBC-375] ConnectionProblems with server configured hostname and ipv6 Created: 29/Jan/14  Updated: 31/Jan/14  Resolved: 31/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Bug Priority: Major
Reporter: Stefan Dirks Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: windows 7 x64


 Description   
If you configure a couchbase-server with hostname instead of ip (ipv4, you can't enter an ipv6 address via web interface), the .net client library refuses the connection.

The problem is "SocketPool.cs" creates a new socket (method "Create") with "AddressFamily.InterNetwork" (ipv4), but "_node.EndPoint" can be of type "AddressFamily.InterNetworkV6".

The method "GetFirstAddress" within "CouchbasePool.cs" calls "Dns.GetHostAddresses", which returns ipv4 and ipv6 addresses and doesn't filter to ipv4 adresses.

Couchbase-Server has problems with ipv6 (see also http://www.couchbase.com/issues/browse/MB-6378).

The problem was also described in http://www.couchbase.com/communities/q-and-a/net-client-wont-communicate-cluster-successfully-configured-hostnames?current=node/640


 Comments   
Comment by Stefan Dirks [ 29/Jan/14 ]
see pull request https://github.com/couchbase/couchbase-net-client/pull/11
Comment by Jeff Morris [ 29/Jan/14 ]
Stefan -

Thanks for the submission. In order to accept the pull request and merge into a release branch, I need you to sign the Couchbase Contributor License Agreement (CLA) and have the PR go through our usual code review process in Gerrit.

Can you create an account and sign our CLA?

Just follow these steps:

1-http://review.couchbase.org
2-Login in and select your username on the top right hand side and then "settings"
3-The last item on the left in the settings view is an "Agreements" menu tab, select that an then
select the "New Contributor Agreement"

Doing this will also ensure that you get properly credited for your submission.

Once again, thanks for the submission,

-Jeff
Comment by Stefan Dirks [ 30/Jan/14 ]
Hello Jeff,

thanks for your fast reply.

i already created an account and signed the CLA.
My username is the same (sdir456).

Stefan

(edit typo)
Comment by Jeff Morris [ 30/Jan/14 ]
Stefan -

This is scheduled for the 1.3.2 release on Tuesday Feb 4th, however there was one minor issue (a few inadvertent carriage returns \r )found in the code review review process. If you would like to address the issue and do a commit --amend to gerrit that would be great. This would need to be done asap, so we can start or situational testing phase. If you can't do this (time or whatever) I'll go ahead do it for you. Let me know.

Thanks Again,

jeff
Comment by Stefan Dirks [ 31/Jan/14 ]
Hello Jeff,

i don't know how to do a git commit --ammend to gerrit, i tried some things but it didn't work. I'm new to git and gerrit.
It would be nice if you could do that for me or help me to do that of my own.

Thank you very much,
Stefan
Comment by Jeff Morris [ 31/Jan/14 ]
Stephen -

I fixed the \r issue and pushed the changes (I had to create a new CR because the change-id was missing): http://review.couchbase.org/#/c/33084/

I just need you to:
1-Click on the [Review] button for patch-set3 (or whatever the final patchset is)
2-Select the "Verified" radiobutton.

I'll send you some info on contributing as well :)

Thanks,

Jeff
Comment by Stefan Dirks [ 31/Jan/14 ]
Hello Jeff,

I just "verified" it. ( the Option i had was "+1").

Thanks for your help,
Stefan
Comment by Jeff Morris [ 31/Jan/14 ]
http://review.couchbase.org/#/c/33084/




[NCBC-374] create release notes for 1.3.2 Created: 28/Jan/14  Updated: 03/Feb/14  Resolved: 03/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Matt Ingenthron Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Send pull request to docs team.

 Comments   
Comment by Jeff Morris [ 03/Feb/14 ]
https://github.com/couchbaselabs/docs-ng/pull/84




[NCBC-373] .NET GetJSON operation throws System.ArgumentNullException Created: 23/Jan/14  Updated: 31/Jan/14  Resolved: 31/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Bug Priority: Major
Reporter: ben hysell Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: .net 4.5 vs2013


 Description   
Much like -
From NCBC-306: .NET GetJSON operation throws null reference exception Add support for null values persisted for a key via the CouchbaseClientExtensions.GetJson(…) method. This method will no longer thrown a NullReferenceException when the value store for a key is null and instead simply return null. - See more at: http://www.couchbase.com/communities/comment/1455#comment-1455

[Test]
+ public void Test_That_GetJson_Supports_Null_Values()
+ {
+ var key = "A_NULL_THING";
+ var result = Client.StoreJson(StoreMode.Set, key, null);
+ Assert.AreEqual(true, result);
+
+ var nullResult = Client.GetJson(key);
+ Assert.AreEqual(null, nullResult);
+ }


I'm not sure this test works for all cases. Say I just started my application can called

var returnedString = Client.GetJson(key);

But there isn't anything in the system because I just started up, I'll get a 'System.ArgumentNullException' because:
public static T GetJson(this ICouchbaseClient client, string key) where T : class
{
var json = client.Get(key);
return json == Null ? null : DeserializeObject(key, json);
}
The value 'json' will actually equal null. Since in this test it won't equal the string "Null", it will attempt to call DeserializeObject(key, json), with a null value for 'json'.

see following test
[Test]
public void Test_That_GetJson_Supports_Empty_Values()
{
//ensure key and value are not stored in the system
var nullResult = Client.GetJson("my key");
Assert.AreEqual(null, nullResult);
//fails
}

Expected behavior
Just like the standard Client.Get<string>(keyWithNothingInDatabase) returns null, I would expect Client.GetJson(keyWithNothingInDatabase) to also return null.


 Comments   
Comment by Jeff Morris [ 31/Jan/14 ]
http://review.couchbase.org/#/c/33097/




Implement Server Configuration Management (NCBC-362)

[NCBC-372] Develop a CCCP Server Configuration Provider Created: 15/Jan/14  Updated: 10/Mar/14  Resolved: 10/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: backlog-2.0

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
See CCCP: http://www.couchbase.com/wiki/display/couchbase/Cluster+Configuration+Carrier+Publication

 Comments   
Comment by Jeff Morris [ 12/Feb/14 ]
Dependent on this task: http://www.couchbase.com/issues/browse/NCBC-366

It don't see how I can create the dependency within Jira with our Jira configuration.
Comment by Jeff Morris [ 03/Mar/14 ]
This is nearly complete. There are some corner cases that need to be addressed, but they can be done in later sprints. I'll do one final commit today and close it.
Comment by Jeff Morris [ 10/Mar/14 ]
Some minor tweaks are in order, but this is largely done. Each case that comes up will be a separate ticket, so that we don't have tickets with multiple resolutions over time.




Implement Server Configuration Management (NCBC-362)

[NCBC-371] Develop a Streaming HTTP Server Configuration Provider Created: 15/Jan/14  Updated: 11/Feb/14  Resolved: 11/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: backlog-2.0

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
See UNIBrow: http://www.couchbase.com/wiki/display/couchbase/Uniform+Bootstrap+Operation

 Comments   
Comment by Jeff Morris [ 11/Feb/14 ]
This is "mostly complete" and uses the "terse" uri if it's available, otherwise it falls back to the old streaming config. Future work to be done includes implementation of the dispose method and more importantly maintaining an updated cluster list after bootstrapping. It does handle adding and removing nodes with the exception of the initial bootstrap url, which could be remedied by maintaining and updated cluster list and trying another server in the list.




Implement Server Configuration Management (NCBC-362)

[NCBC-370] Develop File System Based Provider Implementation Created: 15/Jan/14  Updated: 05/Feb/14  Resolved: 03/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: None

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
A file based provider implementation that allows a client to bootstrap off of a series of config files on disk. This is mainly for testing, but the implementation is nearly identical to the Streaming Http version, less some of UNIBrow's features.

 Comments   
Comment by Jeff Morris [ 03/Feb/14 ]
Partially implemented, will continue to develop it as needed for unit testing.




[NCBC-369] ObjectDisposedException is not handled in PerformMultiGet Created: 14/Jan/14  Updated: 31/Jan/14  Resolved: 15/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate

 Description   
https://github.com/couchbase/EnyimMemcached/blob/master/Enyim.Caching/MemcachedClient.cs#L890

The line in this code can throw ObjectDisposedException that is not handled in the Memcache Client Code. Since this code is executed on a thread NOT owned by an IIS Context Thread, this un-handled exception terminates the worker process as can be seen in our Application Log.

<Data>An unhandled exception occurred and the process was terminated. Application ID: /LM/W3SVC/1/ROOT Process ID: 20140 Exception: System.ObjectDisposedException Message: Safe handle has been closed StackTrace: at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at Microsoft.Win32.Win32Native.SetEvent(SafeWaitHandle handle) at System.Threading.EventWaitHandle.Set() at Enyim.Caching.MemcachedClient.<>c__DisplayClass29`1.<PerformMultiGet>b__1d(IAsyncResult iar) at System.Runtime.Remoting.Messaging.AsyncResult.SyncProcessMessage(IMessage msg) at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch()</Data>

 Comments   
Comment by Jeff Morris [ 15/Jan/14 ]
http://review.couchbase.org/#/c/32392/




[NCBC-368] Randomize Bootstrap Node Created: 14/Jan/14  Updated: 11/Mar/14  Resolved: 14/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate

 Description   
Randomizes the selection of the bootstrap node so that all clients do not use the same node, which can cause "stampeding herd" and lopsided resource utilization in large clusters or when cluster supports a large number of clients.

This ensures that boot-strapping is distributed over all of the urls in the configured boot-strap list.

 Comments   
Comment by Jeff Morris [ 14/Jan/14 ]
http://review.couchbase.org/#/c/32379/




[NCBC-367] Design and Implement Base Operation Functionality Created: 13/Jan/14  Updated: 19/Mar/14  Resolved: 19/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: backlog-2.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
As a developer,
I want base Couchbase operations for Get, Set, etc
So that I can store and retrieve data into and out of Couchbase

Acceptance Criteria
-Fundamental binary operations
-Basic memcached binary protocol message framing
-Unit tests




[NCBC-366] Implement Connection Pool Created: 13/Jan/14  Updated: 13/Feb/14  Due: 27/Jan/14  Resolved: 13/Feb/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0.0

Type: Story Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
As a network operator,
I want clients which I support, to minimize network and hardware/software resources
So that clients do not consume or use large number of socket connections, etc which impact overall network reliability

Acceptance:
-The connection pool is 'swappable'
-Connections are properly managed so that they are not leaked
-Unit tests




 

 Comments   
Comment by Jeff Morris [ 13/Feb/14 ]
A basic connection pool that was developed in the prototype has been integrated into the source. Some work still needs to be done with respect to creation/destruction and how this class interacts with the other classes in the object graph.




[NCBC-365] Incoming and Outgoing Data Serialization Created: 13/Jan/14  Updated: 31/Mar/14  Due: 27/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Story Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
As a user,
I want my data to deserialized/serialized into it's correct type
So that I do not have to do any casting or conversion and my data is not corrupted

Acceptance:
-The operations are template based
-Boxing/unboxing are minimized or preferable eliminated
-The Type sent, is the Type received

*ALSO investigate flags field for storing type in message



 




[NCBC-364]  VBucket Locator Component Created: 13/Jan/14  Updated: 03/Mar/14  Due: 27/Jan/14  Resolved: 03/Mar/14

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0.0

Type: Story Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
As a user,
I want a VBucket Locator Component
So that operations send/retrieve data from the correct node in the cluster based off of the hash of the key

Acceptance:
-The hash creator is swappable
-The default hash supported is CRC32
-The correct node is returned during a VBucket look-up

 

 Comments   
Comment by Jeff Morris [ 03/Mar/14 ]
Refactored and completed last week.




[NCBC-363] Implement Client Configuration Management Created: 13/Jan/14  Updated: 10/Mar/14  Due: 27/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Story Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
As a developer,
I want a provider based configuration client management system
So that the client can be configured in a way which matches the my given use-case

Acceptance:
-Configuration can be done via app.config files or programmatically
-Default values are always supplied - this means that by simple new'ing up a client, it can be used immediately with no further code or configuration.
-All major components (which really leads to overall design) are pluggable and able to be tested in isolation

 




[NCBC-362] Implement Server Configuration Management Created: 13/Jan/14  Updated: 16/Mar/14  Due: 27/Jan/14  Resolved: 16/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0.0

Type: Story Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Σ Remaining Estimate: Not Specified Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: Not Specified Original Estimate: Not Specified

Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-370 Develop File System Based Provider Im... Technical task Resolved Jeff Morris  
NCBC-371 Develop a Streaming HTTP Server Confi... Technical task Resolved Jeff Morris  
NCBC-372 Develop a CCCP Server Configuration P... Technical task Resolved Jeff Morris  

 Description   
As a developer,
I want a provider based configuration management system
So that the client will try multiple ways of getting a configuration before failing.

Acceptance:
-The most up-to-date configuration is always available to the client
-The implementation is via test-driven design
-The provider configuration is "configurable" from a client perspective
-The implementation uses some threshold so that the configuration changes are not "too noisy"
 




[NCBC-361] Refactor Unit Test Project Created: 09/Jan/14  Updated: 30/Jan/14  Resolved: 30/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Unit test project has multiple threading and other issues which make regression testing difficult. This is a task to refactor it so that we have 100% green after every test run and so that it runs in < 1 minute.

 Comments   
Comment by Jeff Morris [ 30/Jan/14 ]
I made some improvements, but not in line with my goals stated on the ticket. I spoke with Saakshi and she is going to take over on this ticket. Commit is here: http://review.couchbase.org/#/c/33038/

I will close this ticket and create a new one for Saakshi.




[NCBC-360] Default connection timeout improperly set in SocketPoolConfiguration.cs Created: 09/Jan/14  Updated: 09/Jan/14  Resolved: 09/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Bug Priority: Minor
Reporter: Dan Plaskon Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
In the 1.3.1 release, the default "dead timeout" was changed from 10 seconds to 2 seconds.

Unfortunately, one change in the following commit:

https://github.com/couchbase/couchbase-net-client/commit/0083bd07798f519ddaa2b0f818dd24439404df77

Improperly changed the CONNECTION timeout (not DEAD timeout) in src/Enyim.Caching/Configuration/SocketPoolConfiguration.cs

This is probably too aggressive for most environments, thankfully it can be overwritten using the socketPool element in web/app.config

 Comments   
Comment by Jeff Morris [ 09/Jan/14 ]
Dan -

Indeed that is a bug, I set the fix for the next release 1.3.2 on or around February 4th, 2014.

Thanks,

Jeff
Comment by Jeff Morris [ 09/Jan/14 ]
http://review.couchbase.org/#/c/31805/




[NCBC-359] Allow Serializer Customization Created: 08/Jan/14  Updated: 31/Jan/14  Resolved: 31/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Pull request can be found here: https://github.com/couchbase/couchbase-net-client/pull/10

Hi there,

I have some custom serialization requirements; however, currently the CouchbaseClientExtensions does not allow me to customize the Newtonsoft.Json serializer.

This patch allows serializer customization by placeing a static field onCouchbaseClientExtensions.JsonSerializerSettings that enables users of the couchbase extension class to customize the serializer.

Also added a static constructor to CouchbaseClientExtensions which maintains defaults.

Thanks,
Brian


 Comments   
Comment by Jeff Morris [ 31/Jan/14 ]
http://review.couchbase.org/#/c/32280/




[NCBC-358] Sort nodes so that changes in order from server config do not create a different hashcode Created: 08/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Hi Jeff,

Found that you are the leader of the GitHub project couchbase-net-client, we’ve encountered an issue with it and made patch. But not sure where is the community forum anymore. So hope you don’t mind me directly emailing you from your GitHub profile.

Anyway, we noticed that with 1.3.1 version of the Couchbase .Net client, we are frequently (every few seconds) getting the following log message.

2014-01-09 00:03:03,344 [cbp_thread] INFO Couchbase.CouchbasePool Received new configuration.

Even though our Couchbase cluster config has not changed. Comparing the information, it looks like the pool config returned by Couchbase, especially the “nodes’ field, the order or the nodes are not the same between calls.

Going through the code in the “ClusterConfig” class, it uses GetHashCode to compare if the pool config has changed, and it seems to be order sensitive for the “nodes” field.

So if I change it to sort the “nodes” before generating the HashCode, does it sounds like a suitable fix? I’m not to familiar with the internal of Couchbase, so not sure will it break something else.

                public override int GetHashCode()
                {
                        var cnehc = new Enyim.HashCodeCombiner();

- for (var i = 0; i < nodes.Length; i++)
- cnehc.Add(nodes[i].GetHashCode());
+ var sortedNodes = nodes.OrderBy(n => n.HostName);
+ foreach (var node in sortedNodes)
+ cnehc.Add(node.GetHashCode());

                        if (vBucketForwardServerMap != null)
                                cnehc.Add(vBucketForwardServerMap.GetHashCode());


Would be helpful if you can point me to the right place to ask this question.



Kind Regards,

Eddie

 Comments   
Comment by Jeff Morris [ 10/Jan/14 ]
Testing verified around an ~8% decrease in pool reconfigurations using this method.

http://review.couchbase.org/#/c/31834/




[NCBC-357] Set TCP Keep Alives on Connections Created: 08/Jan/14  Updated: 09/Jan/14  Resolved: 09/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Possible regression in 1.3.0 connection pool rewrite. Will publish a fix verification.

 Comments   
Comment by Jeff Morris [ 09/Jan/14 ]
http://review.couchbase.org/#/c/31807/




Documentation for .NET 1.3.1 (NCBC-354)

[NCBC-356] Publish .NET 1.3.1 autodocs Created: 06/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Closed
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.1
Fix Version/s: None

Type: Technical task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: 0.5h
Time Spent: Not Specified
Original Estimate: 0.5h


 Description   
This task includes:
1. Upload API reference documentation to autodocs server and unzip
2. Download latest autodocs index.html file and edit add new version
3. Download latest autodocs .htaccess file and edit to point to latest version
4. Upload updated index.html and .htaccess files.
5. Verify autodocs links are correct on docs landing page, docs site and autodocs page

 Comments   
Comment by Amy Kurtzman [ 10/Jan/14 ]
Autodocs are not available for .NET client library yet. They probably won't be added until the 2.0 release.




Documentation for .NET 1.3.1 (NCBC-354)

[NCBC-355] Publish .NET 1.3.1 documentation Created: 06/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Closed
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.1
Fix Version/s: None

Type: Technical task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: 1h
Time Spent: Not Specified
Original Estimate: 1h


 Description   
This task includes:
1. Edit release notes.
2. Edit other revisions to the document.
3. Add new version to nanoc.yaml file.
4. Update & verify links on www.couchbase.com/documentation
5. Verify links & document content for docs website (docs.pub.couchbase.com)
6. Publish document on external website (docs.couchbase.com)




[NCBC-354] Documentation for .NET 1.3.1 Created: 06/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Closed
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.1
Fix Version/s: None

Type: Task Priority: Major
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Σ Remaining Estimate: 1.5h Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: 1.5h Original Estimate: Not Specified

Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-355 Publish .NET 1.3.1 documentation Technical task Closed Amy Kurtzman  
NCBC-356 Publish .NET 1.3.1 autodocs Technical task Closed Amy Kurtzman  

 Description   
Documentation tasks for .NET 1.3.1 release




[NCBC-353] Add node IP to error messages so that users can isolate issues easier Created: 19/Dec/13  Updated: 19/Dec/13  Due: 19/Dec/13  Resolved: 19/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: 1.3.1

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: regression
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From the user:

Today we experienced an issue with one of our Couchbase nodes in production that caused a major response speed decrease. The root cause was a human error on our side, but the issue showed us another problem in connection pool refactoring in latest version of .NET SDK.

This is error we get from .NET SDK 1.2.9:
<GetOperationResult Success="False" StatusCode="145" CAS="0">
<Message>Pool is full, timeouting. 10.205.10.165:11210</Message>
<Exception><![CDATA[System.TimeoutException: The operation has timed out.]]></Exception>
<InnerResult>
<PooledSocketResult Success="False" StatusCode="145">
<Message>Pool is full, timeouting. 10.205.10.165:11210</Message>
<Exception><![CDATA[System.TimeoutException: The operation has timed out.]]></Exception>
</PooledSocketResult>
</InnerResult>
</GetOperationResult>

This is equivalent error that we got from .NET SDK 1.3.0:
<GetOperationResult Success="False" StatusCode="145" CAS="0">
<Message>Queue Timeout.</Message>
<Exception><![CDATA[Couchbase.Exceptions.QueueTimeoutException: Timeout occured while waiting for a socket.
Your current configuration for queueTmeout is 00:00:02.5000000
Your current configuration for maxPoolSize is 6
Try increasing queueTimeout or increasing using maxPoolSize in your configuration.
---> System.InvalidOperationException: Queue empty.
at System.Collections.Generic.Queue`1.Dequeue()
at Couchbase.SocketPool.Acquire()
--- End of inner exception stack trace ---
at Couchbase.SocketPool.Acquire()
at Couchbase.CouchbaseNode.Execute(IOperation op)]]></Exception>
<InnerResult>
<BinaryOperationResult Success="False" StatusCode="145" CAS="0">
<Message>Queue Timeout.</Message>
<Exception><![CDATA[Couchbase.Exceptions.QueueTimeoutException: Timeout occured while waiting for a socket.
Your current configuration for queueTmeout is 00:00:02.5000000
Your current configuration for maxPoolSize is 6
Try increasing queueTimeout or increasing using maxPoolSize in your configuration.
---> System.InvalidOperationException: Queue empty.
at System.Collections.Generic.Queue`1.Dequeue()
at Couchbase.SocketPool.Acquire()
--- End of inner exception stack trace ---
at Couchbase.SocketPool.Acquire()
at Couchbase.CouchbaseNode.Execute(IOperation op)]]></Exception>
</BinaryOperationResult>
</InnerResult>
</GetOperationResult>

While the version 1.3.0 gives us some additional information about our current connection pool configuration, we lost the information about Couchbase node IP which was pivotal in resolution of the issue we had. If all our applications were already running client 1.3.0, we would not find out that the issue is affecting only single node in the production pool.

 Comments   
Comment by Jeff Morris [ 19/Dec/13 ]
http://review.couchbase.org/#/c/31254/




[NCBC-352] ExecuteIncrement with CAS fails Created: 17/Dec/13  Updated: 24/Dec/13  Resolved: 17/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: None

Type: Bug Priority: Critical
Reporter: bchavez Assignee: Jeff Morris
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The following unit test should pass:

        [Test]
        public void incer_with_cas_test()
        {
            var client = k.Get<CouchbaseClient>();

            client.Remove( "foobar" );

            var result = client.ExecuteGet( "foobar" );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.ExecuteGet( "foobar" );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.ExecuteGet( "foobar" );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.ExecuteGet( "foobar" );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.ExecuteGet( "foobar" );

            Assert.NotNull( result.Value );
            Assert.That( result.Value, Is.EqualTo( 4 ) );
        }

However, the output is:
  Expected: 4
  But was: "1"

The debug/error log for Couchbase / Enyim reads as follows:

2013-12-16 23:36:59.5972|DEBUG|Couchbase.CouchbaseNode|Operation failed :i foobar n: 192.168.0.53:11210 t: Runner thread m: Failed to process response: Invalid arguments sc: InvalidArguments r: 0

2013-12-16 23:36:59.5972|DEBUG|Couchbase.CouchbaseClient|Operation failed :i foobar n: t: Runner thread m: Failed to process response: Invalid arguments sc: InvalidArguments r: 0



 Comments   
Comment by bchavez [ 17/Dec/13 ]
Slight correction to the last assertion:

Assert.That( ulong.Parse( result.Value.ToString() ) , Is.EqualTo( 4ul ) );

Output:

  Expected: 4
  But was: 1
Comment by Jeff Morris [ 17/Dec/13 ]
bchavez -

Try this:

       [Test]
        public void incer_with_cas_test()
        {
            Client.Remove("foobar");

            var casResult = Client.GetWithCas("foobar");
            Client.ExecuteIncrement("foobar", 1, 1, casResult.Cas);

            var result = Client.ExecuteGet("foobar");
            Client.ExecuteIncrement("foobar", 1, 1, casResult.Cas);

            result = Client.ExecuteGet("foobar");
            Client.ExecuteIncrement("foobar", 1, 1, casResult.Cas);

            result = Client.ExecuteGet("foobar");
            Client.ExecuteIncrement("foobar", 1, 1, casResult.Cas);

            result = Client.ExecuteGet("foobar");

            Assert.NotNull(result.Value);
            Assert.That(Convert.ToInt32(result.Value), Is.EqualTo(4));
        }

BTW - Thank you, thank you, thank you for providing a test with your bug report :)

-Jeff
Comment by Jeff Morris [ 17/Dec/13 ]
I provided a working example that shows how to use CAS with the .NET SDK. The API is a little wonky and this is something we will improve in the next version: 2.0
Comment by bchavez [ 20/Dec/13 ]
Hi Jeff,

I don't think the unit test is semantically accurate ...

I've added a "Console.WriteLine" to print out the CAS value after each ExecuteIncrement:

    [Test]
        public void incer_with_cas_test2()
        {
            var Client = k.Get<CouchbaseClient>();

            Client.Remove( "foobar" );

            var casResult = Client.GetWithCas( "foobar" );
            Console.WriteLine( "Cas Value: {0}", casResult.Cas );
            Client.ExecuteIncrement( "foobar", 1, 1, casResult.Cas );

            var result = Client.ExecuteGet( "foobar" );
            Console.WriteLine( "Cas Value: {0}", casResult.Cas );
            Client.ExecuteIncrement( "foobar", 1, 1, casResult.Cas );

            result = Client.ExecuteGet( "foobar" );
            Console.WriteLine( "Cas Value: {0}", casResult.Cas );
            Client.ExecuteIncrement( "foobar", 1, 1, casResult.Cas );

            result = Client.ExecuteGet( "foobar" );
            Console.WriteLine( "Cas Value: {0}", casResult.Cas );
            Client.ExecuteIncrement( "foobar", 1, 1, casResult.Cas );

            result = Client.ExecuteGet( "foobar" );

            Assert.NotNull( result.Value );
            Assert.That( Convert.ToInt32( result.Value ), Is.EqualTo( 4 ) );
        }

Cas Value: 0
Cas Value: 0
Cas Value: 0
Cas Value: 0

The foobar counter does reach a value of 4. However, it does so only when the cas value is zero. I don't think this is the expected behavior.

I've modified my unit test with your suggestion; and the unit test still fails:

       [Test]
        public void incer_with_cas_test()
        {
            var client = k.Get<CouchbaseClient>();

            client.Remove( "foobar" );

            var result = client.GetWithCas( "foobar" );
            Console.WriteLine( "Cas Value: {0}", result.Cas );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.GetWithCas( "foobar" );
            Console.WriteLine( "Cas Value: {0}", result.Cas );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.GetWithCas( "foobar" );
            Console.WriteLine( "Cas Value: {0}", result.Cas );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.GetWithCas( "foobar" );
            Console.WriteLine( "Cas Value: {0}", result.Cas );
            client.ExecuteIncrement( "foobar", 1, 1, result.Cas );

            result = client.GetWithCas( "foobar" );

            Assert.NotNull( result.Result );
            Assert.That( ulong.Parse( result.Result.ToString() ) , Is.EqualTo( 4ul ) );
        }

Cas Value: 0
Cas Value: 2477644067283
Cas Value: 2477644067283
Cas Value: 2477644067283

  Expected: 4
  But was: 1
Comment by Jeff Morris [ 23/Dec/13 ]
bchavez -

Your right, that unit test is not correct. I'll dig deeper into this and see what I can find. Also, if you can isolate the issue and want to go ahead and try to fix it, feel free to submit a pull request.

-Jeff
Comment by bchavez [ 24/Dec/13 ]
Hey Jeff,

I'm starting to think couchbase / memcached fundamentally does not support Increment with CAS.

I've found that none of the other SDKs (java, python, etc...) do not support INCR with CAS parameter. The .NET SDK is the only one that stands out with CAS parameters.

Also, a quick perusal of the couchbase / memcached source code, I found:

couchbase-server_src\memcached\daemon\memcached.c:

static void complete_incr_bin(conn *c) {
    protocol_binary_response_incr* rsp = (protocol_binary_response_incr*)c->wbuf;
    protocol_binary_request_incr* req = binary_get_request(c);

    assert(c != NULL);
    assert(c->wsize >= sizeof(*rsp));

    if (req->message.header.request.cas != 0) {
        write_bin_packet(c, PROTOCOL_BINARY_RESPONSE_EINVAL, 0);
        return;
    }

I've confirmed with Wireshark protocol analyzer and the client is sending the correct CAS value over the wire on TCP 11210, but an "Invalid arguments" response is sent from couchbase.

Ultimately, from the memcache.c source code above, I think this means if the CAS value in the request header is NOT zero, an "Invalid arguments" response is shot back to the client.

Fundamentally, I don't think CAS operations can be preformed with INCR and DECR.

Could you please confirm that INCR with CAS is an invalid operation in Couchbase with someone who's more experienced with the couchbase server code?

I suppose as a possible workaround, I could "Increment with CAS" on the client side using Store mode operations ...

Thanks,
Brian
Comment by Jeff Morris [ 24/Dec/13 ]
Hey Brian -

So, the official story is that since incr/decr are atomic; there is no need for CAS, so the server does not support it. As to why the .NET client has incr/decr with overloads for CAS is beyond me, this version of the client has quite a bit of history behind it.

I think the right thing to do here is to mark them as obsolete with a message indicating why and then not include them in the 2.0 version of the client.

-Jeff




[NCBC-351] Develop "Store and Get Operations" of client for .NET 2.0 SDK Created: 12/Dec/13  Updated: 04/Jan/14  Resolved: 04/Jan/14

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: None

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: dotnet-sdk-2.0-dev
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Ticket for managing and logging sub tasks while developing the .NET 2.0 client

 Comments   
Comment by Jeff Morris [ 04/Jan/14 ]
Included with this commit: https://github.com/jeffrymorris/lampropeltis/commit/353791da7520a0a330fd3dab1be773500c319c42

*Note lots of issues, but works :)




[NCBC-350] Develop "View Operations" component of client fir .NET 2.0 SDK Created: 12/Dec/13  Updated: 24/Mar/14  Resolved: 24/Mar/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: backlog-2.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: dotnet-sdk-2.0-dev
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Ticket for managing and logging sub tasks while developing the .NET 2.0 client

 Comments   
Comment by Jeff Morris [ 24/Mar/14 ]
https://github.com/couchbaselabs/couchbase-csharp-client-ng/commit/b233751d4d8de99b3aee9eccc915de4ec715d346




[NCBC-349] Develop "Client Configuration" component of client for .NET 2.0 SDK Created: 12/Dec/13  Updated: 17/Dec/13  Resolved: 17/Dec/13

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Done Votes: 0
Labels: dotnet-sdk-2.0-dev
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File client-configuration-diagram.PNG    

 Description   
Ticket for managing and logging sub tasks while developing the .NET 2.0 client

 Comments   
Comment by Jeff Morris [ 16/Dec/13 ]
wip




[NCBC-348] Develop "VBucket Management" component of client for .NET 2.0 SDK Created: 12/Dec/13  Updated: 17/Dec/13  Resolved: 17/Dec/13

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Done Votes: 0
Labels: dotnet-sdk-2.0-dev
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File vbucket-management-class-diagram.png    

 Description   
Ticket for managing and logging sub tasks while developing the .NET 2.0 client

 Comments   
Comment by Jeff Morris [ 16/Dec/13 ]
WIP




[NCBC-347] Develop "Connection Pool" component of client for .NET 2.0 SDK Created: 12/Dec/13  Updated: 17/Dec/13  Resolved: 17/Dec/13

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Done Votes: 0
Labels: dotnet-sdk-2.0-dev
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File connectionpool-diagram.PNG    

 Description   
Ticket for managing and logging sub tasks while developing the .NET 2.0 client

 Comments   
Comment by Jeff Morris [ 16/Dec/13 ]
WIP




[NCBC-346] Develop "Server Configuration" portion of 2.0 client Created: 12/Dec/13  Updated: 17/Dec/13  Resolved: 17/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Done Votes: 0
Labels: dotnet-sdk-2.0-dev
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File server-configuration-diagram.PNG    

 Description   
Ticket for managing and logging sub tasks while developing the .NET 2.0 client

 Comments   
Comment by Jeff Morris [ 16/Dec/13 ]
wip




[NCBC-345] Update Readme.mdown to reflect changes in our versioning policy Created: 12/Dec/13  Updated: 12/Dec/13  Due: 12/Dec/13  Resolved: 12/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.0
Fix Version/s: 1.3.1

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 12/Dec/13 ]
http://review.couchbase.org/#/c/31044/
Comment by Jeff Morris [ 12/Dec/13 ]
http://review.couchbase.org/#/c/31044/




[NCBC-344] NotImplementedException when storing against MemcachedClient in v1.3 client Created: 12/Dec/13  Updated: 12/Dec/13  Resolved: 12/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.3.0
Fix Version/s: 1.3.1

Type: Bug Priority: Major
Reporter: Simon Thorogood Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
When performing a simple Store operation against a MemcachedClient however, I get a NotImplementedException

Sample code:

var config = new MemcachedClientConfiguration();
config.AddServer("127.0.0.1", 11219);
var client = new MemcachedClient(config);

var res = client.Store(StoreMode.Set, "key", "value");
Console.WriteLine("result: " + res);

var value = client.Get("key");
Console.WriteLine("value: " + value);

- See more at: http://www.couchbase.com/communities/q-and-a/notimplementedexception-when-using-memcachedclient-version-13-enyimcaching#sthash.alLjXY5D.dpuf

 Comments   
Comment by Jeff Morris [ 12/Dec/13 ]
Patch: http://review.couchbase.org/#/c/31039/

I would continue to use the 1.2.9 client if I were only using the MemcachedClient and not the CouchbaseClient.




[NCBC-343] getting-started release notes link needs to be updated to point to 1.3 Created: 12/Dec/13  Updated: 09/Jan/14  Resolved: 09/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.0
Fix Version/s: None

Type: Task Priority: Major
Reporter: Patrick Varley Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: customer, documentation
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://www.couchbase.com/communities/net/getting-started


 Description   
The Release notes link in the "Getting started" page currently points to http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-rn.html.

It should point to http://docs.couchbase.com/couchbase-sdk-net-1.3/#release-notes-for-couchbase-client-library-net-130-ga-3-december-2013


 Comments   
Comment by Jeff Morris [ 12/Dec/13 ]
Updated all of the urls to 1.3.0 documentation.
Comment by Patrick Varley [ 03/Jan/14 ]
There are still a number of links on the getting started page that points to the 1.2 .Net manual.
Comment by Patrick Varley [ 03/Jan/14 ]
I have stared the links that need changing

Under "step 1":

In addition to the library itself, there is also the **Getting Started Guide** which is on this page and in the manual for the .NET client. The SDK manual also contains a **Tutorial including a sample application**, an **API Reference** and current **Release Notes**.


Then again at the end of the page under "Then Learn More":

The full **getting started guide** covers additional getting started information. From there, move on to the **tutorial**, which shows how to build an application on Couchbase Server with a JSON dataset, sample views, and modifying data. Refer to the **API Reference** for a guide to all functionality of the client library in the SDK.
Comment by Jeff Morris [ 04/Jan/14 ]
Thanks, I'll fix this while I am doing the 1.3.1 release notes.
Comment by Jeff Morris [ 09/Jan/14 ]
All should be fixed.




[NCBC-342] Debug [VIEWS:EXC_UNEXPECTED] errors seen in 1.3.0 code after connection pool changes Created: 09/Dec/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.3.0
Fix Version/s: backlog-1.0

Type: Improvement Priority: Minor
Reporter: Saakshi Manocha Assignee: Saakshi Manocha
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency

 Description   
After comparison of results in SDKQE-398, we need to examine the reason behind the [VIEWS:EXC_UNEXPECTED] errors in 1.3.0


 Comments   
Comment by Jeff Morris [ 10/Dec/13 ]
Duplicate: http://www.couchbase.com/issues/browse/NCBC-337




[NCBC-341] ArgumentOutOfRangeExceptionIndex when deserializing bootstrap config with empty "pools" element Created: 04/Dec/13  Updated: 04/Jan/14  Resolved: 04/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: 1.3.1

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
When a config contains an empty "pools" element, it causes a ArgumentOutOfRangeException to be thrown. This will change the logic to check for this case an throw a BootstrapConfigurationException instead.




[NCBC-340] System.InvalidOperationException an asynchronous module or handler completed while an asynchronous operation was still pending Created: 04/Dec/13  Updated: 10/Mar/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.5

Type: Task Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: ASP.NET Session Provider

Attachments: Zip Archive NCBC340_reproduced.zip    

 Description   
I get the following error randomly on my production Couchbase server:

"System.InvalidOperationException
an asynchronous module or handler completed while an asynchronous operation was still pending"

I am using the latest Couchbase server and the latest version of the .Net SDK. When I run locally I do not see this error at all.

On production I have a two node Couchbase client. The config section is the following:

<couchbase>
  <servers bucket="Staging" bucketPassword="">
    <add uri="http://COUCH01.mobitorhost00.local:8091/pools" />
  </servers>
</couchbase>
<enyim.com>
  <memcached protocol="Binary">
    <servers>
      <add address="COUCH01.mobitorhost00.local" port="11211" />
    </servers>
    <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:01:00" deadTimeout="00:01:00"/>
  </memcached>
</enyim.com>

When I switch to the Memcache provider instead the error does not appear.

Thanks for your help. This is really a show-stopper for us.

Here is a stack trace:

Storex.Site.dll!Storex.Site.MvcApplication.Application_Error() Line 53 C#
  [Native to Managed Transition]
  System.Web.dll!System.Web.Util.ArglessEventHandlerProxy.Callback(object sender, System.EventArgs e) Unknown
  System.Web.dll!System.Web.HttpApplication.RaiseOnError() Unknown
  System.Web.dll!System.Web.HttpApplication.PipelineStepManager.ResumeSteps(System.Exception error) Unknown
  System.Web.dll!System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext context, System.AsyncCallback cb) Unknown
  System.Web.dll!System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest wr, System.Web.HttpContext context) Unknown
  System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown
  System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown
  [Native to Managed Transition]
  [Managed to Native Transition]
  System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown
  System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown
  [AppDomain Transition]

- See more at: http://www.couchbase.com/communities/comment/reply/1892?destination=node/1892#comment-form

 Comments   
Comment by Jeff Morris [ 04/Dec/13 ]
Possible duplicate: https://www.couchbase.com/issues/browse/NCBC-302
Comment by Tomasz Poradowski [ 13/Dec/13 ]
This can be worked around by using RestSharpHttpClient, see more at http://www.couchbase.com/communities/q-and-a/answer/answer-2095
Comment by Tomasz Poradowski [ 13/Dec/13 ]
@Jeff - you're right with NCBC-302 - it is caused by the same issue as here (asynchronous call in DefaultHttpClient's constructor that fails at some point, though for me first call to get something from Couchbase usually succeeded, only subsequent calls from a given ASP.NET MVC action failed like this)
Comment by Jeff Morris [ 13/Dec/13 ]
Tomasz -

Thanks for providing this info for the community. Are you using any DI frameworks (autofac, ninject, etc) to create and inject the Couchbase client? If so, which one?

In my testing I have only been able to replicate this when using a DI framework (autofac) - my workaround has been to create the client statically in the Global.asax and then reference it like so: MvcApplication1.CouchbaseClient.<methods>.

Thanks again,

Jeff
Comment by Tomasz Poradowski [ 16/Dec/13 ]
Small ASP.NET MVC 4 application using CouchbaseClient 1.3.0 that results in "InvalidOperationException: View by_post was mapped to a dead node, failing.", unless a different HTTP client than default is used.
Comment by Tomasz Poradowski [ 16/Dec/13 ]
@Jeff - I've just attached a sample MVC application (VS2013 Express for Web solution) that:
- uses CouchbaseClient 1.3.0 and CouchbaseModelViews.Framework
- follows general guidelines from Couchbase documentation (uses Repository pattern that creates a static client in RepositoryBase<T> class)
- uses "default" bucket and in order to test it - you need to create a document there as follows: { "type": "post", "title": "test post" }.
When main page is shown - list of posts is rendered and this is fine, however when you click on the link to see details - it fails with:

[InvalidOperationException: View by_post was mapped to a dead node, failing.]
   Couchbase.CouchbaseViewHandler.GetResponse(IDictionary`2 viewParams) in e:\dev\workspace\LawFirmCouch\couchbase-net-client-1.3.0\src\Couchbase\CouchbaseViewHandler.cs:184
   Couchbase.<TransformResults>d__0`1.MoveNext() in e:\dev\workspace\LawFirmCouch\couchbase-net-client-1.3.0\src\Couchbase\CouchbaseViewHandler.cs:42
   ASP._Page_Views_Post_Show_cshtml.Execute() in e:\dev\workspace\LawFirmCouch\NCBC340\Views\Post\Show.cshtml:27
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197
   System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +119
   System.Web.WebPages.StartPage.RunPage() +17
...

This isn't exactly the same problem, but the workaround is the same - to use RestSharpHttpClient, which you can test by uncommenting it in web.config (under /configuration/couchbase). Therefore I assume it may have the same origin.
Shall you need any more details please contact me.

Regards,
Tomasz
Comment by Tomasz Poradowski [ 16/Dec/13 ]
NCBC340_reproduced.zip now with full source code of Enyim.Caching (I deleted some source files accidentally in the first attachment)
Comment by Jeff Morris [ 17/Dec/13 ]
Thanks Tomasz -

This "[InvalidOperationException: View by_post was mapped to a dead node, failing.]" is actually a separate bug. The ticket to follow is here: http://www.couchbase.com/issues/browse/NCBC-337

-Jeff
Comment by Tomasz Poradowski [ 18/Dec/13 ]
I could not reproduce exactly the same problem in this test scenario as after finding the workaround I didn't spend any more time on it. I've just tested your fix to NCBC-337 (http://review.couchbase.org/#/c/31007/ applied by hand to current master branch of couchbase-net-client) and was hoping to finally be able to reproduce exception reported originally in this ticket - but unfortunately the same error persists ("view mapped to a dead node").
Comment by Tomasz Poradowski [ 18/Dec/13 ]
Ok, now I finally know how to reproduce this very issue - in my sample project attached to this ticket please modify NCBC340/Controllers/PostController.cs as follows:

    public class PostController : Controller
    {
        //
        // GET: /Post/
private PostRepository repository = new PostRepository();
private CommentRepository comments = new CommentRepository();

        public ActionResult Show(string id)
        {
var post = repository.Get(id);
post.Comments = comments.GetAllByPost(id);

            return View(post);
        }
    }

and like that it fails for the very first time when you go to details of a test "post" shown on main page. Therefore it seems that this asynchronous call in DefaultHttpClient's constructor does not finish on time. Subsequent calls to view details succeeded, so it's likely per design document or per view.
Comment by Tomasz Poradowski [ 27/Dec/13 ]
Though I'm not sure what impact this may have on performance - another workaround for this issue is to add following to web.config:

<couchbase>
...
    <httpClient initializeConnection="false" />
</couchbase>

This setting causes the problematic asynchronous call in DefaultHttpClient's constructor to be skipped.
Comment by Jeff Morris [ 27/Dec/13 ]
Tomasz -

This is great, we can test the performance between setting false/true.

>>I've just tested your fix to NCBC-337 (http://review.couchbase.org/#/c/31007/ applied by hand to current master branch of couchbase-net-client) and was hoping to finally be able to reproduce exception reported originally in this ticket - but unfortunately the same error persists ("view mapped to a dead node").

This should be resolved with that commit, so if your still seeing it then it's likely a bigger problem. Could you describe your environment (cluster size, etc)?

Thanks,

-Jeff
Comment by Tomasz Poradowski [ 27/Dec/13 ]
@Jeff - I assume your fix to NCBC-337 was fine, but that issue was also hit (though indirectly) by the same root cause as NCBC-340. My test environment is currently a single node running Couchbase Enterprise 2.2.0 on Win7 Pro, using 2GB RAM.




[NCBC-339] CreateBucket when no buckets exist Created: 04/Dec/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: backlog-1.0

Type: Task Priority: Minor
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Using the .NET client to create a bucket programmatically (CouchbaseCluster.CreateBucket), works fine as long as at least one bucket already exists in the cluster. If the cluster has 0 buckets, the getBucketUri method in CouchbaseCluster.cs returns null. This then results in an ArgumentNullException in HttpHelper.doRequest.

The workaround is to create at least one bucket that you intend to use, during installation, or to create a dummy bucket with minimal footprint, and remove it after scaffolding buckets programmatically. In a dev environment, this keeps developers from tearing down and re-scaffolding their Couchbase buckets programmatically.
- See more at: http://www.couchbase.com/communities/comment/reply/2026?destination=node/2026#comment-form




[NCBC-338] When a connection is dropped by the server, the client does not handle it gracefully. Created: 04/Dec/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: backlog-1.0

Type: Task Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
In 1.3.0 we added timeout and a callback which will generate an exception, but there must be a better way to do this.




[NCBC-337] Investigate "View vquery was mapped to a dead node, failing." errors in situational testing Created: 04/Dec/13  Updated: 10/Dec/13  Resolved: 10/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: 1.3.1

Type: Task Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File statusHealthy-config.PNG     PNG File statusWarmup-config.PNG    

 Description   
In situational testing, we have a very large number of view exceptions in the logs. We may want to provide a retry strategy for certain classifications of view errors, especially during a rebalance scenario.

 Comments   
Comment by Jeff Morris [ 10/Dec/13 ]
So, this happens when a config does not contain a "couchApiBase" element is not returned with the config. At this point the "status" in the config is "warmup".
Comment by Jeff Morris [ 10/Dec/13 ]
http://review.couchbase.org/#/c/31007/




[NCBC-336] Improve thoroughput during rebalance scenarios Created: 04/Dec/13  Updated: 03/Feb/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: backlog-1.0

Type: Task Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Throughput drops by 75%+ (on average) during rebalance. Some time quanta show zero operations in the remove-2-reblance scenario. This appears to be a regression over earlier testing.




[NCBC-335] Admin credentials required to create a design document Created: 23/Nov/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: backlog-1.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/communities/q-and-a/credentials-deploy-view-using-couchbasecluster
 
I spent some time with the SDK trying to figure this out and it looks like a bug in the client SDK:
 
var config = new CouchbaseClientConfiguration();
config.Urls.Add(new Uri(ConfigurationManager.AppSettings["CouchbaseServerUrl"] + "/pools"));
config.Password = "Administrator";
config.Username = "password";
config.Bucket = "authenticated";
config.BucketPassword = "secret";
 
var cluster = new CouchbaseCluster(config);
 
using (var stream = new FileStream("Data\\CityViews.json", FileMode.Open))
{
       var result = cluster.CreateDesignDocument("authenticated", "somename", stream);
       Assert.IsTrue(result);
}
 
Even this doesn’t work and returns a 401 Unauthorized…if you remove the cluster level authentication, then 401 unauthorized is still returned. Note that this will create the design document under the default bucket:
 
var config = new CouchbaseClientConfiguration();
config.Urls.Add(new Uri(ConfigurationManager.AppSettings["CouchbaseServerUrl"] + "/pools"));
config.Bucket = "authenticated";
config.BucketPassword = "secret";
 
var cluster = new CouchbaseCluster(config);
 
using (var stream = new FileStream("Data\\CityViews.json", FileMode.Open))
{
       var result = cluster.CreateDesignDocument("default", "somename", stream);
       Assert.IsTrue(result);
}





[NCBC-334] Add a method of getting the version of the library programatically Created: 14/Nov/13  Updated: 04/Jan/14  Resolved: 04/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.1

Type: Improvement Priority: Critical
Reporter: Matt Ingenthron Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From some tools, it would usually be useful to get a version from the CouchbaseClient class. Ideally this would be derived from something like 'git describe' such that we could see if the code being used is not yet released and what it's lineage is.



 Comments   
Comment by Jeff Morris [ 31/Dec/13 ]
After some discussion, the solution needs the following steps:

1-Git hook: writes the sha1, git-describe or other info describing the snapshot of source being built to a file (Version.txt) in the local directory - this hook is run on every pull, fetch, etc
2-Version.txt: a file in the local directory that is:
  a) a Build Action of "Embedded resource"*,
  b) is added to git-ignore
  c) contains the version info from git described in #1
3-Build event: will copy the text from the file into the appropriate assembly attributes:
  a) for version into the AssemblyVersionAttribute,
  b) for other info (git describe or sha1 into the AssemblyInformationalAttribute. I think we could do this via variable substitution.

*May not have to be an embedded resource, maybe just a file on disk.
Comment by Jeff Morris [ 31/Dec/13 ]
Prototype: https://github.com/jeffrymorris/githook-version-example
Comment by Jeff Morris [ 04/Jan/14 ]
Committed a first generation implementation that adds a post-merge git hook that will run on a git-pull (iif their are remote changes). The hook will run a git-describe to get the state of the current repo and embed it within the AssemblyInformationVersion attribute in the AssemblyInfo.cs, which makes the info viewing through Windows explorer. It also adds a Version.txt file with the same information that is included as an embedded resource.

A later revision will update the AssemblyVersion and AssemblyFileVersion attributes with a version based off the git-describe (details to come) and add the git log information to the Version.txt file as well as add a method to expose the information publicly.

Note that the psake scripts will overwrite this information and will need to be updated so that the info exists for release builds as well as testing builds.

http://review.couchbase.org/#/c/31597/




[NCBC-333] NCBC-310: Amendment #3 - reference cleanup when SocketPool is disposed Created: 13/Nov/13  Updated: 03/Dec/13  Resolved: 03/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.3.0
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 03/Dec/13 ]
http://review.couchbase.org/#/c/30236/




[NCBC-332] DeadTimeout of 10s is too high Created: 12/Nov/13  Updated: 09/Jan/14  Resolved: 09/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Matt Ingenthron Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
There can be some failure scenarios, usually bad networks, where all connections are dropped. The default of waiting 10 seconds is quite long and lowering it to 2 seconds is much more reasonable.

It's of course better if the network is more reliable in the first place.

 Comments   
Comment by Jeff Morris [ 09/Jan/14 ]
Note bug reported here: https://www.couchbase.com/issues/browse/NCBC-360




[NCBC-331] Change queueTimeout default from 100ms to 2500ms Created: 12/Nov/13  Updated: 04/Dec/13  Resolved: 04/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The default value for queueTimeout is currently 100ms, which is extremely low and will unnecessarily cause queue timeout exceptions. This will increase the queueTimeout to 2.5 seconds, which is still a relatively low amount. Note that this only affects threads waiting on the SocketPool for a socket, not the actual time it takes to execute and operation.

 Comments   
Comment by Jeff Morris [ 04/Dec/13 ]
http://review.couchbase.org/#/c/30275/




[NCBC-330] During finalization a NRE is thrown on SocketPool Created: 11/Nov/13  Updated: 03/Dec/13  Resolved: 03/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 03/Dec/13 ]
http://www.couchbase.com/issues/browse/NCBC-333




[NCBC-329] Ensure IOperationResult returns StatusCode on failure. Created: 11/Nov/13  Updated: 30/Jan/14  Resolved: 30/Jan/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Many of the operations on failure do not return a StatusCode in their IOperationResult resturn values. This fixes most of these cases.

 Comments   
Comment by Jeff Morris [ 30/Jan/14 ]
This was released in 1.3.0: https://github.com/couchbase/couchbase-net-client/commit/b44eb8545885e997f8d2035113e1514b2dc246e8




[NCBC-328] Link to Jira issues in release notes Created: 07/Nov/13  Updated: 08/Nov/13  Resolved: 08/Nov/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.3.0
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Amy Kurtzman Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The Jira issues mentioned in the release notes do not have links to the Jira issues. The links should be added.

 Comments   
Comment by Jeff Morris [ 07/Nov/13 ]
Hi Amy, I am still working in testing the build. I will add these and send you a new pull request.

Thanks,

Jeff




[NCBC-327] Update Nuspec files to current VS Solution Configuration Created: 07/Nov/13  Updated: 04/Jan/14  Resolved: 07/Nov/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.3.0
Fix Version/s: 1.3.1

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified





[NCBC-326] Under load, OORE thrown when accessing view Created: 06/Nov/13  Updated: 30/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.2, 1.2.8
Fix Version/s: backlog-1.0

Type: Task Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: team-8091
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From the following thread: https://groups.google.com/forum/#!topic/couchbase-8091/coADcepVnV4

>>>>>


Re: Backup is running to 200.7% after crash (was: Re: [Team 8091] Couchbase server crashed during minimal load test)
Ok everyone, blast from the past. We are about to launch 2.2 of the same app that was experiencing index out of range errors accessing a view. We have continued to see this error show up during minimal as well as heavy load testing. We have multiple views and for some reason this one view causes us problems. It's use is almost identical to another that hasn't error and is access immediately before this failing view.

The content they return is different though. The error, for simplicity sake is pasted below:

System.ArgumentOutOfRangeExceptionIndex was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at Couchbase.CouchbaseClient.Couchbase.IHttpClientLocator.Locate(String designDocument)
   at Couchbase.CouchbaseViewHandler.GetResponse(IDictionary`2 viewParams)
   at Couchbase.CouchbaseViewHandler.<TransformResults>d__0`1.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at ###.Framework.Tracking.PageVisitLogger.GetResourceAccesses(String userId)
   at ###.Framework.GlobalApplication.Application_AuthenticateRequest(Object sender, EventArgs e)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)



For the 2.1 release that started this thread, we identified issues with the .NET 1.2.6 and had to go back to 1.2.0. For this 2.2 release I tried 1.2.7 and 1.2.8 and still experienced the issue so was not able to upgrade still. The issue we have run into is documented in this thread so I'm not going to rehash it here. I even provided diagnostics to Couchbase for troubleshooting purposes.

Two things:

    Is there an ETA on when this issue will be resolved?
    What might cause this exception for just one view?

Thanks!

-K




[NCBC-325] MemcachedClient.ExecuteGet(IEnumerable<string> keys) is not returning any error code on connection error Created: 05/Nov/13  Updated: 30/Nov/13  Resolved: 30/Nov/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Improvement Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://www.couchbase.com/issues/browse/CBSE-840

Method MemcachedClient.ExecuteGet(IEnumerable<string> keys) of .NET SDK is returning empty dictionary when none of specified keys were found. And the same result is returned on connection error. So it is not possible to distinguish between these two cases and it's not possible to find what went wrong.

static void Main(string[] args)
{
using (CouchbaseClient client = new CouchbaseClient("ok"))
{
IDictionary<string, IGetOperationResult> res = client.ExecuteGet(new string[] { "exist1", "exist2" });
Console.WriteLine(res.Count);
}
using (CouchbaseClient client = new CouchbaseClient("ok"))
{
IDictionary<string, IGetOperationResult> res = client.ExecuteGet(new string[] { "not-exist1", "not-exist2" });
Console.WriteLine(res.Count);
}
using (CouchbaseClient client = new CouchbaseClient("wrong"))
{
IDictionary<string, IGetOperationResult> res = client.ExecuteGet(new string[] { "exist1", "exist2" });
Console.WriteLine(res.Count);
}
using (CouchbaseClient client = new CouchbaseClient("wrong"))
{
IDictionary<string, IGetOperationResult> res = client.ExecuteGet(new string[] { "not-exist1", "not-exist2" });
Console.WriteLine(res.Count);
}
}

Output is:
2
0
0
0

Tested on Couchbase client 1.2.6.0 and 1.2.9.0.

 Comments   
Comment by Jeff Morris [ 20/Nov/13 ]
This will be in 1.3.0, otherwise the client will get a verification fix.
Comment by Jeff Morris [ 30/Nov/13 ]
http://review.couchbase.org/#/c/30718/




[NCBC-324] ExecuteGet(string key, DateTime newExpiration) returns unexpected result codes Created: 05/Nov/13  Updated: 03/Dec/13  Resolved: 08/Nov/13

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Bug Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://www.couchbase.com/issues/browse/CBSE-837:

We have found an error in .NET SDK which is affecting our tests for session migration from DB to Couchbase. One of the ExecuteGet method overloads is not returning correct status code when requested key is not found. It seems to be an older bug, but the overload was not actively used by out code before. We confirmed it on version 1.2.6 (currently in prod) and latest 1.2.9.

Sample code:
using (CouchbaseClient client = new CouchbaseClient("dev"))
{
var res1 = client.ExecuteGet("DoesNotExist");
Console.WriteLine(GetResultXml(res1));
Console.WriteLine();

var res2 = client.ExecuteGet("DoesNotExist", DateTime.UtcNow.AddMinutes(10));
Console.WriteLine(GetResultXml(res2));
Console.WriteLine();
}

Output:
<GetOperationResult Success="False" StatusCode="1" CAS="0">
<Message>Failed to process response: Not found</Message>
<InnerResult>
<BinaryOperationResult Success="False" StatusCode="null" CAS="0">
<Message>Failed to process response: Not found</Message>
</BinaryOperationResult>
</InnerResult>
</GetOperationResult>

<GetOperationResult Success="False" StatusCode="null" CAS="0">
<Message>Unable to locate node</Message>
<InnerResult>
<PooledSocketResult Success="False" StatusCode="1">
<Message>Failed to process response</Message>
<InnerResult>
<BinaryOperationResult Success="False" StatusCode="null" CAS="0">
<Message>Failed to process response</Message>
</BinaryOperationResult>
</InnerResult>
</PooledSocketResult>
</InnerResult>
</GetOperationResult>

Both ExecuteGet method overloads should be returning the same response with status code 1 (KeyNotFound). Instead, the second overload is swallowing the correct response status code.

 Comments   
Comment by Jeff Morris [ 03/Dec/13 ]
http://review.couchbase.org/#/c/30193/




[NCBC-323] Remove NUGET Depedencies Between Couchbase Projects Created: 01/Nov/13  Updated: 01/Nov/13  Resolved: 01/Nov/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Some of the projects (.i.e Log4NetAdapter, HTTPClients, et al) in the solution are using Nuget to reference dependencies between projects instead of direct project to project references. This commit changes the packaging so that the the references are project to project within the solution. Nuget is still used for external 3rd party dependencies.

 Comments   
Comment by Jeff Morris [ 01/Nov/13 ]
http://www.couchbase.com/issues/browse/NCBC-299




Move .NET API documentation from docs repo to auto-doc (NCBC-309)

[NCBC-322] Setup Sandcastle and generate documentation Created: 29/Oct/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: backlog-1.0

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://shfb.codeplex.com/




Move .NET API documentation from docs repo to auto-doc (NCBC-309)

[NCBC-321] Add XML Comments to Source Created: 29/Oct/13  Updated: 29/Oct/13  Due: 29/Oct/13  Resolved: 29/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 29/Oct/13 ]
completed: http://review.couchbase.org/#/c/29859/




[NCBC-320] Run Situational Tests Against Created: 29/Oct/13  Updated: 18/Nov/13  Resolved: 18/Nov/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.0

Type: Task Priority: Blocker
Reporter: Jeff Morris Assignee: Saakshi Manocha
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
Duplicate

 Description   
Saakshi -

Can run situational tests against this commit:http://review.couchbase.org/#/c/29832/

I need the results ASAP, so please do this today if possible. We can touch base on our weekly tonight. If you run into any issues building or running the code, let me know asap.

Thanks,

Jeff



 Comments   
Comment by Saakshi Manocha [ 11/Nov/13 ]
we will track the progress of this task in SDKQE-389




[NCBC-319] Update 3rd party project dependencies to most recent versions Created: 28/Oct/13  Updated: 28/Oct/13  Due: 28/Oct/13  Resolved: 28/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Update each project's Nuget references to lastest versions of 3rd party dependencies - e.g. Newtonsoft, Hammock, RestSharp, etc.

 Comments   
Comment by Jeff Morris [ 28/Oct/13 ]
http://review.couchbase.org/#/c/29834/




[NCBC-318] Status Code list contains duplicate value Created: 28/Oct/13  Updated: 03/Dec/13  Resolved: 11/Nov/13

Status: Closed
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: David Haikney Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://github.com/couchbase/couchbase-net-client/blob/master/src/Enyim.Caching/StatusCode.cs

List of status codes contains duplicate entries:

UnknownCommand = 0x0082,
OutOfMemory = 0x0082,

Looks like UnknownCommand should be 0x0081

 Comments   
Comment by Jeff Morris [ 11/Nov/13 ]
http://review.couchbase.org/#/c/30237/




[NCBC-317] Mark Sync operations as obsolete Created: 24/Oct/13  Updated: 28/Oct/13  Resolved: 28/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Functionality has been replaced by "Observe"

 Comments   
Comment by Jeff Morris [ 28/Oct/13 ]
http://review.couchbase.org/#/c/29750/




[NCBC-316] GetJson unable to retrieve list of ints Created: 23/Oct/13  Updated: 29/Oct/13  Resolved: 29/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.5, 1.2.6, 1.2.7, 1.2.8
Fix Version/s: 1.3.0

Type: Bug Priority: Major
Reporter: Stephen Phillips Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Couchbase 2.0.1 server on Windows 2008 R2
Couchbase sdk running on Windows 7 64bit


 Description   
Using the following code the couchbase .net SDK is unable to retrieve a list of ints from couchbase:

var list = new List<int>() { 1, 2, 3, 4};
_client.StoreJson(StoreMode.Set, "Test", list);
_client.GetJson<List<int>>( "Test");

We are currently running 1.2.4 and it works fine, all versions after this up to 1.2.9 all throw the following error:
Newtonsoft.Json.JsonReaderException was unhandled
  HResult=-2146233088
  Message=Could not convert string to integer: id. Path '[0]', line 1, position 5.
  Source=Newtonsoft.Json
  LineNumber=1
  LinePosition=5
  Path=[0]
  StackTrace:
       at Newtonsoft.Json.JsonReader.ReadAsInt32Internal()
       at Newtonsoft.Json.JsonTextReader.ReadAsInt32()
       at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)
       at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
       at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
       at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
       at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
       at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
       at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
       at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
       at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
       at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
       at Couchbase.Extensions.CouchbaseClientExtensions.GetJson[T](ICouchbaseClient client, String key)
       at CouchbaseLookup.Lookup.button1_Click(Object sender, EventArgs e) in C:\Code\Features\Feature-ETOM-Phase2\utils\CouchbaseLookup\Lookup.cs:line 32
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at CouchbaseLookup.Program.Main() in C:\Code\Features\Feature-ETOM-Phase2\utils\CouchbaseLookup\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:


 Comments   
Comment by Jeff Morris [ 29/Oct/13 ]
http://review.couchbase.org/#/c/29746/




[NCBC-315] Add error tracking to MultiGet() Created: 20/Oct/13  Updated: 04/Dec/13  Resolved: 04/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.3.1

Type: Improvement Priority: Minor
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://www.couchbase.com/issues/browse/CBSE-682

 Comments   
Comment by Jeff Morris [ 04/Dec/13 ]
NCBC-293




[NCBC-314] Runaway worker process when cluster node shutdown - SessionState provider Created: 18/Oct/13  Updated: 18/Oct/13

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Jeff Morris Assignee: Saakshi Manocha
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/communities/q-and-a/runaway-worker-process-when-cluster-node-shutdown-sessionstate-provider

>>Hi All,

I am experiencing a problem that has multiple symptoms and all in all seems very strange.

I have a single Windows Server 2012, IIS8 EC2 instance hosting an ASP .Net WebForms site using .Net Fx 4.0. This is configured to use a Couchbase 2.1.1 community edition (build-764-rel) cluster of 2 nodes.

The Client components are: CouchBaseNetClient 1.2.9 and CouchBaseAspNet 1.2.1 both installed from NuGet.

The Problem:

If I shutdown one of the nodes (either one, same problem) to simulate failure; then the following are observed.

The connected browser clients get redirected to a 404 page when they try to postback.

If I re-enter the home page url in the browser and navigate there, the server does not repsond to the get request and the server's w3wp process jumps to 50% and just sits there. If I browse to the site from another client, the w3wp processor usage jumps to 100% - eventually these requests timeout on the browser but the processor use remains the same on the server.

Stopping and starting the app pool seems to have no effect, a full iisreset is required. When I then access the site again after an iisreset, any pages that use session state timeout.

The system cannot be restored to working condition until the dropped Couchbase node is returned to the cluster.

This problem happens when exclusiveAccess is set to true or false.

The web.confg entries are included below:

Web.config:

<sessionState customProvider="Couchbase" mode="Custom" timeout="10">
<providers>
<add name="Couchbase" type="Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet"
exclusiveAccess="false" />
</providers>
</sessionState>
</system.web>
<couchbase>
<servers bucket="default" bucketPassword="passwd">
<add uri="http://cache1.domain.com:8091/pools" />
<add uri="http://cache2.domain.com:8091/pools" />
</servers>
</couchbase>
<code>

- See more at: http://www.couchbase.com/communities/q-and-a/runaway-worker-process-when-cluster-node-shutdown-sessionstate-provider#sthash.6cTgPjM3.dpuf

 Comments   
Comment by Jeff Morris [ 18/Oct/13 ]
Saakshi -

Can you try to replicate this?

-Jeff




[NCBC-313] Community Release Notes link needs updating Created: 18/Oct/13  Updated: 04/Dec/13  Resolved: 04/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 1.3.1

Type: Task Priority: Major
Reporter: David Haikney Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The release note link on the .NET getting started page http://www.couchbase.com/communities/net/getting-started points to the out of date set of release notes here: http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-rn.html

It should be updated to point here: http://docs.couchbase.com/couchbase-sdk-net-1.2/#appendix-release-notes

 Comments   
Comment by Jeff Morris [ 04/Dec/13 ]
Once the latest release notes are published, I'll update again.




[NCBC-312] Client API documentation for the creation of Design Docs/Views Created: 09/Oct/13  Updated: 05/Feb/14  Resolved: 10/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.2.8
Fix Version/s: backlog-2.0

Type: New Feature Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Won't Fix Votes: 0
Labels: views
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From a user:

 "We’ve been reviewing again using couchbase for a couple of bits but have noticed that the current .net client has no ability to create views and this has to be done via the console. If we went this route this could become a management nightmare for us."

 Comments   
Comment by Jeff Morris [ 09/Oct/13 ]
There is some documentation here: http://docs.couchbase.com/couchbase-sdk-net-1.2/#appendix-cluster-management-with-thenet-client-library
Comment by Matt Ingenthron [ 10/Oct/13 ]
Closeable?
Comment by Jeff Morris [ 10/Oct/13 ]
Yes, I think so.
Comment by Jeff Morris [ 10/Oct/13 ]
Documentation can be found here:
http://docs.couchbase.com/couchbase-sdk-net-1.2/#appendix-cluster-management-with-thenet-client-library




[NCBC-311] Uncaught Null Reference Exception causes host process to terminate Created: 09/Oct/13  Updated: 03/Dec/13  Resolved: 03/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Bug Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: enyim
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From the Enyim github repo:

I found a potential race condition inside Enyim.Caching causing a null reference exception which propagates up through CouchbaseClient and crashes the IIS process.

I've filed an issue on Github with the details but also want to see if Couchbase team can do anything about it. I'm not sure if or how Couchbase team is related to the Enyim.Caching project.

https://github.com/enyim/EnyimMemcached/issues/131:

I got this in my Windows event log:

An unhandled exception occurred and the process was terminated.

Application ID: /LM/W3SVC/1/ROOT/oa3

Process ID: 3432

Exception: System.NullReferenceException

Message: Object reference not set to an instance of an object.

StackTrace: at Enyim.Caching.CountdownEvent.Signal()
at Couchbase.CouchbaseClient.<>c__DisplayClass16.b__f(Boolean success)
at Couchbase.SyncOperation.<>c__DisplayClass2.b__1(Boolean readSuccess)
at Enyim.Caching.Memcached.Protocol.Binary.BinaryResponse.DoDecodeHeader(AsyncIOArgs asyncEvent, Boolean& pendingIO)
at Enyim.Caching.Memcached.Protocol.Binary.BinaryResponse.DoDecodeHeaderAsync(AsyncIOArgs asyncEvent)
at Enyim.Caching.Memcached.PooledSocket.AsyncSocketHelper.EndReceive()
at Enyim.Caching.Memcached.PooledSocket.AsyncSocketHelper.AsyncReadCompleted(Object sender, SocketAsyncEventArgs e)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags)
at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

It caused IIS / AppPool to crash. Looking at the source code I suspect it's a potential race condition where Enyim.Caching.CountdownEvent.mre was set to null by the Dispose() method while CouchbaseClient.PerformMultiSync() is calling .Signal() in an async operation (which calls this.mre.Set() triggering the NRE). Maybe there should be a null check before calling mre.Set()?

 Comments   
Comment by Jeff Morris [ 03/Dec/13 ]
http://review.couchbase.org/#/c/30275/




[NCBC-310] Refactor Connection Pool Created: 07/Oct/13  Updated: 04/Dec/13  Resolved: 04/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Improvement Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Refactor and implement connection pool.

 Comments   
Comment by Jeff Morris [ 28/Oct/13 ]
http://review.couchbase.org/#/c/29832/
Comment by Jeff Morris [ 28/Oct/13 ]
Note the commit above may not work for versions of couchbase < 2.0. Is this a problem? If so, I can make it 1.8 compatible.
Comment by Perry Krug [ 29/Oct/13 ]
As per your last comment, I think it will be a problem if we don't provide at least a warning to pre-2.0 users (which we still have some of...and some of those are using .NET). If you can make it compatible, that would be great, if not, we need to make sure it's clear that users should not upgrade to this version if they are not yet on 2.0.
Comment by Jeff Morris [ 04/Dec/13 ]
Fixed by release of 1.3.0




[NCBC-309] Move .NET API documentation from docs repo to auto-doc Created: 07/Oct/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.2.8
Fix Version/s: backlog-1.0

Type: Improvement Priority: Blocker
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Σ Remaining Estimate: Not Specified Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: Not Specified Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates NCBC-248 Touch should return a boolean Resolved
duplicates NCBC-179 Add expiries and CAS to StoreJson ext... Resolved
Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-321 Add XML Comments to Source Technical task Resolved Jeff Morris  
NCBC-322 Setup Sandcastle and generate documen... Technical task Open Jeff Morris  

 Description   
Look into visual studio support for ///




[NCBC-308] KeyExists does not release socket pool if not found Created: 04/Oct/13  Updated: 29/Oct/13  Resolved: 29/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Bug Priority: Major
Reporter: Ivars Auzins Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Windows 8


 Description   
Changes in src\Enyim.Caching\Memcached\PooledSocket.cs for release 1.2.8 changed Dispose method and now no longer calls CleanupCallback. Now KeyExists fills pool after 20 calls.


 Comments   
Comment by Ivars Auzins [ 04/Oct/13 ]
This happens with positive KeyExists calls as well.
All subsequent calls return with StatusCode 145, Message "Pool is full, timeouting" and Exception "The operation has timed out".
Comment by Ivars Auzins [ 04/Oct/13 ]
I added pull request with a fix: https://github.com/couchbase/couchbase-net-client/pull/7
Comment by Jeff Morris [ 29/Oct/13 ]
Resolved with 1.2.9 release:
http://review.couchbase.org/#/c/29347/




[NCBC-307] Refactor/Re-implement Connection Pool Created: 03/Oct/13  Updated: 04/Dec/13  Resolved: 04/Dec/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Improvement Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Jeff Morris [ 04/Dec/13 ]
NCBC-310




[NCBC-306] .NET GetJSON operation throws null reference exception Created: 03/Oct/13  Updated: 28/Oct/13  Resolved: 28/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.8
Fix Version/s: 1.3.0

Type: Bug Priority: Critical
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
"When I try to perform a GetJSON operation for a key that doesn't have any data associated with it, I get a null reference exception. Is this the expected behaviour? Looking at the source for the .NET client it seems that a null check is performed, but too late."

 Comments   
Comment by Jeff Morris [ 28/Oct/13 ]
http://review.couchbase.org/#/c/29840/

I am not sure if my implementation is sufficient...however, a null value will be returned by the GetJson method if it was set by the SetJson method. My concern is that is it valid to have a null document in a bucket? Also, the string "null" is what is what is returned by the server.




[NCBC-305] Improve setup and tear down phases of unit tests Created: 01/Oct/13  Updated: 01/Oct/13

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Minor
Reporter: Saakshi Manocha Assignee: Saakshi Manocha
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
In many bucket admin tests in particular, the test should clear the bucket that it creates and also improve the wait condition




[NCBC-304] log4net logging broken Created: 27/Sep/13  Updated: 27/Sep/13

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.7
Fix Version/s: None

Type: Task Priority: Major
Reporter: SkeLLLa Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
When logging is configured to log4net like in .net client manual it throws exception:
"Could not load file or assembly 'Enyim.Caching, Version=2.12.0.0, Culture=neutral, PublicKeyToken=05e9c6b5a9ec94c2'"

In release notes http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-rn_1-2-7a.html said that this is "fixed" and it should work if I update all components through nuget. But I don't use nuget, I just downloaded zip archive from http://packages.couchbase.com/clients/net/1.2/Couchbase-Net-Client-1.2.7.zip and included all nessesary references.

 Comments   
Comment by SkeLLLa [ 27/Sep/13 ]
I think that packaged version of log4net adapter in zip file is broken.




[NCBC-303] Add intro to .NET SDK guides Created: 24/Sep/13  Updated: 01/Oct/13  Resolved: 01/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.0, 1.1, 1.2.0
Fix Version/s: 1.0, 1.1, 1.2.0

Type: Task Priority: Minor
Reporter: Amy Kurtzman Assignee: Gwen Leong
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The SDK guides currently begin with the Getting Started section. They need an introduction and meaningful web page title so customers know what guide they are reading.

For each version of the SDK guide, please:

1. Add a short introduction (# Introduction) before the Getting Started section. Sample intro:
    This guide provides information for developers who want to use the Couchbase <language> SDK to
    build applications that use Couchbase Server.

2. In the corresponding index.erb file, change the title to one that follows this naming pattern:
    Couchbase <language> SDK <version> Guide

 Comments   
Comment by Gwen Leong [ 01/Oct/13 ]
Added to all versions.
http://docs.couchbase.com/couchbase-sdk-net-1.2/




[NCBC-302] "Failed to initialize the pool" errors in MVC Application Created: 24/Sep/13  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: None
Affects Version/s: None
Fix Version/s: backlog-1.0

Type: Bug Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From the forums post: http://www.couchbase.com/communities/q-and-a/getting-intermittent-error-failed-initialize-pool

We're using version 1.2.6 of the .NET client and version 2.0.1 community version of the server.

We will occasionally get a flood of the following errors. We are seeing this error in an MVC application. I've done quite a bit of google'fu and haven't seen anything about this couchbase issue. Also note that this seems to happen randomly, although I'm still investigating.

message: Failed to initialize the pool.
level: Error
stacktrace: at System.Web.AspNetSynchronizationContext.OperationStarted() at System.Net.WebClient.DownloadStringAsync(Uri address, Object userToken) at Couchbase.DefaultHttpClient..ctor(Uri baseUri, String username, String password, TimeSpan timeout, Boolean shouldInitConnection) at Couchbase.DefaultHttpClientFactory.Create(Uri baseUri, String username, String password, TimeSpan timeout, Boolean shouldInitializeConnection) at Couchbase.Configuration.CouchbaseClientSection.Couchbase.Configuration.ICouchbaseClientConfiguration.CreateHttpClient(Uri baseUri) at Couchbase.CouchbaseNode..ctor(IPEndPoint endpoint, Uri couchApiBase, ICouchbaseClientConfiguration config, ISaslAuthenticationProvider authenticationProvider) at Couchbase.CouchbasePool.CreateNode(IPEndPoint endpoint, ISaslAuthenticationProvider auth, Dictionary`2 nodeInfo) at Couchbase.CouchbasePool.InitVBucket(ClusterConfig config, ISaslAuthenticationProvider auth) at Couchbase.CouchbasePool.ReconfigurePool(ClusterConfig config)

message: An asynchronous operation cannot be started at this time. Asynchronous operations may only be started within an asynchronous handler or module or during certain events in the Page lifecycle. If this exception occurred while executing a Page, ensure that the Page is marked <%@ Page Async="true" %>.
- See more at: http://www.couchbase.com/communities/q-and-a/getting-intermittent-error-failed-initialize-pool#sthash.5M7ARZk9.dpuf




[NCBC-301] Connection pool exaustion StatusCode and error messages Created: 24/Sep/13  Updated: 02/Oct/13  Due: 24/Sep/13  Resolved: 02/Oct/13

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.2.8

Type: Task Priority: Major
Reporter: Jeff Morris Assignee: