[NCBC-505] Ram size variable overflows when deserializing configuration Created: 11/Jun/14  Updated: 13/Jun/14  Resolved: 13/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 1

Type: Bug 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   
"I have been trying to use this DP1. It throws "JSON integer 15456010240 is too large or small for an Int32. Path '[0].quota.ram', line 1, position 12344" at the line cluster.OpenBucket(bucketName); Should that not be Int64 variable to hold the RAM size?"

 Comments   
Comment by Jeff Morris [ 13/Jun/14 ]
commit e73b094db436ddadaa078b30389c33af2f66378f




[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-484] Can't connect to local or remote Couchbase server Created: 20/May/14  Updated: 02/Jun/14  Resolved: 02/Jun/14

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

Type: Bug Priority: Blocker
Reporter: niculear Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: windows
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Client - Windows 8.1
Servers tested:
  Windows Server 2012
  Windows 8.1
  Windows 7
  Centos 6

Attachments: Zip Archive CouchBase_Connect_Test.zip    

 Description   
I've written a test application that just connects to a Couchbase server, and reads one record. I've tested this app on other machines and it works, however I can't connect to any Couchbase server (local or remote) from my local machine. Every time, I get a System.Net.WebException when it times out.

Firewall is turned off
There are no HTTP debugging applications running
I can connect to the server via a web browser
Using a CouchbaseCluster connection works

Attached is my solution, and the log is in the /bin/debug folder.

 Comments   
Comment by Jeff Morris [ 20/May/14 ]
Does the "test-bucket" exist? Once I changed the source to this it worked for me locally:

            var conn = new CouchbaseClientConfiguration();
            conn.Urls.Add(new Uri("http://127.0.0.1:8091/pools/"));
            conn.Bucket = "default";
            conn.HttpRequestTimeout = new TimeSpan(0, 1, 0);

If does exist, then it's probably something that's blocking the streaming http connection from establishing. I usually see this with Fiddler/Charles on startup, but once the client has established it's connection you can run the http debugger with no problems. Is there something else that's possibly blocking the connection?
Comment by niculear [ 20/May/14 ]
Yes, I created a bucket called 'test-bucket' with default settings, and created one record in it:

UniqueID1 { "test-data": "It's Working!" }
Comment by Jeff Morris [ 20/May/14 ]
What happens when you change 127.0.0.1 => localhost? You mentioned you are using Hyper-V? That could be the problem...have you tried running VS using admin credentials ("run as adminstrator")?

Also, try changing the Get<string>(...) to ExecuteGet<string>(..) and then checking the result.Message property.
Comment by niculear [ 20/May/14 ]
Hi Jeff,

I've been running VS as admin the whole time, changing loopback address to localhost incurs the same result, and here is the response I get when using ExecuteGet:

Unable to locate node

If I run the app inside of one of my Hyper-V vm's (pointing to the host machine) it works.

Nick
Comment by niculear [ 20/May/14 ]
Hi Jeff,

Looks like it was my anti-virus after all. I use BitDefender, and after disabling the firewall, anti-virus, and every other service that could be disabled I looked for other causes for this problem. I decided to try uninstalling BitDefender from my system, and it seemed to work after that. I'll be opening a ticket with them to see why this is happening, so thanks for your help, and sorry to waste your time.

Nick
Comment by Jeff Morris [ 20/May/14 ]
No problem, just close this ticket :)
Comment by Jeff Morris [ 20/May/14 ]
Also, could you please update your question with the answer? http://www.couchbase.com/communities/q-and-a/windows-81-machine-will-not-connect-couchbase

It helps the next person who encounters the problem down the road.

Thanks,

Jeff

Comment by Jeff Morris [ 02/Jun/14 ]
User resolved.




[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-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-363] Implement Client Configuration Management Created: 13/Jan/14  Updated: 31/May/14  Due: 27/Jan/14  Resolved: 31/May/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


 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

 

 Comments   
Comment by Jeff Morris [ 31/May/14 ]
commit b14e551ee8442d605f414fe0e6bde0f8b5bddde1

Additional work will be required as we define the set of configurable elements, but the base functionality is completed.




[NCBC-362] Implement Server Configuration Management Created: 13/Jan/14  Updated: 02/Jun/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 DP1

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-365] Incoming and Outgoing Data Serialization Created: 13/Jan/14  Updated: 19/Jun/14  Due: 27/Jan/14  Resolved: 19/Jun/14

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

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 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



 

 Comments   
Comment by Jeff Morris [ 19/Jun/14 ]
commit 4b57e61762fc57e51f028c723bb6b2cec6e2a683




[NCBC-366] Implement Connection Pool Created: 13/Jan/14  Updated: 02/Jun/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 DP1

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-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-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-289] Does not return errors object on view operation Created: 14/Aug/13  Updated: 10/Dec/13  Resolved: 10/Dec/13

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

Type: New Feature Priority: Blocker
Reporter: Patrick Varley Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: customer
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The couchbase maunal shows the JSON for view responses:
http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-querying-errorcontrol.html

The Java and python SDK have ability to access errors .net does not.

Looking at CouchbaseViewHandler. It looks like its meant to be throwing an exception when it gets errors in the JSON. However that exception will never happen as there is a bug on lines 95 to 101 (code below). The two if statements counter each other. You can fix it via calling jsonReader.Read() after the 1st if statement however I believe that is not the correct solution. We should return an error object. I think the whole IEnumerator<T> TransformResults<T>(Func<JsonReader, T> rowTransformer, IDictionary<string, string> viewParams) needs looking at.

if (jsonReader.TokenType == JsonToken.PropertyName
&& jsonReader.Depth == 1
&& ((string)jsonReader.Value) == "errors")
{
// we skip the deserialization if the array is null
if (jsonReader.TokenType == Newtonsoft.Json.JsonToken.StartArray)
{

 Comments   
Comment by Matt Ingenthron [ 12/Nov/13 ]
Jeff is running with this change.
Comment by Patrick Varley [ 18/Nov/13 ]
Jeff,

From what I remember looking at the code it look like the error object would only get initialised once the JSON respond was full parsed.
There were some operations that did not parsed the JSON to the end.

Please let me know if the method I created in http://review.couchbase.org/#/c/29173/ will be changed.

I know you been busy and this can wait until the December release.

Thanks,
Patrick
Comment by Jeff Morris [ 18/Nov/13 ]
Patrick -

I am mainly holding back on this only because we don't have valid unit tests to ensure that it works as expected. To make it easier to unit test, I am refactoring the code a bit so that any stream (not just the response from a web request) can run through that code. I started on this and then had to put it on the back burner for a bit, but will be jumping back to it as soon as 1.3.0 is released.

If anything needs to be changed, I'll let you know!

Thanks,

Jeff
Comment by Jeff Morris [ 05/Dec/13 ]
We decided to throw an exception when an error is detected for all view
error cases. In the next version (2.x) of the client will make a decision
on how we want the client to behave when an error is encountered when
processing a view. This commit makes it consistent across all error cases
and does not change the interface, which would likely impact users
requiring them to change there code from handling exceptions to checking
an errors property for failures.

This commit also adds additional unit tests and refactors the
CouchbaseViewHandler class so that we can pass streams into the
ReadResponse method that contain text resembling errors returned from the
server.
Comment by Jeff Morris [ 10/Dec/13 ]
CR & Submitted via gerrit




[NCBC-285] add new approach to retrieve configuration over memcached binary protocol Created: 30/Jul/13  Updated: 02/Jun/14  Resolved: 16/Mar/14

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

Type: New Feature Priority: Blocker
Reporter: Matt Ingenthron Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: cccp
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on MB-8728 add a new operation which allows for ... Closed

 Description   
To support better faster, more reliable response to configuration changes, the .NET client should change from HTTP streaming configuration to the new memcached binary protocol method delivered under project CCCP.

This may require adding new constructors and app.config options to be hostname and optionally port number driven.

This is part of project CCCP, as covered at http://www.couchbase.com/wiki/display/couchbase/Cluster+Configuration+Carrier+Publication




[NCBC-278] NREs thrown when executing views on overloaded server Created: 08/Jul/13  Updated: 02/Oct/13  Resolved: 02/Oct/13

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

Type: Bug Priority: Blocker
Reporter: Mark Nunberg Assignee: Mark Nunberg
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Gantt: start-finish

 Description   
This is in the view code, should be a quick fix.

In a nutshell, rapidly querying the view ends up throwing an NRE thus crashing the calling thread. This seems to be thrown from the System.Web code, but is probably something wrong in the client itself

 Comments   
Comment by Mark Nunberg [ 09/Jul/13 ]
http://review.couchbase.org/#/c/27355/2
Comment by Mark Nunberg [ 09/Jul/13 ]
http://review.couchbase.org/#/c/27358/




[NCBC-257] During rebalance client tries to connect the primary node only Created: 02/May/13  Updated: 02/Oct/13  Resolved: 02/Oct/13

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

Type: Bug Priority: Blocker
Reporter: Saakshi Manocha Assignee: Jeff Morris
Resolution: Fixed Votes: 2
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
I'm adding this bug to identify performance issue that is raised in CBSE-521 and CBSE-528

It is observed during the sdkd scenario tests, that while rebalance is happening, the client tries to connect only the primary node and does not connect to the other secondary nodes in the cluster. During rebalance the topology changes and hence many errors like socket reset, no response received, operation time out, etc.
These errors go away when the rebalance is over and with rebound phase, no errors are observed.
Please see some sample reports:
http://sdk-testresults.couchbase.com.s3.amazonaws.com/sdkd/HWIN-335SPEPOCGT-IHYBRID_fo-ept-rb-Sdotnet-1.2-release-T2013-04-02-00.11.35-LV_MC_BASIC.txt
http://sdk-testresults.couchbase.com.s3.amazonaws.com/sdkd/HWIN-335SPEPOCGT-IHYBRID_rb-2-in-Sdotnet-1.2-release-T2013-04-02-00.21.03-LV_HTTP_BASIC.txt
http://sdk-testresults.couchbase.com.s3.amazonaws.com/sdkd/HWIN-335SPEPOCGT-IHYBRID_fo-ept-eject-Sdotnet-1.2-release-T2013-04-02-00.17.30-LV_HTTP_BASIC.txt

Mark - need your input here too, do you think these errors during rebalance can impact performance or stability at customer site.


 Comments   
Comment by Saakshi Manocha [ 02/May/13 ]
Also, as per the documentation and our understanding, we can expect errors during CHANGE phase and ideally they should go away in REBOUND phase.

CHANGE: Here we see that errors start happening. This is because a cluster topology change started around this time. We can expect errors until the topology change is completed. In this case, the topology change was adding a single node to the cluster.
REBOUND: Here we see the errors are stopping. This is because the topology change has been completed. Since we added an extra node to the
cluster, the rate of operations has actually gone up from before. This is because there are more nodes to handle requests now.
Comment by Matt Ingenthron [ 10/May/13 ]
This appears to be a critical issue. Marking as blocker for 1.2.7 until we have a better understanding.
Comment by John Zablocki (Inactive) [ 15/May/13 ]
When you say "connect to the primary node only" are you referring to the streaming connection or all ops are going on the primary node?
Comment by Saakshi Manocha [ 23/May/13 ]
I ran the sdkd tests on a 4-node cluster. During the fail-over/rebalance phase, client automatically considers one node as the primary node and throughout the logs, the error is:
 System.IO.IOException: Failed to read from the socket '10.3.3.206:11210'. Error: SocketError value was Success, but 0 bytes were received

It only tries to connect to the primary node, never tries to connect to the other nodes, and once the primary node is up and the rebalance is over, the error rate slows down.
Comment by Michael Catanzariti [ 09/Sep/13 ]
Any news about that one?
we are experimenting the same issue when adding or removing a node into/from the cluster of 3 nodes during a load test (10000 concurrent users)

It seems that the client library is returning null on CouchbaseClient.GetWithCas only during the rebalance operation (a few minutes) as if it could not find existing documents.
once the rebalance operation is over, the driver returns correctly the existing documents
Comment by Michael Catanzariti [ 10/Sep/13 ]
Hi, We just trace the code of library and it seems the problems occurs in the method CouchbaseClient.ExecuteWithRedirect in the following section

if (iows.State == OperationState.InvalidVBucket)
{
    var nodes = this.Pool.GetWorkingNodes();

    foreach (var node in nodes)
    {
        opResult = node.Execute(op);
....


when the cluster is rebalancing, the nodes could be all disposed and the node.Execute method returns an error for ALL the nodes

Our further investigations lead us to think that a there is a race condition between disposing nodes when the driver receives a new config from the cluster and the execution of requests by the client.
Indeed in the method CouchbasePool.ReconfigurePool the statement "Interlocked.Exchange(ref this.state, state);" does not protect the method CouchbaseClient.ExecuteWithRedirect to get the old nodes.
The nodes could be the current ones in the statement "var nodes = this.Pool.GetWorkingNodes();" and the line after they could be already disposed by the listener thread.

I hope to be clear enough :)


Comment by Matt Ingenthron [ 10/Sep/13 ]
Thanks for the investigation information Michael, this should help us more quickly get to the bottom of it.
Comment by Jeff Morris [ 12/Sep/13 ]
I am looking into the issue and I see a couple of places in the CouchbasePool class that are suspect. I'll dig deeper into this and follow up with a resolution asap.

Comment by Jeff Morris [ 25/Sep/13 ]
http://review.couchbase.org/#/c/29197/




[NCBC-78] Enhance discussion of return codes/values Created: 26/Jun/12  Updated: 31/Jan/14  Resolved: 31/Jan/14

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

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

Attachments: Microsoft Word error-code-checking.docx    
Issue Links:
Duplicate
is duplicated by NCBC-249 We need documentation that explains h... Resolved

 Description   
Given the comments on this page: http://www.couchbase.com/docs/couchbase-sdk-net-1.1/couchbase-sdk-net-retrieve-set.html

Perhaps there can be a section on the possible return codes/values, what they mean, when they might happen, and how to deal with them?

 Comments   
Comment by Mark Nunberg [ 22/Nov/12 ]
This is a must-have for SDK testing. It is very difficult to determine failure types and severities without knowing what types of errors, exception classes, or such to expect.

At the very least, there should be standard return codes (in a well-defined location) for memcached error codes.
Comment by Jeff Morris [ 30/Jan/14 ]
Possible dupe: http://www.couchbase.com/issues/browse/NCBC-249#comment-77768
Comment by Jeff Morris [ 30/Jan/14 ]
Proposed amendment to documentation. Please review and provide feedback.
Comment by Perry Krug [ 31/Jan/14 ]
Thanks Jeff, this is a great start and well explained. I think it fits very nicely into our documentation, and just needs to be linked to from a variety of places in order to help people find it.

I think it would also be helpful to see some examples of handling of some of the more common error codes
Comment by Jeff Morris [ 31/Jan/14 ]
Great. I think we should consider this a "work in progress" and do a bit each month. Probably the best way to approach this is to create separate, specific tickets addressing documentation that we are lacking and ad them to the backlog. I'll pull one or two into each monthly "sprint" that I do for a release. From a workflow perspective, I like jira tickets to have a short lifespan...makes me feel more productive ;)
Comment by Jeff Morris [ 31/Jan/14 ]
This will sit underneath: http://docs.couchbase.com/couchbase-sdk-net-1.3/#appendix-working-with-operation-results

Note that it's no longer listed as an "appendix" but as a section: "Working with Operation Results and Error Codes"

Will be published with release notes for 1.3.2 on Tuesday.




[NCBC-3] NuGet download is not working correclty Created: 01/Aug/11  Updated: 05/Aug/11  Resolved: 05/Aug/11

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

Type: Bug Priority: Blocker
Reporter: Matt Ingenthron Assignee: Bin Cui
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Created a project with VisualStudio, and tried to bring in the dependencies with NuGet. Unfortunately, the assemblies don't come in, correctly.

From zipfile download, they do load correctly.

 Comments   
Comment by Bin Cui [ 05/Aug/11 ]
Republish the package with required format.




[NCBC-536] [.net client 2.0]ConfigObserverNotFoundException during rebalance + mutation Created: 26/Jun/14  Updated: 10/Jul/14  Resolved: 09/Jul/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 DP3

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

Attachments: File App.config    
Issue Links:
Dependency

 Description   
I run the test agains 2.5 and used not yet commited sdkd-net(client-2.0) version

packages\sdkdclient\bin\brun.bat -I cluster_config.ini -I sdkd.args -d all:debug --no-upload --dsw_kvcount 10


[47,87 INFO] (SDKD log:137) SetCommand req.Command MC_DS_MUTATE_SET
[47,87 INFO] (SDKD log:137) SetCommand req.Command MC_DS_MUTATE_SET
[77,76 INFO] (Scenario run:86) Starting CHANGE phase
[78,22 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 0%
[79,88 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 0%
[81,11 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 2%
[82,35 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 4%
[83,58 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 5%
[84,80 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 7%
[86,03 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 8%
[87,26 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 10%
[88,49 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 11%
[88,66 INFO] (SDKD log:137)
[88,68 INFO] (SDKD log:137) Необработанное исключение: Couchbase.Configuration.ConfigObserverNotFoundException: default
[88,68 INFO] (SDKD log:137) в Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.UpdateConfig(IBucketConfig bucketConfig) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Configuration\Server
\Providers\CarrierPublication\CarrierPublicationProvider.cs:строка 78
[88,69 INFO] (SDKD log:137) в Couchbase.Core.ClusterManager.NotifyConfigPublished(IBucketConfig bucketConfig) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\ClusterManager.cs:строка 196
[88,69 INFO] (SDKD log:137) в Couchbase.Core.Buckets.CouchbaseBucket.CheckForConfigUpdates[T](IOperationResult`1 operationResult) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:строка 464
[88,69 INFO] (SDKD log:137) в Couchbase.Core.Buckets.CouchbaseBucket.Upsert[T](String key, T value) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:строка 86
[88,69 INFO] (SDKD log:137) в Sdkd.Commands.SetCommand.ExecuteSingle(String key, String value) в c:\jenkins\workspace-net2\sdkd-net\src\Sdkd\Commands\SetCommand.cs:строка 77
[88,70 INFO] (SDKD log:137) в Sdkd.Commands.KVCommand.Run() в c:\jenkins\workspace-net2\sdkd-net\src\Sdkd\Commands\KVCommand.cs:строка 25
[88,70 INFO] (SDKD log:137) в SdkdConsole.Daemon.Handle.DispatchCommand(Request req) в c:\jenkins\workspace-net2\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:строка 193
[88,70 INFO] (SDKD log:137) в SdkdConsole.Daemon.Handle.Run() в c:\jenkins\workspace-net2\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:строка 125
[88,70 INFO] (SDKD log:137) в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
[88,70 INFO] (SDKD log:137) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
[88,71 INFO] (SDKD log:137) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
[88,71 INFO] (SDKD log:137) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
[88,71 INFO] (SDKD log:137) в System.Threading.ThreadHelper.ThreadStart()
[89,71 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 12%
[90,94 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 14%
[92,17 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 15%
[93,40 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 17%
[94,71 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 18%
[94,74 ERROR] (BRun maybePropagate:236) Suppressing driver-related error
com.couchbase.sdkdclient.context.HarnessException: Driver crashed
        at com.couchbase.sdkdclient.context.RunContext$5.call(RunContext.java:192) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.context.RunContext$5.call(RunContext.java:183) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at java.util.concurrent.FutureTask.run(Unknown Source) ~[na:1.7.0_60]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:1.7.0_60]
        at java.util.concurrent.FutureTask.run(Unknown Source) ~[na:1.7.0_60]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:1.7.0_60]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:1.7.0_60]
        at java.lang.Thread.run(Unknown Source) ~[na:1.7.0_60]
[94,75 DEBUG] (Handle sendMessageAsync:183) > CLOSEHANDLE@101.41
[94,75 WARN] (STester close:170) While stopping driver
java.net.SocketException: Connection reset by peer: socket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.7.0_60]
        at java.net.SocketOutputStream.socketWrite(Unknown Source) ~[na:1.7.0_60]
        at java.net.SocketOutputStream.write(Unknown Source) ~[na:1.7.0_60]
        at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source) ~[na:1.7.0_60]
        at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source) ~[na:1.7.0_60]
        at sun.nio.cs.StreamEncoder.implFlush(Unknown Source) ~[na:1.7.0_60]
        at sun.nio.cs.StreamEncoder.flush(Unknown Source) ~[na:1.7.0_60]
        at java.io.OutputStreamWriter.flush(Unknown Source) ~[na:1.7.0_60]
        at java.io.BufferedWriter.flush(Unknown Source) ~[na:1.7.0_60]
        at com.couchbase.sdkdclient.handle.Handle.sendMessageAsync(Handle.java:188) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.handle.Handle.close(Handle.java:253) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.driver.HandleManager.stopAll(HandleManager.java:26) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.driver.HostPortDriver.stop(HostPortDriver.java:118) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.driver.ExecutingDriver.stop(ExecutingDriver.java:117) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.stester.STester.close(STester.java:167) ~[sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.batch.BRun.runHarness(BRun.java:275) [sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.batch.BRun.runSingleTest(BRun.java:382) [sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.batch.BRun.run(BRun.java:466) [sdkdclient-1.0-SNAPSHOT.jar:na]
        at com.couchbase.sdkdclient.batch.BRun.main(BRun.java:508) [sdkdclient-1.0-SNAPSHOT.jar:na]


Sorry, some Russian words :)



[21:37:47] Brett Lawson: Yea, it LOOKS like it could be a .NET bug, but it also could be a bug in the test.
[21:38:32] Brett Lawson: You should debug a little bit to try and identify how its occuring.
[21:39:52] Andrei Baranouski: okay, will post a ticket for now. then I will commit my sdkd fixes and will provide steps to reproduce (command line)


 Comments   
Comment by Andrei Baranouski [ 27/Jun/14 ]
some investigations:

I've the following changes in GetCommand.cs & SetCommand.cs to handle ConfigObserverNotFoundException when rebalance started
If i get ConfigObserverNotFoundException I sleep 150 sec to wait when rebalance completed and retry:



$ git diff
diff --git a/src/Sdkd/Commands/GetCommand.cs b/src/Sdkd/Commands/GetCommand.cs
index 55a90eb..588f1d0 100644
--- a/src/Sdkd/Commands/GetCommand.cs
+++ b/src/Sdkd/Commands/GetCommand.cs
@@ -8,6 +8,8 @@ using Sdkd.Protocol.Dataset;
 using Couchbase.Core;
 using Couchbase.IO.Operations;
 using Couchbase.Core.Buckets;
+using Couchbase.Configuration;^M
+using System.Threading;^M

 namespace Sdkd.Commands
 {
@@ -15,7 +17,22 @@ public class GetCommand : KVCommand
 {
        public override IOperationResult<Object> ExecuteSingle(string key, string value)
        {
- IOperationResult<String> res = Client.Get<String>(key);
+ Console.WriteLine(" AAAA " + Client.Name);^M
+ Console.WriteLine(Client.ToString());^M
+ IOperationResult<String> res = null;^M
+ try^M
+ {^M
+ res = Client.Get<String>(key);^M
+ }^M
+ catch (ConfigObserverNotFoundException e)^M
+ {^M
+ Console.WriteLine("UNABLE TO GET " + key);^M
+ Console.WriteLine(e.StackTrace);^M
+ Thread.Sleep(150000);^M
+ res = Client.Get<String>(key);^M
+ Console.WriteLine("SUCCESS TO GET " + key);^M
+ }^M
+ ^M
                if (res.Success == false)
                {
                        // Do something here


diff --git a/src/Sdkd/Commands/SetCommand.cs b/src/Sdkd/Commands/SetCommand.cs
index 63d7091..466741d 100644
--- a/src/Sdkd/Commands/SetCommand.cs
+++ b/src/Sdkd/Commands/SetCommand.cs
@@ -9,6 +9,8 @@ using Newtonsoft.Json.Linq;
 using Couchbase.Core;
 using Couchbase.IO.Operations;
 using Couchbase.Core.Buckets;
+using Couchbase.Configuration;^M
+using System.Threading;^M

 namespace Sdkd.Commands
 {
@@ -74,7 +76,21 @@ public class SetCommand : KVCommand
         }
         else if (Mode == OperationCode.Set)
         {
- return Client.Upsert<Object>(key, value);
+ try^M
+ {^M
+ return Client.Upsert<Object>(key, value);^M
+ }^M
+ catch (ConfigObserverNotFoundException e)^M
+ {^M
+ Console.WriteLine(DateTime.Now.ToString("h:mm:ss tt"));^M
+ Console.WriteLine("UNABLE TO UPSERT " + key);^M
+ Console.WriteLine(e.StackTrace);^M
+ Thread.Sleep(150000);^M
+ Console.WriteLine(DateTime.Now.ToString("h:mm:ss tt"));^M
+ IOperationResult<Object> temp = Client.Upsert<Object>(key, value);^M
+ Console.WriteLine("SUCCESS TO UPSERT " + key);^M
+ return temp;^M
+ }^M
         }
         else
         {


[89,82 INFO] (SDKD log:137) UNABLE TO UPSERT SimpleKeyREP3REP3REP3REP3REP3REP3REP3REP3
[89,82 INFO] (SDKD log:137) в Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.UpdateConfig(IBucketConfig bucketConfig) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Configuration\Server
\Providers\CarrierPublication\CarrierPublicationProvider.cs:строка 78
[89,82 INFO] (SDKD log:137) в Couchbase.Core.ClusterManager.NotifyConfigPublished(IBucketConfig bucketConfig) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\ClusterManager.cs:строка 196
[89,82 INFO] (SDKD log:137) в Couchbase.Core.Buckets.CouchbaseBucket.CheckForConfigUpdates[T](IOperationResult`1 operationResult) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:строка 464
[89,82 INFO] (SDKD log:137) в Couchbase.Core.Buckets.CouchbaseBucket.Upsert[T](String key, T value) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:строка 86
[89,83 INFO] (SDKD log:137) в Sdkd.Commands.SetCommand.ExecuteSingle(String key, String value) в c:\jenkins\workspace-net2\sdkd-net\src\Sdkd\Commands\SetCommand.cs:строка 81
[90,74 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 22%
[91,97 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 23%
[93,19 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 24%
......................
[199,12 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 100%
[200,34 DEBUG] (RebalanceWaiter sweepOnce:38) Rebalance Progress: 100%
[201,56 INFO] (RebalanceWaiter sweepOnce:33) Rebalance complete
[201,57 INFO] (Scenario run:97) CHANGE phase done
[201,57 INFO] (Scenario run:103) Starting REBOUND for 90 seconds
[230,00 INFO] (SDKD log:137) 11:28:49
[230,01 INFO] (SDKD log:137) SUCCESS TO UPSERT SimpleKeyREP3REP3REP3REP3REP3REP3REP3REP3
[230,67 INFO] (SDKD log:137) 11:28:49
[230,67 INFO] (SDKD log:137) UNABLE TO UPSERT SimpleKeyREP5REP5REP5REP5REP5REP5REP5REP5
[230,67 INFO] (SDKD log:137) в Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.UpdateConfig(IBucketConfig bucketConfig) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Configuration\Serve
r\Providers\CarrierPublication\CarrierPublicationProvider.cs:строка 78
[230,67 INFO] (SDKD log:137) в Couchbase.Core.ClusterManager.NotifyConfigPublished(IBucketConfig bucketConfig) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\ClusterManager.cs:строка 196
[230,67 INFO] (SDKD log:137) в Couchbase.Core.Buckets.CouchbaseBucket.CheckForConfigUpdates[T](IOperationResult`1 operationResult) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:строка 464
[230,68 INFO] (SDKD log:137) в Couchbase.Core.Buckets.CouchbaseBucket.Upsert[T](String key, T value) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:строка 86
[230,68 INFO] (SDKD log:137) в Sdkd.Commands.SetCommand.ExecuteSingle(String key, String value) в c:\jenkins\workspace-net2\sdkd-net\src\Sdkd\Commands\SetCommand.cs:строка 81
[231,09 INFO] (SDKD log:137) 11:28:50
[231,10 INFO] (SDKD log:137)
[231,11 INFO] (SDKD log:137) Необработанное исключение: System.IO.IOException: Не удается записать данные в транспортное соединение: Программа на вашем хост-компьютере разорвала установленное подключение. ---> System.Net.Sockets.SocketException: Прог
рамма на вашем хост-компьютере разорвала установленное подключение
[231,11 INFO] (SDKD log:137) в System.Net.Sockets.Socket.BeginSend(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state)
[231,11 INFO] (SDKD log:137) в System.Net.Sockets.NetworkStream.BeginWrite(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
[231,11 INFO] (SDKD log:137) --- Конец трассировки внутреннего стека исключений ---
[231,12 INFO] (SDKD log:137) в System.Net.Sockets.NetworkStream.BeginWrite(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
[231,12 INFO] (SDKD log:137) в Couchbase.IO.Strategies.EapConnection.Send[T](IOperation`1 operation) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\IO\Strategies\EapConnection.cs:строка 35
[231,12 INFO] (SDKD log:137) в Couchbase.IO.Strategies.DefaultIOStrategy.Execute[T](IOperation`1 operation, IConnection connection) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\IO\Strategies\DefaultIOStrategy.cs:строка 32
[231,12 INFO] (SDKD log:137) в Couchbase.IO.Strategies.DefaultIOStrategy.Execute[T](IOperation`1 operation) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\IO\Strategies\DefaultIOStrategy.cs:строка 42
[231,13 INFO] (SDKD log:137) в Couchbase.Core.Server.Send[T](IOperation`1 operation) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Server.cs:строка 80
[231,13 INFO] (SDKD log:137) в Couchbase.Core.Buckets.CouchbaseBucket.Upsert[T](String key, T value) в c:\jenkins\workspace-net2\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:строка 84
[231,13 INFO] (SDKD log:137) в Sdkd.Commands.SetCommand.ExecuteSingle(String key, String value) в c:\jenkins\workspace-net2\sdkd-net\src\Sdkd\Commands\SetCommand.cs:строка 90
[231,13 INFO] (SDKD log:137) в Sdkd.Commands.KVCommand.Run() в c:\jenkins\workspace-net2\sdkd-net\src\Sdkd\Commands\KVCommand.cs:строка 25
[231,13 INFO] (SDKD log:137) в SdkdConsole.Daemon.Handle.DispatchCommand(Request req) в c:\jenkins\workspace-net2\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:строка 191
[231,14 INFO] (SDKD log:137) в SdkdConsole.Daemon.Handle.Run() в c:\jenkins\workspace-net2\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:строка 123
[231,14 INFO] (SDKD log:137) в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
[231,14 INFO] (SDKD log:137) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
[231,14 INFO] (SDKD log:137) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
[231,15 INFO] (SDKD log:137) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
[231,15 INFO] (SDKD log:137) в System.Threading.ThreadHelper.ThreadStart()


so, here I see that after rebalance the second attempt was successful for SimpleKeyREP3REP3REP3REP3REP3REP3REP3REP3 but I again get exception for SimpleKeyREP5REP5REP5REP5REP5REP5REP5REP5
Comment by Andrei Baranouski [ 30/Jun/14 ]
my final conclusion after a deep study of the problem

when we perform Upset item during rebalance we call Upsert() and then check operationResult.Status == ResponseStatus.VBucketBelongsToAnotherServer
so, in the tests we get _VBucketBelongsToAnotherServer



CouchbaseBucket.sh:
 public IOperationResult<T> Upsert<T>(string key, T value)
        {
            IVBucket vBucket;
            var server = GetServer(key, out vBucket);

            var operation = new SetOperation<T>(key, value, vBucket, _converter);
            var operationResult = server.Send(operation);

            if (CheckForConfigUpdates(operationResult)) --- CHECK RESULT
            {
                Log.Info(m => m("Requires retry {0}", key));
            }
            return operationResult;
        }



 bool CheckForConfigUpdates<T>(IOperationResult<T> operationResult)
        {
            var requiresRetry = false;
            if (operationResult.Status == ResponseStatus.VBucketBelongsToAnotherServer)
            {
                var bucketConfig = ((OperationResult<T>)operationResult).GetConfig();
                if (bucketConfig != null)
                {
                    Log.Info(m => m("New config found {0}", bucketConfig.Rev));
                    _clusterManager.NotifyConfigPublished(bucketConfig); ------------------------FAILED because ConfigObservers is empty for this bucketConnection
                    requiresRetry = true;
                }
            }
            return requiresRetry;
        }


I tried to find the problem in the tests, as code may not yet be _clean after switching on 2.0, but apparently the problem on the SDK client side, because I have no problems for CRUD operation with CouchbaseBucket instance, but when rebalance starts....
Comment by Andrei Baranouski [ 30/Jun/14 ]
Jeff, could you take a look at the issue?
if you need any assistance (details steps to reproduce or create separate ticket in 'Couchbase .NET client library", ...) please let me know.
Comment by Andrei Baranouski [ 30/Jun/14 ]
maybe my test logs will be something useful https://friendpaste.com/2mIKMKUmN9rTRdUUX5fKTf
Comment by Jeff Morris [ 30/Jun/14 ]
Andrei -

Thanks for the detailed analysis, I'll take a look into it.

- Jeff
Comment by Jeff Morris [ 08/Jul/14 ]
Andrei -

Is this happening on every run or is this the initial test run? Having a bit of a hard time replicating it, although I don't doubt it's existence :)

-Jeff
Comment by Andrei Baranouski [ 09/Jul/14 ]
yes, it happens in every test. but not immediately, it happens when the tests trigger rebalance and vbucket map is changed
Comment by Jeff Morris [ 09/Jul/14 ]
Change the value of this element to a valid path on the machine running SDK: <param name="File" value="C:\temp\log.txt" />

This file also has to be included in the SDKD directory - or cut and paste the relevant bits so that logging is enabled.
Comment by Jeff Morris [ 09/Jul/14 ]
commit 369b8f312239156f9a46fba279afd7c5a84b3c77

Use the contents of the app.config attached to enable logging and run the tests again. Afterwards, attach the log file so I can review it.
Comment by Andrei Baranouski [ 10/Jul/14 ]
Thanks Jeff! seems like the issue has been resolved http://sdkbuilds.couchbase.com/job/.net-sdkdclient-ng2-andrei/2/console

but now I also see http://www.couchbase.com/issues/browse/NCBC-545 on .net client 2.0

could you pay attention for the issue because it can solve (unsolved :) )problem SDKQE-539 - Memory issues on Jenkins slave is causing job to abort intermittently

Comment by Jeff Morris [ 10/Jul/14 ]
Andrei

Very good! Were you able to get the log file? I need that to ascertain if much hunch (and thus the patch) are correct.

Also, for those other tickets, please update those tickets instead of referencing them on this one :)

-Jeff




[NCBC-549] View queries are using localhost when client is configured for a remote Created: 10/Jul/14  Updated: 10/Jul/14  Resolved: 10/Jul/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 DP3

Type: Bug 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   
If you manually create a ViewQuery object and pass it to IBucket.Query(IViewQuery), it will use localhost as the base host instead of the remote host/ip that the cluster configuration has returned.

 Comments   
Comment by Jeff Morris [ 10/Jul/14 ]
Included in this commit e5ead27c1efa5d33bb4d0ba9f55d424ffd9d3c79




[NCBC-545] couchApiBase in pools/default/buckets/Bucket is in format http://IP:8092/BUCKET%2B/bucket_uuid( bucket_uuid is not required) Created: 08/Jul/14  Updated: 11/Jul/14  Resolved: 11/Jul/14

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

Type: Bug Priority: Blocker
Reporter: Andrei Baranouski Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: 3.0.0-918

Attachments: Zip Archive Common.Logging.Log4Net.zip     Text File log.txt     File NCBC-545.logs    

 Description   
it's a blocker issue for at least couchbase-net-client against 3.0.0

for example, in the client when we build URL for queries we get uri like

http://10.3.4.144:8092/default+83794f1eaa6682ae0ada19cf8befd7ea/_design/test_design/_view/test_view/

3.0.0-918:

http://10.3.4.144:8091/pools/default/buckets/default
"couchApiBase":"http://10.3.4.144:8092/default%2B83794f1eaa6682ae0ada19cf8befd7ea"

2.5.0
http://10.3.4.147:8091/pools/default/buckets/default
"couchApiBase":"http://10.3.4.147:8092/default"


 Comments   
Comment by Aleksey Kondratenko [ 08/Jul/14 ]
Please explain _exactly_ how we're not allowed to add bucket uuid.

What actually breaks because of that and how exactly ?
Comment by Andrei Baranouski [ 08/Jul/14 ]
https://github.com/couchbase/couchbase-net-client/blob/master/src/Couchbase/DefaultHttpClient.cs#L202

to query client uses Uri(client.BaseAddress + "/" + path + queryString);

so, we get request like http://10.3.4.149:8092/default+58d6b67e4c80af5721e9ffcb72be97e1/_design/_design/test_design/_view/test_view that is not valid

[74.44 INFO] (SDKD log:137) [Couchbase.CouchbaseViewHandler|Warn] Design document not found, body: {"error":"not_found","reason":"missing"}
Comment by Aleksey Kondratenko [ 08/Jul/14 ]
Didn't get. Why _design gets duplicated? How existence of bucket uuid in couchApiBase (which is supposed to be to opaque) can affect it ?
Comment by Andrei Baranouski [ 08/Jul/14 ]
Thanks Alk for your comments

sorry, "_design" is my copy-paste error.

logs that I've added during debug

[39.66 INFO] (SDKD log:137) !!!!!!!!!!!!!!!!!!!!!!http://10.3.4.146:8092/default+83794f1eaa6682ae0ada19cf8befd7ea/_design/test_design/_view/test_view?

--- a/src/Couchbase/DefaultHttpClient.cs
+++ b/src/Couchbase/DefaultHttpClient.cs
@@ -105,6 +105,7 @@ namespace Couchbase
             public DefaultHttpResponseWrapper(HttpWebRequest request)
             {
                 this.request = request;
+ Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!" + request.Address);
             }


I figured out what the reason

http://10.3.4.146:8092/default+83794f1eaa6682ae0ada19cf8befd7ea/_design/test_design/_view/test_view - doesn't work, @Jeff seems like client "%2B" shouldn't decode "plus" symbol?
http://10.3.4.146:8092/default%2B83794f1eaa6682ae0ada19cf8befd7ea/_design/test_design/_view/test_view - works fine

not CB server issue
Comment by Wayne Siu [ 08/Jul/14 ]
Moving the ticket to NCBC project.
Comment by Jeff Morris [ 08/Jul/14 ]
What .NET client version is this impacting? 1.X or 2.X? Can you update the "Affects Version" in the ticket header?

Thanks,

Jeff
Comment by Wayne Siu [ 08/Jul/14 ]
Andrei,
I think it's 1.3. But please confirm. Thanks.
Comment by Andrei Baranouski [ 09/Jul/14 ]
it's 1.3.*
I used master branch with the latest commit
https://github.com/couchbase/couchbase-net-client/commit/fae1e56154cb069a598dbb43a9a3cbc2c284ff40
Comment by Jeff Morris [ 10/Jul/14 ]
Adding the bucket uuid is an unexpected change, however it appears that once the client is aware of it, it works the same as just using the bucket now.
Comment by Jeff Morris [ 10/Jul/14 ]
commit e5ead27c1efa5d33bb4d0ba9f55d424ffd9d3c79
Comment by Andrei Baranouski [ 10/Jul/14 ]
run with this commit http://sdkbuilds.couchbase.com/job/.net-sdkdclient-ng2-andrei/4/console


[42.98 INFO] (SDKD log:137)  at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Couchbase.Core.Server.GetBaseViewUri(String bucketName) in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\couchbase-csharp-client-ng\Src\Couchbase\Core\Server.cs:line 107
   at Couchbase.Core.Server.Send[T](IViewQuery query) in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\couchbase-csharp-client-ng\Src\Couchbase\Core\Server.cs:line 85
   at Couchbase.Core.Buckets.CouchbaseBucket.Query[T](IViewQuery query) in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\couchbase-csharp-client-ng\Src\Couchbase\Core\Buckets\CouchbaseBucket.cs:line 481
   at Sdkd.Views.ViewCommand.GetViewObject(CouchbaseBucket cli, Request req, ViewOptions vo) in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 122
   at Sdkd.Views.ViewCommand.Run() in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 225
   at SdkdConsole.Daemon.Handle.DispatchCommand(Request req) in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 191
   at SdkdConsole.Daemon.Handle.Run() in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 123
   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()

Comment by Jeff Morris [ 10/Jul/14 ]
Hi Andrei -

Can you enable logging on the SDK (instructions are here: https://www.couchbase.com/issues/browse/NCBC-536) and attach the log file to this ticket? Here is blog on how to set it up (use the app.config i attached to NCBC-536): http://blog.couchbase.com/couchbase-net-sdk-20-development-series-logging

What your providing me is the SDKQE log, what I need is the internal SDK log - it will give me a trace of what is happening before the exception occurs.

Thanks,

Jeff
Comment by Andrei Baranouski [ 11/Jul/14 ]
Hi Jeff,

I'm able to get only client's logs in console http://sdkbuilds.couchbase.com/job/.net-sdkdclient-ng2-andrei/20/console
will they be useful for you?

because when I try to use app.config with "log4net" based on your example https://gist.github.com/andreibaranouski/f0d357a0c5a5897d848a I get https://friendpaste.com/3bWmWMkzZ93yJMq5htPSMI
[37.00 INFO] (SDKD log:137) Unhandled Exception: System.TypeInitializationException: The type initializer for 'Couchbase.Core.ClusterManager' threw an exception. ---> Common.Logging.ConfigurationExcep
tion: Failed obtaining configuration for Common.Logging from configuration section 'common/logging'. ---> System.Configuration.ConfigurationErrorsException: An error occurred creating the configuratio
n section handler for common/logging: Unable to create type 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net' (C:\temp\sdkd-out-debug\SdkdConsole.exe.Config line 42) ---> Co
mmon.Logging.ConfigurationException: Unable to create type 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net' ---> System.IO.FileNotFoundException: Could not load file or ass
embly 'Common.Logging.Log4Net' or one of its dependencies. The system cannot find the file specified. ---> System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\Users\Administra
tor\Downloads\Couchbase-Net-Client-1.1.6\Common.Logging.Log4Net.dll' or one of its dependencies. The system cannot find the file specified.
[37.02 INFO] (LineGobbler doFilter:115) +++ Following exception has internal ID: 1
[37.02 INFO] (SDKD log:137) at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, I
ntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolea
n throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Bo
olean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppre
ssSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at SdkdConsole.Program.GetDependency(Object sender, ResolveEventArgs args) in c:\jenkins\workspace\.net-sdkdclient-ng2-andrei\sdkd-net\src\SdkdConsole\Program.cs:line 107

do you know what is wrong here?


Comment by Jeff Morris [ 11/Jul/14 ]
Is this from the 1.3.X client or from the 2.X? Each version has their own logging infrastructure, what I attached in the app.config was specifically for 2.X.

Make sure you have the following files in your bin (i'll attach them):
-Common.Logging
-Common.Logging.Log4Net
-log4net

Note that the tester project is all set up for logging as an example.

Also, "file:///C:\Users\Administrator\Downloads\Couchbase-Net-Client-1.1.6\" looks like a very old client version? 1.1.6?


Comment by Andrei Baranouski [ 11/Jul/14 ]
these logs are from 2.x

yes, I also noticed about Couchbase-Net-Client-1.1.6. will try to figure out where does it come
Comment by Andrei Baranouski [ 11/Jul/14 ]
Couchbase-Net-Client-1.1.6 is from https://github.com/couchbase/sdkd-net/blob/client-2.0/src/SdkdConsole/Program.cs#L92 but it's not used (folder doesn't exist)
really, Common.Logging.Log4Net.dll log4net.dll have been lost in the project
I will modify sdkd-net project to add this libraries in references or replace hard code "C:\Users\Administrator\Downloads\Couchbase-Net-Client-1.1.6\" on c:\tmp\libraries(that will have missed libraries, for example for debug)

anyway, I upload log4net logs to the ticket from the latest 2.0 master branch
Comment by Andrei Baranouski [ 11/Jul/14 ]
log4net on 2.x client
Comment by Jeff Morris [ 11/Jul/14 ]
Great Andrei, thanks!
Comment by Jeff Morris [ 11/Jul/14 ]
Andrei -

After looking at the logs, I am going to close this ticket and open another (NCBC-550) - the error you are seeing in unrelated to this ticket.

-Jeff





[NCBC-468] Resolve compiler warnings Created: 08/May/14  Updated: 02/Jun/14  Resolved: 02/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0 Beta 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


 Description   
There are a number of compiler warnings ~25. These needs to be resolved.

 Comments   
Comment by Jeff Morris [ 02/Jun/14 ]
commit 50580733fd0b279e57125cfb1b5da001ef3fbef4

Reduced the compiler/resharper warnings from 800+ to around 23~. The rest will be resolved in future commits.




[NCBC-459] CRAM MD5 SASL Support Created: 07/May/14  Updated: 02/Jun/14  Resolved: 29/May/14

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

Type: Task Priority: Critical
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-486 Create CRAM-MD5 ISaslMechanism Impl Technical task Resolved Jeff Morris  
NCBC-487 Create Sasl Mechanism Factory Technical task Closed Jeff Morris  
NCBC-488 Integrate SASL Factory into client Technical task Resolved Jeff Morris  

 Description   
CRAM MD5 Sasl support for .NET client - PLAIN is currently supported.

 Comments   
Comment by Jeff Morris [ 29/May/14 ]
commit 85b1ae52e221414de4dfb0853292a62ae4147f9a




[NCBC-460] Rename ICluster and Cluster to ICouchbaseCluster and CouchbaseCluster Created: 07/May/14  Updated: 02/Jun/14  Resolved: 08/May/14

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

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


 Description   
Rename for consistency across SDK's.




Set, add, and replace should be separate methods (NCBC-123)

[NCBC-463] Add support for "Replace" operation Created: 07/May/14  Updated: 02/Jun/14  Resolved: 09/May/14

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

Type: Technical 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





[NCBC-464] Refactor Bucket.Get(ViewQuery) to Bucket.Query(ViewQuery) Created: 07/May/14  Updated: 02/Jun/14  Resolved: 08/May/14

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

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


 Comments   
Comment by Jeff Morris [ 08/May/14 ]
commit fb6789b718908136a8414b4b63a9153935655637




[NCBC-457] Change verbosity of HB logging to DEBUG Created: 05/May/14  Updated: 04/Jun/14  Resolved: 04/Jun/14

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

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


 Comments   
Comment by Matt Ingenthron [ 05/May/14 ]
I might argue for debug here, but it's your call. I think of things like configuration changes as INFO level, and things like regular background stuff as DEBUG.
Comment by Jeff Morris [ 05/May/14 ]
Fair enough, it was DEBUG originally, so we would be just reverting back to what it previously was.
Comment by Jeff Morris [ 05/May/14 ]
http://review.couchbase.org/#/c/36715/1




[NCBC-456] SocketAsyncStrategy's Dispose method throws NotImplementedException Created: 03/May/14  Updated: 02/Jun/14  Resolved: 06/May/14

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

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


 Description   
Dispose needs to be implemented.

 Comments   
Comment by Jeff Morris [ 06/May/14 ]
commit 528b737f44a0363e0c04da81485c855151251e3e




[NCBC-455] Inserting POCO throws NullRefererenceException Created: 03/May/14  Updated: 02/Jun/14  Resolved: 04/May/14

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

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


 Description   
No serializer exists for POCOs

 Comments   
Comment by Jeff Morris [ 04/May/14 ]
Fixed, but TypeSerializer needs to be refactored at some point for perf reasons.

 commit 3c70e8cba079e7991fcc93c4d11d7621ba613fb1




[NCBC-453] When key is not found IOperationResult.Message field contains error message Created: 02/May/14  Updated: 02/Jun/14  Resolved: 02/May/14

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

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


 Description   
This applies to all operations that fail.

 Comments   
Comment by Jeff Morris [ 02/May/14 ]
commit 3b936d2c03ddfc7e372f2645e0ed21601447f975




[NCBC-454] Make all Common.Logging.ILog references private static Created: 02/May/14  Updated: 02/Jun/14  Resolved: 02/May/14

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

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


 Comments   
Comment by Jeff Morris [ 02/May/14 ]
commit 8cb80ed372cb803bd7cf0a3f26e056653826c753




[NCBC-452] View Query Error Handling Created: 02/May/14  Updated: 02/Jun/14  Resolved: 02/May/14

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

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


 Comments   
Comment by Jeff Morris [ 02/May/14 ]
commit 1cbc7e11350dc15ae61e08d9045ecf5ae7bd56ea




[NCBC-451] Provide error handling for invalid N1QL queries. Created: 02/May/14  Updated: 02/Jun/14  Resolved: 02/May/14

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

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


 Comments   
Comment by Jeff Morris [ 02/May/14 ]
commit 45297110ec69a8936714d2c3302e03a97281077d




[NCBC-444] XML code documentation Created: 01/May/14  Updated: 02/Jun/14  Resolved: 08/May/14

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

Type: Story Priority: Critical
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-445 XML code documentation - Couchbase.Vi... Technical task Resolved Jeff Morris  
NCBC-446 XML code documentation - Couchbase.Co... Technical task Resolved Jeff Morris  
NCBC-447 XML code documentation - Couchbase.N1... Technical task Resolved Jeff Morris  
NCBC-448 XML code documentation - Couchbase.Au... Technical task Resolved Jeff Morris  
NCBC-449 XML code documentation - Couchbase.Co... Technical task Resolved Jeff Morris  
NCBC-450 XML code documentation - Couchbase.IO... Technical task Resolved Jeff Morris  

 Description   
Annotating all public and most internal classes and methods with XML code comments.




XML code documentation (NCBC-444)

[NCBC-446] XML code documentation - Couchbase.Core.Buckets namespace Created: 01/May/14  Updated: 02/Jun/14  Resolved: 01/May/14

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

Type: Technical 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


 Comments   
Comment by Jeff Morris [ 01/May/14 ]
commit d5b4c588612d5abb8955ad063ffb310d8ac4c17b




XML code documentation (NCBC-444)

[NCBC-449] XML code documentation - Couchbase.Configuration namespace Created: 01/May/14  Updated: 02/Jun/14  Resolved: 02/May/14

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

Type: Technical 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


 Comments   
Comment by Jeff Morris [ 02/May/14 ]
commit ad3a5cb876587eb2ff4e4efc3036ac762366ed16




XML code documentation (NCBC-444)

[NCBC-448] XML code documentation - Couchbase.Authentication namespace Created: 01/May/14  Updated: 02/Jun/14  Resolved: 01/May/14

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

Type: Technical 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


 Comments   
Comment by Jeff Morris [ 01/May/14 ]
commit c58e4aa806592bb556df1fe9c876f13fe26fa20a




XML code documentation (NCBC-444)

[NCBC-445] XML code documentation - Couchbase.Views namespace Created: 01/May/14  Updated: 02/Jun/14  Resolved: 01/May/14

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

Type: Technical 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


 Comments   
Comment by Jeff Morris [ 01/May/14 ]
commit 9e9ca0adc357cbc43c1b300a46350f051179cd1f




XML code documentation (NCBC-444)

[NCBC-447] XML code documentation - Couchbase.N1QL namespace Created: 01/May/14  Updated: 02/Jun/14  Resolved: 01/May/14

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

Type: Technical 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


 Comments   
Comment by Jeff Morris [ 01/May/14 ]
commit c9c7576b84ae7cc5c063cde4e9e81a1b52e94345




XML code documentation (NCBC-444)

[NCBC-450] XML code documentation - Couchbase.IO namespace Created: 01/May/14  Updated: 02/Jun/14  Resolved: 08/May/14

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

Type: Technical 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


 Comments   
Comment by Jeff Morris [ 08/May/14 ]
commit 5402ad79dbc1eff8f7fa02436b2968bc62147621




[NCBC-443] Consolidate all query interfaces into IBucket Created: 01/May/14  Updated: 02/Jun/14  Resolved: 01/May/14

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

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


 Comments   
Comment by Jeff Morris [ 01/May/14 ]
commit bae3efc69d5d231a30b2618ddca50471bf89470f




[NCBC-441] Cluster.cs needs another overloaded ctor for IClusterManager instances Created: 28/Apr/14  Updated: 02/Jun/14  Resolved: 02/May/14

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

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


 Description   
This is for testability/DI, currently IClusterManager is new'd up in the ctor's

 Comments   
Comment by Jeff Morris [ 02/May/14 ]
commit fdb0731b8e36af268a8e479b2611bcb04048248f




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

Status: Resolved
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: Fixed 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-503] CouchbaseCluster construction is missing un/pw Created: 04/Jun/14  Updated: 04/Jun/14  Resolved: 04/Jun/14

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

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


 Description   
https://github.com/couchbase/couchbase-net-client/pull/2

"I recently used the couchbase net client library and while trying to use the cluster management api's I found a bug where the constructor wasn't passing the username and password along while getting the pool and bucket data. This bug fix simply passes those into the http get calls."

 Comments   
Comment by Jeff Morris [ 04/Jun/14 ]
Merged: http://review.couchbase.org/#/c/37869/




[NCBC-502] XML Code documentation for configuration classes. Created: 03/Jun/14  Updated: 03/Jun/14  Resolved: 03/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP1
Fix Version/s: 2.0 DP2

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


 Comments   
Comment by Jeff Morris [ 03/Jun/14 ]
commit 861b04002abab2a815b5a9c49c3829b602a0b325




[NCBC-501] Fix possible cast exception in KetamaKeyMapper Created: 03/Jun/14  Updated: 03/Jun/14  Resolved: 03/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP1
Fix Version/s: 2.0 DP2

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


 Comments   
Comment by Jeff Morris [ 03/Jun/14 ]
commit 330e9aa65cc7071056bb54702665f6fbfd4a6b39




[NCBC-499] Refactor InternalPoolImpl so that NRE is not thrown. Created: 02/Jun/14  Updated: 04/Jun/14  Resolved: 04/Jun/14

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

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   
https://github.com/couchbase/couchbase-net-client/pull/14
http://www.couchbase.com/communities/q-and-a/nullreferenceexception-memcachednodeinternalpoolimpl

NullReferenceException at MemcachedNode+InternalPoolImpl.<Dispose>

I recently updated to Couchbase Client Library .NET 1.3.4 and I've been experiencing daily incidences of the following NullReferenceException:

System.NullReferenceException
Stack:
at Enyim.Caching.Memcached.MemcachedNode+InternalPoolImpl.b__7(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()

The exception is particularly problematic because it appears to happen within the Timer callback here: https://github.com/couchbase/couchbase-net-client/blob/master/src/Enyim.... which means that it bubbles up as an AppDomain.CurrentDomain.UnhandledException and terminates my process

I'm going to enable logging as described here (http://docs.couchbase.com/couchbase-sdk-net-1.3/#configuring-logging) in hopes that I get some more information to go on
- See more at: http://www.couchbase.com/communities/q-and-a/nullreferenceexception-memcachednodeinternalpoolimpl#sthash.x5T3rjeQ.dpuf

 Comments   
Comment by Jeff Morris [ 04/Jun/14 ]
Merged: http://review.couchbase.org/#/c/37840/




[NCBC-494] Finalizer throws NRE if Pools has already been finalized/GC'd Created: 02/Jun/14  Updated: 04/Jun/14  Due: 05/Jun/14  Resolved: 04/Jun/14

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

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


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




[NCBC-492] Refactor ConfigProviders into ConfigProviderBase Created: 29/May/14  Updated: 02/Jun/14  Resolved: 29/May/14

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

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


 Description   
Refactored the common fields and methods of HttpStreamingProvider and CarrierConfigurationProvider into a base class: ConfigProviderBase. Improved readability and maintainability.

 Comments   
Comment by Jeff Morris [ 29/May/14 ]
commit 465ca71b91d55abc9be288a7b6be2fa671ffcc94




CRAM MD5 SASL Support (NCBC-459)

[NCBC-488] Integrate SASL Factory into client Created: 24/May/14  Updated: 02/Jun/14  Resolved: 27/May/14

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

Type: Technical 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


 Description   
Integrate Sasl factory into client so that the mechanism to be used can be created on the fly based upon server capabilities.

 Comments   
Comment by Jeff Morris [ 27/May/14 ]
commit ca23efee6041e23c9c82467f276d7c074e0e3548




CRAM MD5 SASL Support (NCBC-459)

[NCBC-486] Create CRAM-MD5 ISaslMechanism Impl Created: 24/May/14  Updated: 02/Jun/14  Resolved: 24/May/14

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

Type: Technical 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


 Description   
Basic functionality for CRAM-MD5 and SASL using Couchbase's terms.

 Comments   
Comment by Jeff Morris [ 24/May/14 ]
commit a042d8b567f452af62a0878cff71cfbd3b927e52




[NCBC-483] Add Apache License to each source file footer Created: 19/May/14  Updated: 02/Jun/14  Resolved: 19/May/14

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

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


 Comments   
Comment by Jeff Morris [ 19/May/14 ]
commit 1c16121de8673e6f826426af9208c35845e66e45




[NCBC-482] Provide hostname resolution to IP address Created: 16/May/14  Updated: 06/Jun/14  Resolved: 06/Jun/14

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

Type: Task Priority: Critical
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-510 Only use DNS lookup when IP is not av... Technical task Resolved Jeff Morris  

 Description   
BucketConfig requires host name to be the IP, which is invalid - the IP address should be resolved from the Hostname.

 Comments   
Comment by Jeff Morris [ 06/Jun/14 ]
commit 234b17990298d00d80115ddf6baf2533480d28af




[NCBC-477] Add support for Incr/Decr Created: 14/May/14  Updated: 14/Jun/14  Resolved: 14/Jun/14

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

Type: Task Priority: Critical
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-508 Add Increment operation support Technical task Resolved Jeff Morris  
NCBC-509 Add Decrement operation support Technical task Resolved Jeff Morris  




[NCBC-476] Add Info trace statements to config management Created: 13/May/14  Updated: 02/Jun/14  Resolved: 13/May/14

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

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


 Comments   
Comment by Jeff Morris [ 13/May/14 ]
commit 5a674c8199d513bcef680ad4571ca49e9054b544




[NCBC-472] Implement Set, Add, Replace for Memcached bucket (really Insert, Replace, Upsert) Created: 09/May/14  Updated: 02/Jun/14  Resolved: 09/May/14

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

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


 Description   
This is similar to NCBC-123 but for memcached buckets.

 Comments   
Comment by Jeff Morris [ 09/May/14 ]
commit ff683cac318d103e9da79c987ebb8ab720c1c1aa




[NCBC-473] Refactor CreateQuery parameters Created: 09/May/14  Updated: 02/Jun/14  Resolved: 09/May/14

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

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


 Description   
Change the order of parameters to make more consistent.

 Comments   
Comment by Jeff Morris [ 09/May/14 ]
commit a859bdc22d58836e0e45214dc453be8b34b619ce




[NCBC-471] Add support for Remove (delete) operation Created: 09/May/14  Updated: 02/Jun/14  Resolved: 09/May/14

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

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


 Comments   
Comment by Jeff Morris [ 09/May/14 ]
commit e70cd0113c5eb63bac8b8ce0048ffebc526d4e70




Set, add, and replace should be separate methods (NCBC-123)

[NCBC-470] Add support for Insert (Add) operation Created: 08/May/14  Updated: 02/Jun/14  Resolved: 09/May/14

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

Type: Technical 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





[NCBC-469] Refactor IBucket.Insert to IBucket.Upsert Created: 08/May/14  Updated: 02/Jun/14  Resolved: 08/May/14

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

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


 Comments   
Comment by Jeff Morris [ 08/May/14 ]
commit b49d6d867742223be95a30934081def9c623bb0f




[NCBC-424] Add SSL support in support of Couchbase Server 3.0 Created: 27/Mar/14  Updated: 02/Jun/14  Resolved: 22/May/14

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

Type: New Feature 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

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.

 Comments   
Comment by Jeff Morris [ 12/May/14 ]
Additional info: https://docs.google.com/document/d/17e-9gNJmIR5baqcxjQCbm5XVACpoYOK8PG-Neg6TTL8/edit
Comment by Jeff Morris [ 22/May/14 ]
commit 30536f0839814dc56543148b62afae3fadf39cb1




[NCBC-422] Check that a CCCP config's rev# is greater than the current Created: 24/Mar/14  Updated: 13/May/14  Resolved: 13/May/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: 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


 Comments   
Comment by Jeff Morris [ 12/May/14 ]
Is the latest rev# always the most updated? Can I assume that CCCP will return a config more than once?
Comment by Jeff Morris [ 13/May/14 ]
43b60903f17b4ef424dda63a8989ff2573e04d6e




[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-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-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-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-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-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-198] When performing MultiGet, unloading AppDomain crashes the host Created: 08/Jan/13  Updated: 29/Oct/13  Resolved: 29/Oct/13

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

Type: Bug Priority: Critical
Reporter: John Zablocki (Inactive) Assignee: Jeff Morris
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://github.com/enyim/EnyimMemcached/issues/103

 Comments   
Comment by Jeff Morris [ 29/Oct/13 ]
https://www.couchbase.com/issues/browse/NCBC-311




[NCBC-170] evaluate socket pool reliability change Created: 30/Nov/12  Updated: 07/Oct/13  Resolved: 07/Oct/13

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

Type: Bug 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   
A recent issue seems to be similar to a reported issue in EnyimMemcached. We should evaluate whether or not to include this in our release.

See https://github.com/enyim/EnyimMemcached/issues/94

 Comments   
Comment by Jeff Morris [ 07/Oct/13 ]
Nothing changed - issue restricted to older version of memcached.




[NCBC-138] Streaming api not working on Windows server 2008 with latest code form github Created: 08/Oct/12  Updated: 22/Oct/12  Resolved: 22/Oct/12

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

Type: Bug Priority: Critical
Reporter: Mike Wiederhold Assignee: Mike Wiederhold
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: windows server 2008 64-bit


 Description   
Please double check that the streaming api is still properly functioning and follow up on the forum post below.

http://www.couchbase.com/forums/thread/why-does-bucketstreaming-keep-failing-windows-server-2008-r2-beta-2-0

 Comments   
Comment by John Zablocki (Inactive) [ 22/Oct/12 ]
The build on Nuget and the binaries at couchbase.com/develop/net/next are both from the latest source published to GitHub. I regularly use the raw source and haven't seen this problem. Mark N. also uses the source when testing on a Windows Server box and hasn't reported this issue.




[NCBC-9] docs do not describe how to configure dev or production views Created: 29/Sep/11  Updated: 23/Mar/12  Resolved: 23/Mar/12

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

Type: Bug Priority: Critical
Reporter: Matt Ingenthron Assignee: John Zablocki (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by John Zablocki (Inactive) [ 23/Mar/12 ]
It is now described at http://www.couchbase.com/develop/net/next
Comment by John Zablocki (Inactive) [ 23/Mar/12 ]
See ProductionModeNameTransformer and DevelopmentModeNameTransformer in Getting Started.




[NCBC-81] ExecuteGet() for DictionaryType on multiple keys does not throw a exception if it is not able to connect to a node Created: 28/Jun/12  Updated: 04/Dec/13  Resolved: 04/Dec/13

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

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


 Description   
For development purposes i'm using a local Couchbase server installation with a single node. So i guess that turning off the CouchbaseServer service means the whole cluster in my case.
Here's a simple demo code:

System.Configuration.Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ICouchbaseClientConfiguration section = cfg.GetSection("Couchbase") as ICouchbaseClientConfiguration;

using (CouchbaseClient client = new CouchbaseClient(section))
{
IOperationResult res = client.ExecuteStore(Enyim.Caching.Memcached.StoreMode.Set, "Test1", 1);
Console.WriteLine("Set1 Success:{0} StatusCode:{1} Message:{2}", res.Success, res.StatusCode, res.Message);

res = client.ExecuteStore(Enyim.Caching.Memcached.StoreMode.Set, "Test2", 2);
Console.WriteLine("Set2 Success:{0} StatusCode:{1} Message:{2}", res.Success, res.StatusCode, res.Message);

IDictionary<string, IGetOperationResult> multigetRes = client.ExecuteGet(new string[] { "Test1", "Test2" });
Console.WriteLine("Dictionary count: {0}", multigetRes.Count);

foreach (KeyValuePair<string, IGetOperationResult> kvp in multigetRes)
{
Console.WriteLine("Get {0} Success:{1}, StatusCode: {2} Message: {3}", kvp.Key, kvp.Value.Success, kvp.Value.StatusCode, kvp.Value.Message);
}
}

Output with CouchbaseServer service on:
Set1 Success:True StatusCode:0 Message:
Set2 Success:True StatusCode:0 Message:
Dictionary count: 2
Get Test1 Success:True, StatusCode: Message:
Get Test2 Success:True, StatusCode: Message:

Output with CouchbaseServer service off:
Set1 Success:False StatusCode: Message:Failed to locate node
Set2 Success:False StatusCode: Message:Failed to locate node
Dictionary count: 0





Singular gets result in the correct exception error message:
Modified demo:
System.Configuration.Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ICouchbaseClientConfiguration section = cfg.GetSection("Couchbase") as ICouchbaseClientConfiguration;
using (CouchbaseClient client = new CouchbaseClient(section))
{
IOperationResult res = client.ExecuteStore(Enyim.Caching.Memcached.StoreMode.Set, "Test1", 1);
Console.WriteLine("Set1 Success:{0} StatusCode:{1} Message:{2}", res.Success, res.StatusCode, res.Message);
res = client.ExecuteStore(Enyim.Caching.Memcached.StoreMode.Set, "Test2", 2);
Console.WriteLine("Set2 Success:{0} StatusCode:{1} Message:{2}", res.Success, res.StatusCode, res.Message);
IDictionary<string, IGetOperationResult> multigetRes = client.ExecuteGet(new string[] { "Test1", "Test2" });
Console.WriteLine("Dictionary count: {0}", multigetRes.Count);
foreach (KeyValuePair<string, IGetOperationResult> kvp in multigetRes)
{
Console.WriteLine("MultiGet {0} Success:{1}, StatusCode: {2} Message: {3}", kvp.Key, kvp.Value.Success, kvp.Value.StatusCode, kvp.Value.Message);
}
res = client.ExecuteGet("Test1");
Console.WriteLine("Get1 Success:{0} StatusCode:{1} Message:{2}", res.Success, res.StatusCode, res.Message);
res = client.ExecuteGet("Test2");
Console.WriteLine("Get2 Success:{0} StatusCode:{1} Message:{2}", res.Success, res.StatusCode, res.Message);
}

Output:
Set1 Success:False StatusCode: Message:Failed to locate node
Set2 Success:False StatusCode: Message:Failed to locate node
Dictionary count: 0
Get1 Success:False StatusCode: Message:Unable to locate node
Get2 Success:False StatusCode: Message:Unable to locate node

 Comments   
Comment by Ivars Auzins [ 04/Oct/13 ]
I added pull request in github that would fix this: https://github.com/couchbase/couchbase-net-client/pull/8
Comment by Jeff Morris [ 04/Oct/13 ]
Thanks Ivars! I will review this for the 1.3.0 release.
Comment by Jeff Morris [ 04/Dec/13 ]
http://review.couchbase.org/#/c/30718/




[NCBC-467] AwaitableIOStrategy need it's Dispose method to be implemented. Created: 08/May/14  Updated: 24/Jun/14  Resolved: 24/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0 Beta 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


 Comments   
Comment by Jeff Morris [ 24/Jun/14 ]
Completed and committed some time back.




[NCBC-439] HttpStreamingProvider streaming thread hangs when Dispose is called on Cluster object Created: 28/Apr/14  Updated: 24/Jun/14  Resolved: 24/Jun/14

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

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 called Dispose() should close and cleanup _everything_ however, if you do not explicitly call Cluster.CloseBucket(bucket) in certain cases the HttpStreamingProvider listener thread will hang indefinitly if Cluster.Dispose() is called. This is a definite bug that needs to be resolved before developer preview.

*Note: remove comment from code when resolved

 Comments   
Comment by Jeff Morris [ 24/Jun/14 ]
commit 335b2ad22752623d6279850d2ec1a36448982e66




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

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

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


 Comments   
Comment by Jeff Morris [ 24/Jun/14 ]
Resolved some time back.




[NCBC-291] add method to access errors array in view response Created: 19/Aug/13  Updated: 24/Jun/14  Resolved: 24/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2.7
Fix Version/s: 2.0 Beta 1

Type: Bug 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   
Currently, there's no way to get to the errors []

 Comments   
Comment by Jeff Morris [ 12/Dec/13 ]
Per this ticket, this feature will be moved to the 2.0 version of the client: http://www.couchbase.com/issues/browse/NCBC-289
Comment by Jeff Morris [ 24/Jun/14 ]
commit 90124fe52922daa5e45dcc84e9121fd359122c9b




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

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: backlog-2.0
Fix Version/s: 2.0 Beta 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


 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.

 Comments   
Comment by Jeff Morris [ 25/Jun/14 ]
This was done some time back. If I find any additional URI creation logic strewn about, I'll re-open or create a new ticket.




[NCBC-478] Add support for Append Created: 14/May/14  Updated: 25/Jun/14  Resolved: 25/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0 Beta 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


 Comments   
Comment by Jeff Morris [ 25/Jun/14 ]
commit 58188438cd4c21a73194e73f6342fbc410d0b941




[NCBC-500] IsArrayOrCollection does not support IEnumerable Created: 02/Jun/14  Updated: 30/Jun/14  Resolved: 30/Jun/14

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

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   
https://github.com/couchbase/couchbase-net-client/pull/15




[NCBC-421] Refactor and Improve IO layer Created: 24/Mar/14  Updated: 08/Jul/14  Resolved: 08/Jul/14

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

Type: Story Priority: Critical
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-524 Refactor OperationBase and other clas... Technical task Resolved Jeff Morris  
NCBC-525 Misc performance improvements and ref... Technical task Resolved Jeff Morris  

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

 Comments   
Comment by Jeff Morris [ 08/Jul/14 ]
commit 6a9633f6f107d49f5db7d0a624cf673b6a743656

Probably not the last refactor here, but made a number improvements to design and structure of IO layer, most notable decoupled conversion of data to/from server from IO connection to IO operation classes.




[NCBC-461] Add "meta document" support Created: 07/May/14  Updated: 01/Jul/14  Resolved: 01/Jul/14

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

Type: Task Priority: Critical
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   
Per SDK 2.0 spec (note need to understand this a bit more)
id,
cas,
expiration
...

 Comments   
Comment by Jeff Morris [ 01/Jul/14 ]
https://www.couchbase.com/issues/browse/NCBC-538




[NCBC-474] Add CAS support Created: 09/May/14  Updated: 01/Jul/14  Resolved: 01/Jul/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0.0
Fix Version/s: 2.0 Beta 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


 Comments   
Comment by Jeff Morris [ 01/Jul/14 ]
commit e601cf6c2f7c92efa69531e19662c404e1c10c26




[NCBC-522] Make ILog instance within OperationResult(T) class static. Created: 20/Jun/14  Updated: 20/Jun/14  Resolved: 20/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 1

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   
A new ILog instance was being created for every operation which led to excessive GC's.

 Comments   
Comment by Jeff Morris [ 20/Jun/14 ]
commit 65af0f30971c185ec7a4c227895e865a0ce81666




[NCBC-523] Refactor operations to use Converter Created: 20/Jun/14  Updated: 20/Jun/14  Resolved: 20/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP1
Fix Version/s: 2.0 Beta 1

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


 Comments   
Comment by Jeff Morris [ 20/Jun/14 ]
commit a39674d03536c07b276857e21a2b121658a66339




[NCBC-521] Ensure one copy of ITypeSerializer is used per client instance Created: 19/Jun/14  Updated: 19/Jun/14  Resolved: 19/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 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   
This is will minimize GC's by reusing the serializer across all operations. ITypeSerializer instances should be stateless.

 Comments   
Comment by Jeff Morris [ 19/Jun/14 ]
commit 95a1dbbdaa201d6661a680706ce1a0f7885c7480




[NCBC-515] .NET Client accepts port 11211 as input Created: 16/Jun/14  Updated: 16/Jun/14  Resolved: 16/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 1

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   
The client will accept the proxy port 11211 which is intended for use with clients that use Moxi. This causes the client to fail without an obvious reason. This will add an explicit exception class to make it easier to diagnose the issue, letting the caller know immediately, that the port isn't supported and that they should use port 11210 or 11207 (for ssl).

 Comments   
Comment by Jeff Morris [ 16/Jun/14 ]
commit 9cd7c766e9994caa03dc050224b40afd88b50c2c




[NCBC-514] When password is set at bucket level and OpenBucket(bucketName) is called, empty password is used. Created: 16/Jun/14  Updated: 16/Jun/14  Resolved: 16/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP1, 2.0 DP2
Fix Version/s: 2.0 Beta 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   
This will cause an empty string to be sent instead of the configured password resulting in a AuthenticationException to be logged.

 Comments   
Comment by Jeff Morris [ 16/Jun/14 ]
commit bab727843ac0cc83ded8d3bb1c710ca8cf690191




Provide hostname resolution to IP address (NCBC-482)

[NCBC-510] Only use DNS lookup when IP is not available Created: 13/Jun/14  Updated: 13/Jun/14  Resolved: 13/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 1

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   
Fixes an issue where DNS lookup fails because hostname is already an IPAddress.

 Comments   
Comment by Jeff Morris [ 13/Jun/14 ]
commit 7a556c364144409d35e5cb82ce12c484b89e6dbc




[NCBC-512] Switch from custom BinaryConverter to IByteConverter Created: 14/Jun/14  Updated: 17/Jun/14  Resolved: 17/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 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   
http://msdn.microsoft.com/en-us/library/system.bitconverter%28v=vs.110%29.aspx

 Comments   
Comment by Jeff Morris [ 17/Jun/14 ]
This ticket was originally intended to swap the BinaryConverter for System.BitConverter, however after testing the performance, the bit shifting approach is around ~20-30% faster. With BitConverter you have to partition the buffer and convert back and forth from big-endian to little-endian which slightly impacts performance. With bit shifting you can swap the buffer in place...so, we ended up with an extension point: IByteConverter. If you don't like the default implementation, ManualByteConverter, you can roll your own.
Comment by Jeff Morris [ 17/Jun/14 ]
commit 448bba208e6874d9e5d83e75886bdc604af126c4




[NCBC-511] Provide overrideable offset for body Created: 14/Jun/14  Updated: 14/Jun/14  Resolved: 14/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 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 [ 14/Jun/14 ]
commit 7786d196d16538fa0fefb473b3be88d22397b4ef

This may change later...




Add support for Incr/Decr (NCBC-477)

[NCBC-509] Add Decrement operation support Created: 13/Jun/14  Updated: 14/Jun/14  Resolved: 14/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 1

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 [ 14/Jun/14 ]
commit e37b7f07b25fcd3de8357e2bf1846203ca7eea25




Add support for Incr/Decr (NCBC-477)

[NCBC-508] Add Increment operation support Created: 13/Jun/14  Updated: 13/Jun/14  Resolved: 13/Jun/14

Status: Resolved
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 DP2
Fix Version/s: 2.0 Beta 1

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 [ 13/Jun/14 ]
commit bff6a3ec34761166afc92cecc2e55758284571c7




[NCBC-438] CouchbaseClient has no destructor so SocketPool and sockets are often not cleaned/closed Created: 25/Apr/14  Updated: 02/Jun/14  Resolved: 02/Jun/14

Status: Resolved
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: Jim Walker Assignee: Jeff Morris
Resolution: Fixed Votes: 0
Labels: customer
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: .NET 4 used in testing

Attachments: Text File CouchbaseClient.cs.patch     File Program2.cs    
Issue Links:
Dependency

 Description   
Investigating a client issue I spotted that the CB server node sometimes still had 11210 connections open even though a .NET test application had cleanly terminated.

Instrumentation of SocketPool.cs showed that there was unreliable clean-up of the sockets and this was tracked down to the lack of a destructor/dispose path from CouchbaseClient.

The instrumentation added "print" statements to the socket creation and socket deletion paths. Even with explicit GC.collect calls the deletion prints were very unreliable. I.e. 30 socket created, but variable amounts get closed, sometimes even none.

A simple patch is soon to be uploaded which made a significant difference to the deletion print statements and has been tested using a simple test program. With the patch I saw reliable socket closure. E.g. 30 created, 30 deleted/closed.

Attached to this are.

1) Test program (Program2.cs) which creates CouchbaseClient, allows objects to become out-of-scope and exits cleanly.
2) A patch against CouchbaseClient.cs which drives the destruction path to Dispose the Pool (to be committed).

Without my CouchbaseClient fix I would see the number of sockets created frequently be more than the count of items disposed.


(need to figure out how to push code to gerrit??)

 

 Comments   
Comment by Jeff Morris [ 30/Apr/14 ]
Change set is here: http://review.couchbase.org/#/c/36407/2
Comment by Jeff Morris [ 02/Jun/14 ]
Released in 1.3.5.




[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-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-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-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-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-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-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-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/




[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-416] Method overloading ambiguity with named parameters Created: 13/Mar/14  Updated: 02/Jun/14  Resolved: 02/Jun/14

Status: Resolved
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: Fixed 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
Comment by Jeff Morris [ 02/Jun/14 ]
Fixed in 1.3.5 release




[NCBC-414] Develop MemcachedBucket class for non-persistent, in-memory operations Created: 10/Mar/14  Updated: 02/Jun/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 DP1

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-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-409] Move 2.X repo to couchbaselabs Created: 03/Mar/14  Updated: 02/Jun/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 DP1

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




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.




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-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.




[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-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-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-359]