[NCBC-544] ExecuteAppend and ExecutePrepend methods on .Net documentation has error in sample code Created: 07/Jul/14  Updated: 08/Jul/14

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

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


 Description   
The code samples below has an error:
http://docs.couchbase.com/couchbase-sdk-net-1.3/index.html

client.ExecuteStore(StoreMode.Set, "beers", "Abbey Ale");
Func<string, byte[]> stringToBytes = (s) => Encoding.Default.GetBytes(s);
var result = client.ExecuteAppend("beers", new ArraySegment<byte>(stringToBytes(",Three Philosophers")));

if (! result.Sucecss)
{
    Console.WriteLine("Append failed with message {0} and status code {1}", result.Message, result.StatusCode);

    if (result.Exception == null)
    {
        throw result.Exception;
    }
}



client.ExecuteStore(StoreMode.Set, "beers", "Abbey Ale");
Func<string, byte[]> stringToBytes = (s) => Encoding.Default.GetBytes(s);
var result = client.ExecutePrepend("beers", new ArraySegment<byte>(stringToBytes(",Three Philosophers")));

if (! result.Sucecss)
{
    Console.WriteLine("Prepend failed with message {0} and status code {1}", result.Message, result.StatusCode);

    if (result.Exception == null)
    {
        throw result.Exception;
    }
}

the last IF should be:
 if (result.Exception != null)


 Comments   
Comment by Amy Kurtzman [ 07/Jul/14 ]
@Cihan, please add a link to the heading that contains this example. I can't find it.

@Jeff, after Cihan supplies a closer link, please verify this change is correct and also let me know if the method name Sucecss in this line is spelled correctly (it's spelled that way in many examples in this document):

if (! result.Sucecss)
Comment by Cihan Biyikoglu [ 07/Jul/14 ]
if you search for "result.Exception == null" on this page you will find all the instances to correct. http://docs.couchbase.com/couchbase-sdk-net-1.3/index.html - there are 2.

they all should show this instead: result.Exception != null
Comment by Jeff Morris [ 07/Jul/14 ]
Indeed there is two issues here:
a) it should be "not equals" null
b) "Sucecss" should be "Success"

For example:

            client.ExecuteStore(StoreMode.Set, "beers", "Abbey Ale");
            Func<string, byte[]> stringToBytes = (s) => Encoding.Default.GetBytes(s);
            var result = client.ExecuteAppend("beers", new ArraySegment<byte>(stringToBytes(",Three Philosophers")));

            if (!result.Success)
            {
                Console.WriteLine("Append failed with message {0} and status code {1}", result.Message, result.StatusCode);

                if (result.Exception != null)
                {
                    throw result.Exception;
                }
            }




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

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

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

Attachments: Zip Archive NCBC340_reproduced.zip    

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

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

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

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

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

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

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

Here is a stack trace:

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

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

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

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

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

Thanks again,

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

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

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

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

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

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

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

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

            return View(post);
        }
    }

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

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

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

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

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

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

Thanks,

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




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

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

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


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




[NCBC-309] Move .NET API documentation from docs repo to auto-doc Created: 07/Oct/13  Updated: 13/Jan/14

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

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

Issue Links:
Duplicate
duplicates NCBC-248 Touch should return a boolean Resolved
duplicates NCBC-179 Add expiries and CAS to StoreJson ext... Resolved
Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-321 Add XML Comments to Source Technical task Resolved Jeff Morris  
NCBC-322 Setup Sandcastle and generate documen... Technical task Open Jeff Morris  

 Description   
Look into visual studio support for ///




[NCBC-701] sometimes ops/sec drop to ~1 ops/sec Created: 25/Oct/14  Updated: 25/Oct/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 Beta
Fix Version/s: 2.0.1

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

Attachments: PNG File 1_ops_sec2.png     PNG File 1_ops_sec3.png     PNG File 1_ops_sec.png    

 Description   
run with

$ git log -n 5
commit 509098f2aead49c4262f98058e4f045741e2fad1
Author: jeffrymorris <jeffrymorris@gmail.com>
Date: Fri Oct 24 15:23:08 2014 -0700

    Use consistent error handling when IO fails

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

commit 2769f360e3d129c5ebda996117361e00b9e6677f
Author: jeffrymorris <jeffrymorris@gmail.com>
Date: Fri Oct 24 15:20:45 2014 -0700

    Ensure that each server is tried during a config heartbeat

    Change-Id: I7547effadbc5a76fb5c801450c0f069d2b272d32
    Reviewed-on: http://review.couchbase.org/42426
    Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
    Reviewed-by: Matt Ingenthron <matt@couchbase.com>

commit 37758dbdc9baf75101a7e6230a2a277c37948d38
Author: jeffrymorris <jeffrymorris@gmail.com>
Date: Thu Oct 23 19:56:49 2014 -0700

    Remove old markdown file. New one (README.md) will be updated soon

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

commit 73df659c062aab8a1dd211ddbf93a78864458b09
Author: jeffrymorris <jeffrymorris@gmail.com>
Date: Thu Oct 23 19:53:42 2014 -0700

    Removing old script from the enyim days

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

commit 28895f0acb807947e1e55471de3751a75e360de4
Author: jeffrymorris <jeffrymorris@gmail.com>
Date: Thu Oct 23 19:47:37 2014 -0700

    Remove 'tester' projects from min repo

    These will be refactored and moved to a seperate repo on labs.

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

Administrator@WIN-26PC57KC7NB /c/jenkins/workspace/.net-sdkdclient-ng2_win2012_6
4_andrei/couchbase-net-client (master)




when I once again reproduced it( in command line now) I terminated sdkd execution and found that some threads has stack traces like:



  [External Code]
> Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 136 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Acquire() Line 148 C#
  Couchbase.NetClient.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Couchbase.IO.IConnectionPool.Acquire() Line 200 C#
  Couchbase.NetClient.dll!Couchbase.IO.Strategies.DefaultIOStrategy.Execute<Couchbase.Configuration.Server.Serialization.BucketConfig>(Couchbase.IO.Operations.IOperation<Couchbase.Configuration.Server.Serialization.BucketConfig> operation) Line 40 C#
  Couchbase.NetClient.dll!Couchbase.Core.Server.Send<Couchbase.Configuration.Server.Serialization.BucketConfig>(Couchbase.IO.Operations.IOperation<Couchbase.Configuration.Server.Serialization.BucketConfig> operation) Line 88 C#
  Couchbase.NetClient.dll!Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider._heartBeat_Elapsed(object sender, System.Timers.ElapsedEventArgs args) Line 50 C#
  [External Code]


 Comments   
Comment by Andrei Baranouski [ 25/Oct/14 ]
https://s3.amazonaws.com/bugdb/jira/NCBC-701/74a96698/NCBC-701.zip
Comment by Jeff Morris [ 25/Oct/14 ]
Andrei-

Your logs provided in NCBC-701.zip have a time range from 2014-10-25 02:39:22,706 to 2014-10-25 02:59:28,677, so I can't correlate with the graphs 1_ops_sec_.png and 1_ops_sec3.png.

What I see in the NCBC-701.zip logs is that:

a) Threads are waiting for connections (normal in certain situ's)
b) This is caused when other threads are taking too long per operation, thus making the wait queue _way_ too long

What would cause an operation to take a long time? Probably when a request is made on a server that has either been removed from the cluster or has shutdown. The time delay is the TCP timeout's which are all default ATM. So, instead of a making a request and failing immediately, the client waits for a response which may take seconds (actually the it will timeout at 2.5s), which is time in which another thread is waiting to make a request.

However, I can postulate that the config heartbeat checks are exasperating this, since it will check every server until it either succeeds or runs out of servers to try and it runs every 10s by default. Design wise we might want to:

- Move the config heartbeat to a separate dedicated TCP connection AND/OR
- Move it to a dedicated worker thread AND/OR
- Add a dedicated HTTPStreaming config listener to the CarrierPublicationProvider (this would solve most problems, but has some minuses) AND/OR
- Stop the config heartbeat timer when it begins a cycle and start it when a cycle completes - this would keep it from backing up - this is a flaw imo

Additionally, some of this may be mitigated by tuning:

- Increasing the MaxPool size - defaults to 2
- Tuning the socket timeout values (they are all default ATM)

-Jeff

Comment by Jeff Morris [ 25/Oct/14 ]
Andrei -

I made a patch for: "Stop the config heartbeat timer when it begins a cycle and start it when a cycle complete"

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

You can test it if you pull it on top of master or push it through CR and do it on master.

Thanks,

Jeff
Comment by Jeff Morris [ 25/Oct/14 ]
Looking deeper into the logs provided, it looks like SDKD is not properly maintaining references to the cluster object:

Line 14767: 2014-10-25 02:39:27,697 [2] DEBUG Couchbase.Cluster - Finalizing Cluster
Line 15996: 2014-10-25 02:39:43,900 [2] DEBUG Couchbase.Cluster - Finalizing Cluster
Line 15997: 2014-10-25 02:39:43,901 [2] DEBUG Couchbase.IO.Strategies.DefaultIOStrategy - Finalizing DefaultIOStrategy for 10.3.121.134:11210 - 65d70de1-7221-42e4-84fc-7ff2ed34d2d5
Line 145546: 2014-10-25 02:41:39,766 [2] DEBUG Couchbase.Cluster - Finalizing Cluster
Line 150673: 2014-10-25 02:41:40,382 [2] DEBUG Couchbase.IO.Strategies.DefaultIOStrategy - Finalizing DefaultIOStrategy for 10.3.121.135:11210 - b50fa7db-a7dc-42e9-a762-09a2769e216f
Line 170419: 2014-10-25 02:53:58,109 [2] DEBUG Couchbase.Cluster - Finalizing Cluster
Line 171445: 2014-10-25 02:53:59,075 [2] DEBUG Couchbase.Cluster - Finalizing Cluster

This could or could not be causing inconsistent test results.

Things getting interesting around line 253943:

2014-10-25 02:59:21,082 [17] INFO Couchbase.Configuration.Server.Providers.ConfigProviderBase - Unregistering observer default
2014-10-25 02:59:21,083 [17] DEBUG Couchbase.Configuration.ConfigContextBase - Disposing ConfigContext
2014-10-25 02:59:21,083 [17] DEBUG Couchbase.Core.Server - Disposing Server for 10.3.121.134:11210
2014-10-25 02:59:21,083 [17] DEBUG Couchbase.IO.Strategies.DefaultIOStrategy - Disposing DefaultIOStrategy for 10.3.121.134:11210 - 6d4d7c96-ef1f-4bbd-adbd-a08303fc821d
2014-10-25 02:59:21,084 [17] DEBUG Couchbase.IO.ConnectionPool`1 - Disposing ConnectionPool for 10.3.121.134:11210 - f191b6cd-6b0b-4311-bcd8-13f40bf44fb0
2014-10-25 02:59:21,091 [17] DEBUG Couchbase.IO.ConnectionBase - Disposing connection for 10.3.121.134:11210 - 6877f2f9-3f19-4f34-8903-a03ba7b64a5e
2014-10-25 02:59:21,093 [40] WARN Couchbase.IO.ConnectionBase - Opcode=GetClusterConfig | Key= | Host=10.3.121.134:11210
System.IO.IOException: Unable to read data from the transport connection: Cannot access a disposed object.
Object name: 'System.Net.Sockets.Socket'.. ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'System.Net.Sockets.Socket'.
   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult, SocketError& errorCode)
   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   at Couchbase.IO.Strategies.EapConnection.ReceiveCallback(IAsyncResult asyncResult) in c:\jenkins\workspace\.net-sdkdclient-ng2_win2012_64_andrei\couchbase-net-client\Src\Couchbase\IO\Strategies\EapConnection.cs


The "default" bucket is disposed (closing the connections to 10.3.121.134:11210), but the client keeps trying to use those connections which then throw ODE's.

-Jeff




[NCBC-497] Datatype support Created: 02/Jun/14  Updated: 02/Jun/14

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

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


 Description   
Datatype support - need to create subtasks for the following:
    Hello command
    Set a bit if compressed with snappy
    Set a bit if the client believes it’s JSON





[NCBC-493] Implement Replica Read Capability Created: 29/May/14  Updated: 24/Sep/14

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

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

Issue Links:
Duplicate
is duplicated by NCBC-84 Replica read command Resolved
Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-568 Update IVBucket to support more than ... Technical task Resolved Jeff Morris  




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

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

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

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

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

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

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

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

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

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

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

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

The application pool process restarts at the same time.

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

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

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

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

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

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

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

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

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




[NCBC-480] Implement CouchbaseCluster.Info Created: 14/May/14  Updated: 25/Jun/14

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

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


 Description   
Provide implementation for IClusterInfo interface.




[NCBC-458] check terse bucket info URI automatically before checking full bucket URI Created: 07/May/14  Updated: 23/Jun/14

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

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


 Description   
Starting in Couchbase Server there is a separate URI "/b/streaming" that is private (to couchbase) interface and much more efficient for the cluster. We should, as a feature, automatically check that URI first before checking the other URI.

 Comments   
Comment by Matt Ingenthron [ 07/May/14 ]
Jeff: I filed this against 1.3.6 but will work with you on the roadmap/planning. This would be very valuable if a simple update for 1.3.x.




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

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

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


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

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

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




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

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

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

Epic Name: Linq Provider
Epic Status: To Do




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

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

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


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


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

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

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

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

Thanks,

Jeff



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

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




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

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




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

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

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


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




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

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

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


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

>>>>>


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

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

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

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



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

Two things:

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

Thanks!

-K




[NCBC-196] Config updates seem to be occuring when vbucket configuration hasn't changed Created: 08/Jan/13  Updated: 30/Jan/14

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

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


 Description   
The client appears to be updating its config when receiving config updates that shouldn't trigger a change in internal config (i.e., reodered nodes, fast forward maps).

 Comments   
Comment by Jeff Morris [ 07/Oct/13 ]
vBucketServerMap (all elements), the number of nodes (cluster membership, status) and couchApiBase determine equivalence.




[NCBC-253] flush_all method still available through API, does nothing against 2.0 cluster Created: 22/Apr/13  Updated: 13/Jan/14

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

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


 Description   
Is flush_all deprecated for 2.x clusters? No error is returned when run against a 2.0 bucket

Need SDK documentation on the deprecation and how to use flush properly (it's currently only in the release notes)

 Comments   
Comment by John Zablocki (Inactive) [ 13/May/13 ]
FlushAll is a method on the Enyim MemchacedClient, so it's inherited.

I've posted a change to Gerrit that checks to see if any of the working nodes is of type CouchbaseNode (2.0+). If so, an NotImplementedException is raised. Otherwise, if it's a Memcached bucket or 1.8.x, the MemcachedClient.FlushAll is performed.
Comment by John Zablocki (Inactive) [ 14/May/13 ]
Would this approach address your concern?
Comment by Perry Krug [ 14/May/13 ]
Sounds very reasonable to me, thank you.
Comment by Matt Ingenthron [ 14/May/13 ]
Should it perform a RESTful flush if the server is a 2.0 server && couchbase bucket? This is what we did in the Java client if I recall correctly. The logic being this way code moves over and just works.
Comment by John Zablocki (Inactive) [ 14/May/13 ]
Is that the right API? To me it feels like it isn't, since flush is no longer a "client" API action. It's easy enough to implement, but seems best to steer people to the right API, imo...




[NCBC-29] programmatically set all the Couchbase configurations Created: 07/Mar/12  Updated: 13/Jan/14

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

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


 Description   
We can programmatically set some the Couchbase configurations, however we cannot set the SocketPool settings Programmatically.

These settings can be set in the config file, but it would be nice to be able to set these through the program.




[NCBC-693] ObjectDisposedException in ConnectionPool.Dispose when run against cluster_run Created: 21/Oct/14  Updated: 25/Oct/14

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

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

Attachments: PNG File 693_real_cluster.png     PNG File NCBC-693.png     File test.logs    

 Description   
in this run I use CB cluster_run for nodes, ie client vm is on windows, 4 nodes are CB instances on the same host: 192.168.1.3:9000-192.168.1.3:9003

  [External Code]
> Couchbase.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Dispose(bool disposing) Line 184 + 0x11 bytes C#
  Couchbase.dll!Couchbase.IO.ConnectionPool<Couchbase.IO.Strategies.EapConnection>.Dispose() Line 169 + 0xe bytes C#
  Couchbase.dll!Couchbase.IO.Strategies.DefaultIOStrategy.Dispose(bool disposing) Line 113 + 0xc bytes C#
  Couchbase.dll!Couchbase.IO.Strategies.DefaultIOStrategy.Finalize() Line 122 + 0xb bytes C#
  [External Code]

in client logs:

2014-10-21 19:05:18,841 [19] INFO Couchbase.IO.ConnectionBase - Sending key SimpleKeyREP3511REP3511REP3511REP3511REP3511 using 50 on 192.168.1.3:12006
2014-10-21 19:05:18,841 [7] WARN Couchbase.Configuration.Server.Providers.ConfigProviderBase - System.Net.Sockets.SocketException (0x80004005): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.1.3:11210
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
   at Couchbase.IO.DefaultConnectionFactory.<GetGeneric>b__2[T](IConnectionPool`1 p, IByteConverter c) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\IO\DefaultConnectionFactory.cs:line 48
   at Couchbase.IO.ConnectionPool`1.Acquire() in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\IO\ConnectionPool.cs:line 124
   at Couchbase.IO.ConnectionPool`1.Couchbase.IO.IConnectionPool.Acquire() in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\IO\ConnectionPool.cs:line 200
   at Couchbase.Authentication.SASL.SaslFactory.<GetFactory3>b__0(String username, String password, IOStrategy strategy, IByteConverter converter) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\Authentication\SASL\SaslFactory.cs:line 21
   at Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.GetConfig(String bucketName, String password) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\Configuration\Server\Providers\CarrierPublication\CarrierPublicationProvider.cs:line 75


 Comments   
Comment by Jeff Morris [ 21/Oct/14 ]
Andrei -

The socket error in the description is unrelated and expected during a rebalance.

-Jeff
Comment by Andrei Baranouski [ 21/Oct/14 ]
https://s3.amazonaws.com/bugdb/jira/NCBC-693/c4c0d1e9/NCBC-693.zip

hm, but rebalance has not started there
Comment by Jeff Morris [ 21/Oct/14 ]
True, in this case it's bootstrapping and the server rejected the connection: No connection could be made because the target machine actively refused it 192.168.1.3:11210

This will happen if that IP is in your bootstrap list, but the node hasn't joined a cluster or isn't an ept (master) node.

A few lines later, the client switches to HttpStreaming: Bootstrapping from http://192.168.1.3:9000/pools

Using port 9000(?)...is port 11210 the port you are intending to use? Either way this would be a separate issue entirely related to using custom ports.

The ODE that is the title of this ticket happens when the DefaultIOStrategy finalizes (a minor bug) because it's not longer referenced; the _refs collection has already been disposed (it's a ConcurrentBag) via finalization. The two are separate issues.
Comment by Andrei Baranouski [ 21/Oct/14 ]
in cluster_run the port are not default:
for example for the instance http://192.168.1.3:9000/(8091-&gt;9000 here)
memcached port 11210 -> 12000
proxy 11211 -> 12001

http://192.168.1.3:9001/
memcached port 11210 -> 12002
proxy 11211 -> 12003 .....

i'm not sure that there is an issue related to customs ports because some time docs are loaded in cluster without any problems

Comment by Jeff Morris [ 21/Oct/14 ]
Yes, it's a bug with custom ports unrelated to the bug in this ticket; it needs a separate ticket. It works because the client falls back to HttpStreaming and bootstraps from there.

Ticket: https://www.couchbase.com/issues/browse/NCBC-694
Comment by Andrei Baranouski [ 25/Oct/14 ]
I think the ticket should be marked minimum as critical(even blocker) because I'm able to reproduce it with default env when run via command line

[903.95 INFO] (SDKD log:137) +++ Flushing remaining exception trace buffer
[903.96 INFO] (SDKD log:137) at System.Threading.ThreadLocal`1.GetValueSlow()
   at System.Threading.ThreadLocal`1.get_Value()
   at System.Collections.Concurrent.ConcurrentBag`1.GetThreadList(Boolean forceCreate)
   at System.Collections.Concurrent.ConcurrentBag`1.TryTakeOrPeek(T& result, Boolean take)
   at System.Collections.Concurrent.ConcurrentBag`1.TryTake(T& result)
   at Couchbase.IO.ConnectionPool`1.Dispose(Boolean disposing) in c:\jenkins\workspace\.net-sdkdclient-ng2_win2012_64_andrei\couchbase-net-client\Src\Couchbase\IO\ConnectionPool.cs:line 184
   at Couchbase.IO.ConnectionPool`1.Dispose() in c:\jenkins\workspace\.net-sdkdclient-ng2_win2012_64_andrei\couchbase-net-client\Src\Couchbase\IO\ConnectionPool.cs:line 169
   at Couchbase.IO.Strategies.DefaultIOStrategy.Dispose(Boolean disposing) in c:\jenkins\workspace\.net-sdkdclient-ng2_win2012_64_andrei\couchbase-net-client\Src\Couchbase\IO\Strategies\DefaultIOStrat
egy.cs:line 113
   at Couchbase.IO.Strategies.DefaultIOStrategy.Finalize() in c:\jenkins\workspace\.net-sdkdclient-ng2_win2012_64_andrei\couchbase-net-client\Src\Couchbase\IO\Strategies\DefaultIOStrategy.cs:line 122

Comment by Jeff Morris [ 25/Oct/14 ]
Andrei -

This ticket addresses the issue specifically: https://www.couchbase.com/issues/browse/NCBC-694

It's not a blocker because it doesn't impact the default configuration (only when you use custom ports) and the client will fall back to using HttpStreamingProvider and function as expected.

-Jeff
Comment by Andrei Baranouski [ 25/Oct/14 ]
I mean I reproduced it even with default settings/ports
Comment by Jeff Morris [ 25/Oct/14 ]
Andrei -

Do you have a log file for it when using default settings/ports? This is a side affect that the DefaultIOStrategy is finalizing, instead of Dispose being called:

Couchbase.IO.Strategies.DefaultIOStrategy.Finalize() in c:\jenkins\workspace\.net-sdkdclient-ng2_win2012_64_andrei\couchbase-net-client\Src\Couchbase\IO\Strategies\DefaultIOStrategy.cs:line 122

I need a broader set of logs to determine why it's finalizing as opposed to being disposed. It's a legit bug, just not a critical or a blocker.

Thanks,

Jeff




[NCBC-585] Refactor finalization logic so that Exceptions are not thrown on finalizer thread Created: 15/Aug/14  Updated: 25/Oct/14

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

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

Issue Links:
Relates to

 Description   
Reviewing MemcachedClient, there are a few issues that need to be resolved:
- The dispose/finalize logic itself is not correct in MemcachedClient. GCSuppressFinalize shouldn't be called during finalization for example.
- The finalizer contains code (logging) that could throw an exception if the config was not setup correctly or if It cannot create the instance for some reason




[NCBC-694] When custom ports are used CCCP still uses the default 11210 Created: 21/Oct/14  Updated: 21/Oct/14

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

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


 Description   
If custom ports are specified for the cluster, the client will attempt to use the default port 11210 and the CCCP provider will fail. After it fails the HttpStreaming provider will try again and succeed.

-------------------------------------------------------------------------------------------------------------------------------------------

2014-10-21 18:49:38,633 [4] DEBUG Couchbase.Core.ClusterController - Trying to boostrap with Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.
2014-10-21 18:49:38,641 [4] DEBUG Couchbase.Configuration.Server.Providers.ConfigProviderBase - Getting config for bucket default
2014-10-21 18:49:38,650 [4] DEBUG Couchbase.Core.ClusterController - Creating DefaultIOStrategy
2014-10-21 18:49:38,650 [4] DEBUG Couchbase.IO.Strategies.DefaultIOStrategy - Creating DefaultIOStrategy 4dbb4098-e061-44d3-bf87-f1ad3fba091c
2014-10-21 18:49:39,792 [4] WARN Couchbase.Configuration.Server.Providers.ConfigProviderBase - System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it 192.168.1.3:11210
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
   at Couchbase.IO.DefaultConnectionFactory.<GetGeneric>b__2[T](IConnectionPool`1 p, IByteConverter c) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\IO\DefaultConnectionFactory.cs:line 48
   at Couchbase.IO.ConnectionPool`1.Acquire() in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\IO\ConnectionPool.cs:line 124
   at Couchbase.IO.ConnectionPool`1.Couchbase.IO.IConnectionPool.Acquire() in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\IO\ConnectionPool.cs:line 200
   at Couchbase.Authentication.SASL.SaslFactory.<GetFactory3>b__0(String username, String password, IOStrategy strategy, IByteConverter converter) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\Authentication\SASL\SaslFactory.cs:line 21
   at Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.GetConfig(String bucketName, String password) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\Configuration\Server\Providers\CarrierPublication\CarrierPublicationProvider.cs:line 75
2014-10-21 18:49:39,797 [4] WARN Couchbase.Core.ClusterController - System.AggregateException: One or more errors occurred.
   at Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.GetConfig(String bucketName, String password) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\Configuration\Server\Providers\CarrierPublication\CarrierPublicationProvider.cs:line 130
   at Couchbase.Core.ClusterController.CreateBucket(String bucketName, String password) in c:\jenkins\workspace-net2\couchbase-net-client\Src\Couchbase\Core\ClusterController.cs:line 156

...

2014-10-21 18:49:39,797 [4] DEBUG Couchbase.Core.ClusterController - Trying to boostrap with Couchbase.Configuration.Server.Providers.Streaming.HttpStreamingProvider.

...

2014-10-21 18:49:43,933 [10] INFO Couchbase.Configuration.Server.Providers.Streaming.ConfigThreadState - Listening to http://192.168.1.3:9000/pools/default/bs/default






[NCBC-691] Maximum and Default Locking times are misleading Created: 19/Oct/14  Updated: 19/Oct/14

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

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

Issue Links:
Relates to
relates to MB-12379 Default and Maximum lock time describ... Open

 Description   
The maximum lock in 2.5.1 and 3.0.0 is 30 secs, the default is 15 seconds. Any attempt to set a lock higher than the maximum results in the default being used. The .NET docs need updating to match this behaviour.

 Comments   
Comment by Chris Malarky [ 19/Oct/14 ]
Not sure if 2.0 is affected? Couldn't find a GetWithLock in the docs.
Comment by Jeff Morris [ 19/Oct/14 ]
GetWithLock hasn't been implemented yet it 2.0.




[NCBC-686] Use POST when requesting a View if the URI exceeds the maximum character length Created: 15/Oct/14  Updated: 15/Oct/14

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

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


 Description   
From https://forums.couchbase.com/t/getview-need-http-post-instead-of-http-get/1743:

When executing a call extremely similar to the one below I receive the error "Invalid URI: The Uri string is too long".

Code snippet:

CouchbaseClient client;
client.GetView<SomeDataModel>("DesignName", "ViewName", true)
            .Stale(StaleMode.False)
            .Reduce(true)
            .StartKey<object[]>(["someString", 0, "", "", "", 0, ""])
            .EndKey<object[]>(["someString", 9999, "zzzzzzzzzzzzzzzzzzzz", "zzzzzzzzzzzzzzzzzzzz", "zzzzzzzzzzzzzzzzzzzz", 999999999, "zzzzzzzzzzzzzzzzzzzz"]);

If I remove the Start Key and End Key limiters the view will successfully return so I presume that an HTTP GET is being performed and the length of the keys are causing the issue. I used 20 "z"s to represent how long the data could be. For a literal end when there isn't a value specified of course "{" would work, but when values are specified for the strings could be 20 characters long, or possibly even longer.




[NCBC-680] Support for fail fast cluster operations incase of down node Created: 10/Oct/14  Updated: 13/Oct/14

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

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

Issue Links:
Relates to

 Description   
Request is to expose an API in .Net SDK like Java SDK to provide a mechanism for failing fast requests mapping to a down node after "X" no. of timeout exceptions.

builder.setTimeoutExceptionThreshold(10), with this setting in-case of down node in cluster:

* For first 10 operations mapping to a down node, the client request will wait till timeout window(default 2.5s)
* For the 11 request, the operations will fail immediately and doesn't wait till timeout happens.




Make JSON Serializer open and extensible (NCBC-676)

[NCBC-681] Make JsonSerializerSettings externally configurable. Created: 10/Oct/14  Updated: 21/Oct/14

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

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


 Comments   
Comment by Jeff Morris [ 21/Oct/14 ]
Pull request submitted by Matt Nischan: http://review.couchbase.org/#/c/42317/




[NCBC-676] Make JSON Serializer open and extensible Created: 08/Oct/14  Updated: 10/Oct/14

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

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

Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-681 Make JsonSerializerSettings externall... Technical task In Progress Jeff Morris  

 Description   
Some customers may want to use a JSON serializer other than NewtonSoft, this feature makes the serialization interface extensible so that a consumer of the SDK can implement there own serializer.




[NCBC-666] the setting up project section should refer to using Enyim.Caching.dll not Enyim,Memecached.dll Created: 03/Oct/14  Updated: 13/Oct/14

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

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


 Description   
http://docs.couchbase.com/couchbase-sdk-net-1.3/
under "setting up a project" we refer to memcached.dll. we should be referring to enyim.caching.dll since that is what the file name is.

------

Setting up a project¶
Create a new console project in Visual Studio. Add references to the Couchbase.dll, Enyim.Memcached.dll, and Newtonsoft.Json.dll assemblies that are in the release zip file.

Visual Studio console applications target the .NET Framework Client Profile by default, so you need to change the project properties to target the full .NET Framework. If you skip this step, you’ll have compilation errors.



 Comments   
Comment by Jeff Morris [ 13/Oct/14 ]
Will update docs for 1.3.10 release.




[NCBC-657] Provide documentation in readme.md for running unit tests Created: 24/Sep/14  Updated: 24/Sep/14

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

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


 Description   
From Andrei: "could you add in Readme pre-setup requirements for unit tests: 1) list of buckets 2) ip addresses of CB clusters that are used"




[NCBC-651] Create Tests to ensure 1.X and 2.X work together in the same app domain Created: 20/Sep/14  Updated: 20/Sep/14

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

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

Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-684 Rename Couchbase.dll to Couchbase.Net... Technical task Resolved Jeff Morris  

 Description   
These tests should also cover all common flags integration concerns.




[NCBC-643] TimeSpan expiration under 1 sec results in an infinite timeout Created: 16/Sep/14  Updated: 30/Sep/14

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

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


 Description   
Starting in 1.3.6, when setting the TimeSpan expiration to less than 1 sec it appears to now round down to 0 which implies an infinite timeout. This does not currently have direct production impact, but this changed behavior broke the testing process for the customer.

From the customer:

"There looks to be 2 options to specify timeouts in .NET SDK, either with DateTime or with TimeSpan. Both of them technically allow users to specify timeouts with just a fraction of a second, even though internally Couchbase works with full seconds.

Example:
var result1 = client.ExecuteStore(StoreMode.Set, "a", 1, DateTime.UtcNow.AddMilliseconds(500));
var result2 = client.ExecuteStore(StoreMode.Set, "b", 1, TimeSpan.FromMilliseconds(500));

Behavior for first method remains unchanged. The DateTime value will get recalculated into UNIX time and rounded down to full seconds. The key "a" will then be stored in Couchbase with expiration equal to current time and will expire almost instantly. That is pretty much in line with what user intended.

The problem is with the second method. In .NET SDK 1.3.5 this TimeSpan value would get recalculated into a UNIX time the same way as DateTime and result in the same behavior. But NCBC-485 changed this. From .NET SDK 1.3.6 this TimeSpan is passed into Couchbase as raw seconds. You trim the 0.5 second value down to 0 seconds and Couchbase server then interprets this as infinite timeout. But that is the complete opposite of what user actually intended."

A fix suggestion is as follows:

https://github.com/couchbase/couchbase-net-client/blob/release13/src/Enyim.Caching/MemcachedClient.cs
line 1046 should be modified to:
if (TimeSpan.FromSeconds(1) <= validFor && validFor < TimeSpan.FromSeconds(((60 * 60) * 24) * 30))




[NCBC-642] Use IOControl to set heartbeat settings on each TCP connection Created: 15/Sep/14  Updated: 15/Sep/14

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

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

Issue Links:
Dependency




[NCBC-628] Create build script for 2.0 SDK Created: 07/Sep/14  Updated: 10/Sep/14

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

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

Issue Links:
Relates to
relates to NCBC-627 Create nuspec file for 2.0 SDK Resolved




[NCBC-622] Exception < 1024 vbuckets Created: 05/Sep/14  Updated: 15/Sep/14

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

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


 Description   
Hey,

I think the code probably doesn't work with 128 vbuckets as used on mac. On a linux machine with 1024 it works fine.


Unhandled Exception:
System.IndexOutOfRangeException: Array index is out of range.
  at Couchbase.Core.Buckets.VBucketKeyMapper.CreateVBuckets () [0x00000] in <filename unknown>:0
  at Couchbase.Core.Buckets.VBucketKeyMapper..ctor (System.Security.Cryptography.HashAlgorithm algorithm, System.Collections.Generic.List`1 servers, Couchbase.Configuration.Server.Serialization.VBucketServerMap vBucketServerMap) [0x00000] in <filename unknown>:0
  at Couchbase.Core.Buckets.VBucketKeyMapper..ctor (System.Collections.Generic.List`1 servers, Couchbase.Configuration.Server.Serialization.VBucketServerMap vBucketServerMap) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.CouchbaseConfigContext.LoadConfig (IBucketConfig bucketConfig) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.ConfigContextBase..ctor (IBucketConfig bucketConfig, Couchbase.Configuration.Client.ClientConfiguration clientConfig, System.Func`2 ioStrategyFactory, System.Func`3 connectionPoolFactory, System.Func`4 saslFactory) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.CouchbaseConfigContext..ctor (IBucketConfig bucketConfig, Couchbase.Configuration.Client.ClientConfiguration clientConfig, System.Func`2 ioStrategyFactory, System.Func`3 connectionPoolFactory, System.Func`4 saslFactory) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.GetConfig (IBucketConfig bucketConfig) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.GetConfig (System.String bucketName, System.String password) [0x00000] in <filename unknown>:0
  at Couchbase.Core.ClusterManager.CreateBucket (System.String bucketName, System.String password) [0x00000] in <filename unknown>:0
  at Couchbase.Core.ClusterManager.CreateBucket (System.String bucketName) [0x00000] in <filename unknown>:0
  at Couchbase.CouchbaseCluster.OpenBucket (System.String bucketname) [0x00000] in <filename unknown>:0
  at couchbase_net_client_example.Program.Main (System.String[] args) [0x00017] in /Users/michaelnitschinger/Downloads/couchbase-net-client-2.0-dp2-example/couchbase-net-client-example/Program.cs:17
[ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Array index is out of range.
  at Couchbase.Core.Buckets.VBucketKeyMapper.CreateVBuckets () [0x00000] in <filename unknown>:0
  at Couchbase.Core.Buckets.VBucketKeyMapper..ctor (System.Security.Cryptography.HashAlgorithm algorithm, System.Collections.Generic.List`1 servers, Couchbase.Configuration.Server.Serialization.VBucketServerMap vBucketServerMap) [0x00000] in <filename unknown>:0
  at Couchbase.Core.Buckets.VBucketKeyMapper..ctor (System.Collections.Generic.List`1 servers, Couchbase.Configuration.Server.Serialization.VBucketServerMap vBucketServerMap) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.CouchbaseConfigContext.LoadConfig (IBucketConfig bucketConfig) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.ConfigContextBase..ctor (IBucketConfig bucketConfig, Couchbase.Configuration.Client.ClientConfiguration clientConfig, System.Func`2 ioStrategyFactory, System.Func`3 connectionPoolFactory, System.Func`4 saslFactory) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.CouchbaseConfigContext..ctor (IBucketConfig bucketConfig, Couchbase.Configuration.Client.ClientConfiguration clientConfig, System.Func`2 ioStrategyFactory, System.Func`3 connectionPoolFactory, System.Func`4 saslFactory) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.GetConfig (IBucketConfig bucketConfig) [0x00000] in <filename unknown>:0
  at Couchbase.Configuration.Server.Providers.CarrierPublication.CarrierPublicationProvider.GetConfig (System.String bucketName, System.String password) [0x00000] in <filename unknown>:0
  at Couchbase.Core.ClusterManager.CreateBucket (System.String bucketName, System.String password) [0x00000] in <filename unknown>:0
  at Couchbase.Core.ClusterManager.CreateBucket (System.String bucketName) [0x00000] in <filename unknown>:0
  at Couchbase.CouchbaseCluster.OpenBucket (System.String bucketname) [0x00000] in <filename unknown>:0
  at couchbase_net_client_example.Program.Main (System.String[] args) [0x00017] in /Users/michaelnitschinger/Downloads/couchbase-net-client-2.0-dp2-example/couchbase-net-client-example/Program.cs:17
The application was terminated by a signal: SIGHUP






[NCBC-616] Fixed PagedView with only one page Created: 29/Aug/14  Updated: 29/Aug/14

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

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


 Description   
When using a PageView with a page size larger than the number of items
in the result set, the MoveNext() operation indicates there are no items
in the current page and returns false.

The fix changes the expression to check if there the nextId is not null
and if the current page contains any items.

 Comments   
Comment by Jeff Morris [ 29/Aug/14 ]
http://review.couchbase.org/#/c/41122/




[NCBC-619] Make Socket connection timeout configurable Created: 31/Aug/14  Updated: 14/Oct/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 Beta
Fix Version/s: 2.0.1

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


 Description   
When trying to connect to a down node, the client will wait the default timeout before failing. This blocks the user making them wait quite awhile (~20 seconds) before trying the next node in the list. This patch should make the timeout configurable.




[NCBC-614] Review and reduce verbosity of logging in INFO mode Created: 28/Aug/14  Updated: 29/Aug/14

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

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

Issue Links:
Dependency




[NCBC-584] GetVBucket throws not implemented exception. Created: 14/Aug/14  Updated: 29/Aug/14

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

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


 Description   
From Q&A: http://www.couchbase.com/communities/jp/q-and-a/weird-error
Weird Error

Hi Everyone,

Thanks in advance for the help. I have been getting the following error periodically.

GetVBucket is implemented only for VBucketNodeLocator implementation of IMemcachedNodeLocator

I am using couchbase as a session state offload and a caching utility.

The conditions under which I was receiving this error are as follows:

Couchbase 2.5.1 enterprise.
2 node system
when I am calling the following method:

var answer = _couchBaseClient.KeyExists("Key_Name");

For some reason the KeyExists method throws this error.

I am running this code in a two IIS server environment. The error essentially prevents the site from being usable.

I was able to remove this error but one of the two ways (neither of which is preferable to me):

removing the use of the KeyExists method which I don't want to do.
remove 1 node of my 2 node setup which makes fail over not possible.....again something I don't want to do.

So my question(s) is:

What I am doing wrong?
Configuration Issue?
Not best practice?

Thanks,
- See more at: http://www.couchbase.com/communities/jp/q-and-a/weird-error#sthash.cMQqY9An.Ytj2AA3q.dpuf




[NCBC-573] Handle case where client is in state where no node is available to handle request. Created: 04/Aug/14  Updated: 04/Aug/14

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

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


 Description   
In certain scenarios, the client may be in a state where a node or server is not available to handle the operation request. This ticket is to determine and define the client behavior in this case.




[NCBC-572] When using TimeSpan objects doesn't expiry from couchbase Created: 31/Jul/14  Updated: 05/Aug/14

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

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


 Description   
In version 1.3.6 here was a bug introduced when using Store method:
http://www.couchbase.com/communities/q-and-a/store-memcached-bucket-expi...

I upgraded to version 1.3.7 and it looks like this issue is still happening.

When I pass TimeStamp to Store method they don't expire at all.

our implementation:
public void Store(StoreMode mode, string key, object value, TimeSpan validFor)
        {
tryExecuteStore(() => _client.ExecuteStore(mode, key, getObjectToStore(value), validFor));
        }

 private static void tryExecuteStore(Func<IOperationResult> executeStoreTask)
        {
            tryExecuteAndConvertExceptions(executeStoreTask, "Store");
        }

private static void tryExecuteAndConvertExceptions(Func<IOperationResult> executeStoreTask, string logName)
        {
            IOperationResult result = null;
            try
            {
                result = executeStoreTask();
            }
            catch (Exception exception)
            {
                logUnsuccessfulOperationAndThrow(logName, exception.Message, exception);
            }
      
            if (!result.Success)
                logUnsuccessfulOperationAndThrow(logName, result.Message, result.Exception, result.StatusCode);
        }


private static void logUnsuccessfulOperationAndThrow(
string operationType, string message, Exception exception, int? statusCode = null)
{
message = String.Format("Error during {0} operation: {1}", operationType, message);
if (statusCode.HasValue)
message = String.Format("{0} ({1} - {2})", message, statusCode.Value,
((CouchbaseStatusCode) statusCode.Value).ToString());

_logger.Error(message, exception);
throw new CouchbaseException(message, exception,
statusCode == null ? default(CouchbaseStatusCode?) : (CouchbaseStatusCode) statusCode);
}





[NCBC-560] Measure performance impact of using Mutex's and possibly use RWSL instead. Created: 23/Jul/14  Updated: 23/Jul/14

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

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


 Description   
See this commit: http://review.couchbase.org/#/c/39761/ and http://www.couchbase.com/issues/browse/NCBC-558




[NCBC-540] Ensure TTL on operations follows documented rules Created: 01/Jul/14  Updated: 15/Sep/14

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

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


 Description   
See here: http://docs.couchbase.com/couchbase-devguide-2.0/#about-document-expiration




[NCBC-539] ManualByteConvert.ToUInt64 returns invalid number Created: 01/Jul/14  Updated: 01/Jul/14

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

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


 Description   
Sample bytes (a CAS value):

[0x00000010] 0x00
[0x00000011] 0x00
[0x00000012] 0xa9
[0x00000013] 0x53
[0x00000014] 0x5f
[0x00000015] 0x3d
[0x00000016] 0xa7
[0x00000017] 0x0f

Expected: 186175545255695
Actual: 1597878111




[NCBC-535] Complete Awaitable Socket IO Engine Created: 26/Jun/14  Updated: 24/Sep/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 Beta
Fix Version/s: .future

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

Epic Link: Provide Async TAP methods for all operations - view, kv, and n1ql

 Description   
This is required so that TAP methods are async all the way through. This allows the users of the client to await on an operation.




[NCBC-531] Provide Async TAP methods for all operations - view, kv, and n1ql Created: 25/Jun/14  Updated: 26/Jun/14

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

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

Epic Name: Provide Async TAP methods for all operations - view, kv, and n1ql
Epic Status: To Do




[NCBC-532] Provide TAP Methods for K/V operations Created: 26/Jun/14  Updated: 26/Jun/14

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

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

Epic Link: Provide Async TAP methods for all operations - view, kv, and n1ql




[NCBC-520] GetView returns IVIEW with IVIEWROWS which are NULL Created: 18/Jun/14  Updated: 18/Jun/14

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

Type: Bug Priority: Major
Reporter: douwequerty Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: customer
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Couchbase 2.2 server on unbuntu, dot net website running in ISS.


 Description   
We use couchbase views to retrieve some keys which worked fine in 1.2.9. However we upgraded to 1.3.6 in which we found view errors (See NCBC-507). Hence we reverted back to 1.3.5 and 1.3.4 which contained the following view error:

Code:
var itemtoremove = CouchbaseWrapper.Client.GetView("search", "customerid_productid").Key(new object[] { Obj.Customer_ID.ToString().ToLower(), row["ProductID"].ToString().ToLower() });

Returns an IView of IViewRows over which we enumerate. However some rows have the value null (not the properties of IViewRow but the reference to IViewRow itself is null). Which results in object reference not set exception when trying to handle the IViewRows. Which we ofcourse don't expect when processing the results of a view.
Currently I reverted back to 1.2.9 in which our code executes without any problems.

 Comments   
Comment by Jeff Morris [ 18/Jun/14 ]
Is this deterministic? Would you mind attaching a simple sample app illustrating the issue plus data and your view definitions in a separate file?




[NCBC-507] View {0} was mapped to a dead node, failing Created: 12/Jun/14  Updated: 18/Jun/14

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

Type: Bug Priority: Major
Reporter: douwequerty Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: windows
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Couchbase 2.2 server on unbuntu, dot net website running in ISS.


 Description   
View {0} was mapped to a dead node, failing .

Known issue with previous versions of the couchbase client, see http://www.couchbase.com/issues/browse/NCBC-337 for instance but there are more,
has some how returned.
I reverted back to the 1.3.5 client and the error magically disappeared.

 Comments   
Comment by Jeff Morris [ 18/Jun/14 ]
douwequerty -

Be aware that we have added additional logging and retry logging in the 1.3.X versions of the client. The retry logic is for handling scenarios when the cluster is transitioning between states, for instance during a rebalance or when a node is added or removed. It's a Warn, because in subsequent retries it's likely that an active node will be selected and the operation will succeed.

Is this the error that your getting from your OperationResult.Message property or what you are seeing in your logs? The most important result is the final outcome of the operation and what you would see at your at application level and not in your logs.

That being said, how often is this happening? What is the state of the cluster when this is happening? What about at the app server level - is IIS doing an app-pool refresh at this time?

If you can supply answers to those questions and logs, it would be helpful in diagnosing what is going on here.

-Jeff




[NCBC-506] Creating two or more client instances on adjacent lines creates deadlock Created: 11/Jun/14  Updated: 11/Jun/14

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

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


 Description   
Creating two or more client instances on adjacent lines may introduce a deadlock where one instance blocks, waiting for the bootstrapping to complete and the others wait, but the first never completes (not sure why). A work around is to put the main thread to sleep for a few ms before creating the next instance, which gives the first time to finish bootstrapping




[NCBC-491] Getting "Failed to initialize pool." on Windows Server R2 Created: 28/May/14  Updated: 04/Jul/14

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

Type: Bug Priority: Major
Reporter: samal Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: MS Windows Server R2

Issue Links:
Dependency

 Description   
Submitted bug as per request in Community discussion here: http://www.couchbase.com/communities/q-and-a/failed-initialize-pool

Recap:
Failing to establish connection between Nancy/ASP.NET webservice, using .net client 1.3.5 from nuget and Couchbase 2.2.0-837-rel. Tried with published build of service on the same machine as the Couchbase server, without firewall, anti-virus/malware, and debugger. Server Node Name on the server is 0.0.0.0.

No issue when trying against fresh Couchbase install on development machine running Windows 7.

Log from server:
2014-05-27 11:06:44.6021|WARN|Enyim.Caching.MemcachedClient|Creating new client. CID: f41d0d09-399e-4399-ba24-d4ed4902865e CouchbaseClient
2014-05-27 11:06:45.2091|WARN|Couchbase.CouchbasePool|Starting Couchbase.CouchbasePool
2014-05-27 11:06:45.3351|WARN|Couchbase.MessageStreamListener|Started working.
2014-05-27 11:06:45.3491|WARN|Couchbase.MessageStreamListener|Looking for the first working node.
2014-05-27 11:06:45.3731|WARN|Couchbase.MessageStreamListener|Starting the listener. Queue=True
2014-05-27 11:06:45.4031|WARN|Couchbase.MessageStreamListener|Resolved pool url http://127.0.0.1:8091/pools/ to http://127.0.0.1:8091/pools/default/bucketsStreaming/name_of_our_bucket?bucket_uuid=88ecde59b0e41d255e7a845583d3c2c8
2014-05-27 11:06:45.4031|WARN|Couchbase.MessageStreamListener|Start receiving messages.
2014-05-27 11:06:45.4581|ERROR|Couchbase.CouchbasePool|Failed to initialize the pool.
2014-05-27 11:06:45.4581|WARN|Couchbase.MessageStreamListener|Processing message: {"name":"name_of_our_bucket","bucketType":"membase","authType":"sasl","saslPassword":"xxxxxxxxxxx","proxyPort":0,"replicaIndex":false,"uri":"/pools/default/buckets/name_of_our_bucket?bucket_uuid=88ecde59b0e41d255e7a845583d3c2c8","streamingUri":"/pools/default/bucketsStreaming/name_of_our_bucket?bucket_uuid=88ecde59b0e41d255e7a845583d3c2c8","localRandomKeyUri":"/pools/default/buckets/name_of_our_bucket/localRandomKey","controllers":{"compactAll":"/pools/default/buckets/name_of_our_bucket/controller/compactBucket","compactDB":"/pools/default/buckets/default/controller/compactDatabases","purgeDeletes":"/pools/default/buckets/name_of_our_bucket/controller/unsafePurgeBucket","startRecovery":"/pools/default/buckets/name_of_our_bucket/controller/startRecovery"},"nodes":[{"couchApiBase":"http://0.0.0.0:8092/name_of_our_bucket","replication":0.0,"clusterMembership":"active","status":"healthy","otpNode":"ns_1@0.0.0.0","thisNode":true,"hostname":"0.0.0.0:8091","clusterCompatibility":131072,"version":"2.2.0-837-rel-community","os":"windows","ports":{"proxy":11211,"direct":11210}}],"stats":{"uri":"/pools/default/buckets/name_of_our_bucket/stats","directoryURI":"/pools/default/buckets/name_of_our_bucket/statsDirectory","nodeStatsListURI":"/pools/default/buckets/name_of_our_bucket/nodes"},"ddocs":{"uri":"/pools/default/buckets/name_of_our_bucket/ddocs"},"nodeLocator":"vbucket","fastWarmupSettings":false,"autoCompactionSettings":false,"uuid":"88ecde59b0e41d255e7a845583d3c2c8","vBucketServerMap":{"hashAlgorithm":"CRC","numReplicas":1,"serverList":["0.0.0.0:11210"],"vBucketMap":[[0,-1],

 Comments   
Comment by Jeff Morris [ 03/Jul/14 ]
Hi Samal -

Are you still running into the issue or have you resolved it?

- Jeff
Comment by samal [ 04/Jul/14 ]
Hi Jeff,

Yeah changing the server listen ip from 0.0.0.0 to 127.0.0.1 did the trick.




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

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

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

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

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

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

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

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




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

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

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


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


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




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

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

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


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

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

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

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

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

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




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

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

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

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


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




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

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

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





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

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

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

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

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




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

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

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





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

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

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


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

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

Please add such an operation in a future version

Thanks.

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




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

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

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

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




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

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

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


 Description   
Hi, Jeff

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

Thanks
Larry




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

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

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





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

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

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


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

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

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




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

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

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


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





[NCBC-286] Accessing key data when using strongly-typed views Created: 07/Aug/13  Updated: 02/Jun/14

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

Type: Improvement Priority: Major
Reporter: David Haikney Assignee: Jeff Morris
Resolution: Unresolved Votes: 1
Labels: customer, views
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Directly lifted from forum post here and copied and pasted below:
http://www.couchbase.com/forums/thread/net-client-accessing-key-data-when-using-strongly-typed-views


====Forum Post 1 (Simon, Requester) ====
I have a Couchbase 2.0 View that returns a projection of the underlying objects - e.g.
{
    Count: 100,
    SumPrices: 1231231.02
}
if I use a strongly typed view - e.g.
_client.GetView<MyDto>("my__dd", "my_view")
the projection is automatically deserialised to my DTO class, which is nice and easy. However, I'd also like to retrieve info from the key, which doesn't seem to be possible with this approach.
I can use the more general IView syntax, but now I have to deserialize the DTO myself which is not simple since the data is exposed as a dictionary, not a JSON string.
Perhaps I'm missing something, but it would be useful to be able to use both strong-typing and still have access to the key meta data.
The alternative would be to include the values from the key in the projection data, but this seems wrong in that the data will be repeated twice in the index?

====Forum Post 2 (John)====
As I understand your view returns.
 { Count: 100, SumPrices: 1231231.02 }
If this is correct you use reduce function that counts and summs multiple keys. And it returns 1 key-value pair where key is null and value is an object mentioned before.
So I don't understand which one key's metadata your want to see and where? If you want to see all keys metadata you can store it in reduce function into array or something:
{ Count: 100, SumPrices: 1231231.02, Keys: [key1, key2 ...] }.

====Forum Post 3 (John)====
If your DTO includes an "Id" property, it will be populated a bit magically by the generic view method. It's a little trickier than that, and I describe a solution here - http://www.couchbase.com/docs/couchbase-sdk-net-1.2/brewerycrud.html. I'm going to work on improving the JSON extensions to make this easier to use - https://www.couchbase.com/docs/couchbase-sdk-net-1.2/jsonextensions.html.

====Forum Post 4 (Simon, Requester)====
Hi yes, you are correct that this is a map-reduce scenario.
However I am using the group feature so each row returned should have a distinct key associated with it as per the IViewRow.ViewKey property (of type object[]) in the .NET Client API. I can make this work with the loosely typed version but the mapping code for the returned projection is a bit icky - e.g.
((IDictionary)(vr.Info["value"]))["Count"]
to get the Count value!

====Forum Post 5 (Simon, Requester)====
HI John - Thanks for the pointers. To clarify, this is a map-reduce view scenario. My client code is like this:
            return _client.GetView<WebsiteBrowseQuoteSummary>("browse", "ret_by_route_dow")
                .StartKey(new object[] { from, to, (int)departureDate.DayOfWeek, (int)returnDate.DayOfWeek })
                .EndKey(new object[] { from, to, (int)departureDate.DayOfWeek, (int)returnDate.DayOfWeek + 1 })
                .Group(true)
                .Reduce(true)
                .ToList();
I think the issue is that in the strongly typed approach (e.g. GetView<T>) the return type is IView<T> which is an IEnumerable<T> where T is the DTO. If there was an IViewRow<T> with a Value property of type T and a ViewKey property, I think that would do it as I could add the additional work to populate the missing params from the ViewKey.

====Forum Post 6 (John)====
Ah, didn't catch the reduce part... In the beer sample, I used the non-generic view for such queries:
https://github.com/couchbaselabs/beer-sample-net/blob/master/src/Couchba...
The limitation with the generic query is that it either a) expects to get the document JSON by its ID, where reduce won't obviously have the id, or b) it expects the value to be a JSON projection to deserialize into an instance of T.
I'd like to support generic reduce queries, so I'll give it some thought...
====End of Forum Posts====





[NCBC-302] "Failed to initialize the pool" errors in MVC Application Created: 24/Sep/13  Updated: 13/Jan/14

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

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


 Description   
From the forums post: http://www.couchbase.com/communities/q-and-a/getting-intermittent-error-failed-initialize-pool

We're using version 1.2.6 of the .NET client and version 2.0.1 community version of the server.

We will occasionally get a flood of the following errors. We are seeing this error in an MVC application. I've done quite a bit of google'fu and haven't seen anything about this couchbase issue. Also note that this seems to happen randomly, although I'm still investigating.

message: Failed to initialize the pool.
level: Error
stacktrace: at System.Web.AspNetSynchronizationContext.OperationStarted() at System.Net.WebClient.DownloadStringAsync(Uri address, Object userToken) at Couchbase.DefaultHttpClient..ctor(Uri baseUri, String username, String password, TimeSpan timeout, Boolean shouldInitConnection) at Couchbase.DefaultHttpClientFactory.Create(Uri baseUri, String username, String password, TimeSpan timeout, Boolean shouldInitializeConnection) at Couchbase.Configuration.CouchbaseClientSection.Couchbase.Configuration.ICouchbaseClientConfiguration.CreateHttpClient(Uri baseUri) at Couchbase.CouchbaseNode..ctor(IPEndPoint endpoint, Uri couchApiBase, ICouchbaseClientConfiguration config, ISaslAuthenticationProvider authenticationProvider) at Couchbase.CouchbasePool.CreateNode(IPEndPoint endpoint, ISaslAuthenticationProvider auth, Dictionary`2 nodeInfo) at Couchbase.CouchbasePool.InitVBucket(ClusterConfig config, ISaslAuthenticationProvider auth) at Couchbase.CouchbasePool.ReconfigurePool(ClusterConfig config)

message: An asynchronous operation cannot be started at this time. Asynchronous operations may only be started within an asynchronous handler or module or during certain events in the Page lifecycle. If this exception occurred while executing a Page, ensure that the Page is marked <%@ Page Async="true" %>.
- See more at: http://www.couchbase.com/communities/q-and-a/getting-intermittent-error-failed-initialize-pool#sthash.5M7ARZk9.dpuf




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

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

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

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


 Description   
http://shfb.codeplex.com/




Detailed logging information (NCBC-270)

[NCBC-225] Docs: Recommendations for which logging level to be set during testing/staging/production and examples of messages at each level Created: 07/Feb/13  Updated: 02/Jun/14

Status: In Progress
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.2.1
Fix Version/s: backlog-1.0

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


 Description   
Customer read http://www.couchbase.com/docs/couchbase-sdk-net-1.1/couchbase-sdk-net-logging.html, but still not clear on what level we recommend to get meaningful output from, and examples of what log messages that would see under certain situations.




[NCBC-221] Docs: working with multiple buckets in the .NET client Created: 05/Feb/13  Updated: 13/Jan/14

Status: In Progress
Project: Couchbase .NET client library
Component/s: docs
Affects Version/s: 1.2.0
Fix Version/s: backlog-1.0

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


 Description   
Apologies if it's already in there, it wasn't particularly obvious to find.

Can we have a section of documentation on working with multiple buckets from within the .NET client when configured in the app.config?

 Comments   
Comment by John Zablocki (Inactive) [ 23/May/13 ]
Adding to config section.




[NCBC-219] Write the .NET/Windows Getting Started Section for the Essentials Guides Created: 04/Feb/13  Updated: 13/Jan/14

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

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


 Description   
Write the .NET/Windows Getting Started section of the Essentials Guide

Needs to cover:

Basic Setup of the .NET environment
Adding the .NET Client library to a project
Writing your first (small) app using Couchbase and .NET

Submissions should be to MC, either through the couchbase/docs repo, or direct to MC in whatever format suits. Must include both the text and images.




[NCBC-215] BinaryOperation failues should include message Created: 31/Jan/13  Updated: 30/Jan/14

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

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


 Description   
When the client is unable to process the response from the server, there should be some notification, probably via BinaryOperationResult.Message

 Comments   
Comment by Jeff Morris [ 03/Oct/13 ]
This may be fixed by http://review.couchbase.org/29175 (NCBC-301). Need to confirm.




[NCBC-214] Docs don't mention InnerResult Created: 30/Jan/13  Updated: 13/Jan/14

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

Type: Improvement Priority: Major
Reporter: Tim Smith (Inactive) Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-operation-results.html


 Description   
The docs page on Working with Operation Results does not describe the InnerResult member at all. No mention of when it will be set, what it should contain, or how to display it.

My understanding is that this member may be important for understanding why something has failed. I'm not sure how to describe it or use it best, though, so I think this needs some clarification from SDK team.

 Comments   
Comment by John Zablocki (Inactive) [ 30/Jan/13 ]
Recent updates have made this property obsolete. I need to work on a plan for removal/obsolescence.




[NCBC-204] JSON extension methods not listed in API references Created: 15/Jan/13  Updated: 13/Jan/14

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

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


 Description   
Couldn't find docs around the JSON extension methods listed here:
https://www.couchbase.com/docs/couchbase-sdk-net-1.2/jsonextensions.html

 Comments   
Comment by John Zablocki (Inactive) [ 15/Jan/13 ]
Are you asking for these methods to be included in the API methods along with ExecuteStore, ExecuteGet, etc? Extension methods technically aren't API methods and aren't part of the ICouchbaseClient interface.
Comment by Perry Krug [ 15/Jan/13 ]
Yes, that was what I was asking for. I'm not sure I understand why there are so many different methods for store/get, but since we are recommending customers to store their data as JSON I would assume that these are "first class citizens" and should be documented along with the other methods we support...no?
Comment by John Zablocki (Inactive) [ 15/Jan/13 ]
The JSON extension methods are "opinionated" in that they force you to use JSON.NET for serialization and the default serializer settings that I've included. I don't know that we should recommend these extensions as the "best" option, but rather "an" option. If a user is content to rely on these basic methods, then they would be sufficient. However, there are many users who will prefer other JSON serializers or other class-to-document mapping rules. So rather than attempt to address all JSON concerns with the API, these are convenience methods, which is why they're extension methods. Extension methods in .NET allow a user to treat method like a class method, even though it's not defined in an object's interface.
Comment by Perry Krug [ 15/Jan/13 ]
Thanks for the clarification John.

Can we provide guidance or examples on how to use JSON more generically?
Comment by John Zablocki (Inactive) [ 15/Jan/13 ]
I think that's reasonable. When I update the jsonextensions.html page, I'll try to add "Here's what to do if you don't want to use JSON extensions..."
Comment by Perry Krug [ 15/Jan/13 ]
Thanks John, and will that then link to a piece of our "formal" documentation and API reference?
Comment by John Zablocki (Inactive) [ 17/May/13 ]
http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-json.html
Comment by Perry Krug [ 18/May/13 ]
Just as a quick re-open...could we link this from the home page of /develop/net/current as well?




Detailed logging information (NCBC-270)

[NCBC-183] Docs should use Execute* methods with best practice error handling and logging in all examples Created: 14/Dec/12  Updated: 02/Jun/14

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

Type: Technical task Priority: Major
Reporter: Jeff Morris Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: 24h
Time Spent: Not Specified
Original Estimate: 24h
Environment: http://www.couchbase.com/docs/couchbase-sdk-net-1.2/crud.html


 Description   
While proper error handling may be application-specific (some apps may be fine treating any error as "not found", while others need to handle those as very distinct cases, for example), I think the documentation the docs provide, and especially the tutorials and examples that people are likely to copy from, should perform explicit and thorough error handling and logging. Docs should make it easy for people to do it the right way.

The current .NET docs have an OK example in the ASP.NET tutorial, where at least the return value is checked and exceptions are rethrown. So that's a good start, although there's no evidence of testing result.Success (which could be false, even if result.Exception is null). There's no mention, too, of what happens higher up when the result code is returned, and no logging of errors that folks can cut and paste.

http://www.couchbase.com/docs/couchbase-sdk-net-1.2/brewerycrud.html

One method uses this:
    return result.StatusCode.HasValue ? result.StatusCode.Value : 0;

While the others just return result.StatusCode.Value with no test. Why is that? Where is that documented?


Then this example uses the non-Execute versions which don't allow for proper error handling. That may be OK in a very basic tutorial, but there should be a very clear and explicit pointer anywhere these are used that goes to a "Error handling with the .NET client" page that details why you shouldn't use those in most production code, and that you'll have a very hard time writing correct code unless you use the Execute* methods, and that also provides succinct and complete example for cut-and-pastability of correct error handling.

Even so, I'd prefer that the basic "hello world" tutorial use Execute* methods in the first place, so people who only skim the docs only see the correct way to do things.

http://www.couchbase.com/docs/couchbase-sdk-net-1.2/crud.html


 Comments   
Comment by Matt Ingenthron [ 17/May/13 ]
This is probably not something we want to do as written. We want the simple approach to be, well, simple. Future API will hopefully make this better.




[NCBC-175] Authenticated view tests should use app.config Created: 07/Dec/12  Updated: 13/Jan/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 1.2 Beta-3, 1.2.0
Fix Version/s: backlog-1.0

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





[NCBC-162] Handle "no active vbucket" view failure Created: 23/Nov/12  Updated: 07/Feb/14

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

Type: Bug Priority: Major
Reporter: Mark Nunberg Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Enyim master (rev: 6590b2643c62059e6f2418ccc5bea8c58326dfbc <- master at time of writing)
Couchbase master (rev: e3de5459bfc0b5efd1eb906a99e903990a3fc2ce <- master at time of writing)
Server 1941


 Description   
Presumably the client should try the view on another node..

In general we should have a unified exception class for view errors the client can understand.. InvalidOperationException is not very helpful or descriptive (nor is it very catchable.. though it was probably initially placed as a stub)..

[INFO 76.59 cbsdk.scenario failover.py:149] Ramp for 5 seconds..
[INFO 81.60 cbsdk.scenario failover.py:157] No service specified..
[ACTION 81.60 cbsdk.scenario failover.py:160] Failing over nodes [ip:10.3.121.207 ssh_username:root]
[ACTION 81.60 cbsdk.cluster.cluster cluster.py:695] Failing over node ip:10.3.121.207 ssh_username:root
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Requested suppression of exception dialog box..
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Unhandled Exception System.InvalidOperationException Server returned Found: Moved Temporarily, {"error":"no_active_vbuckets","reason":"Cannot execute view query since the node has no active vbuckets"} at Couchbase.HammockHttpClient.HammockResponseWrapper.ExecuteWith(RestClient client) in \\vboxsrv\src\couchbase-net-client\src\Couchbase\HammockHttpClient.cs:line 143
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at Couchbase.HammockHttpClient.HammockRequestWrapper.Couchbase.IHttpRequest.GetResponse() in \\vboxsrv\src\couchbase-net-client\src\Couchbase\HammockHttpClient.cs:line 112
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.GetResponse(IDictionary`2 viewParams) in \\vboxsrv\src\couchbase-net-client\src\Couchbase\CouchbaseViewHandler.cs:line 144
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.<TransformResults>d__0`1.MoveNext() in \\vboxsrv\src\couchbase-net-client\src\Couchbase\CouchbaseViewHandler.cs:line 38
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at Sdkd.Views.ViewCommand.Run() in \\vboxsrv\src\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in \\vboxsrv\src\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.Run() in \\vboxsrv\src\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart()
[SDKD(INFO) 81.78 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Requested suppression of exception dialog box..
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Requested suppression of exception dialog box..
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Requested suppression of exception dialog box..
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Unhandled Exception System.InvalidOperationException Server returned Found: Moved Temporarily, {"error":"no_active_vbuckets","reason":"Cannot execute view query since the node has no active vbuckets"} at Couchbase.HammockHttpClient.HammockResponseWrapper.ExecuteWith(RestClient client) in \\vboxsrv\src\couchbase-net-client\src\Couchbase\HammockHttpClient.cs:line 143
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.HammockHttpClient.HammockRequestWrapper.Couchbase.IHttpRequest.GetResponse() in \\vboxsrv\src\couchbase-net-client\src\Couchbase\HammockHttpClient.cs:line 112
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.GetResponse(IDictionary`2 viewParams) in \\vboxsrv\src\couchbase-net-client\src\Couchbase\CouchbaseViewHandler.cs:line 144
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.<TransformResults>d__0`1.MoveNext() in \\vboxsrv\src\couchbase-net-client\src\Couchbase\CouchbaseViewHandler.cs:line 38
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Sdkd.Views.ViewCommand.Run() in \\vboxsrv\src\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in \\vboxsrv\src\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.Run() in \\vboxsrv\src\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Will now exit..
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Unhandled Exception System.InvalidOperationException Server returned Found: Moved Temporarily, {"error":"no_active_vbuckets","reason":"Cannot execute view query since the node has no active vbuckets"} at Couchbase.HammockHttpClient.HammockResponseWrapper.ExecuteWith(RestClient client)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.HammockHttpClient.HammockRequestWrapper.Couchbase.IHttpRequest.GetResponse()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.GetResponse(IDictionary`2 viewParams)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.<TransformResults>d__0`1.MoveNext()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Sdkd.Views.ViewCommand.Run()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.dispatchCommand(Request req)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.Run()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Will now exit..
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Unhandled Exception System.InvalidOperationException Server returned Found: Moved Temporarily, {"error":"no_active_vbuckets","reason":"Cannot execute view query since the node has no active vbuckets"} at Couchbase.HammockHttpClient.HammockResponseWrapper.ExecuteWith(RestClient client)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.HammockHttpClient.HammockRequestWrapper.Couchbase.IHttpRequest.GetResponse()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.GetResponse(IDictionary`2 viewParams)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Couchbase.CouchbaseViewHandler.<TransformResults>d__0`1.MoveNext()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at Sdkd.Views.ViewCommand.Run()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.dispatchCommand(Request req)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at SdkdConsole.Daemon.Handle.Run()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] at System.Threading.ThreadHelper.ThreadStart()
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Will now exit..
[SDKD(INFO) 81.79 cbsdk.sdkd.remote remote.py:263] [Sdkd.Main|Fatal] Will now exit..





[NCBC-260] Improve discussion around using store versus executestore Created: 08/May/13  Updated: 07/Feb/14

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

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


 Description   
From a user:

Another thing I have seen is using set and exeuteset method usage. When in samples we are using set, it is not very clear that it might fail due to memory limitation and instead of using set we should use executeset and lookout for result and if it is fail due to memory issue than we should try again in few millisecond so couchbase do memory clean-up in mean time for new data.
 

 Comments   
Comment by Jeff Morris [ 30/Jan/14 ]
I think these appendix notes satisfy this request? http://docs.couchbase.com/couchbase-sdk-net-1.3/#appendix-working-with-operation-results
Comment by Perry Krug [ 31/Jan/14 ]
That appendix is good, but I would say that our own examples in the documentation should show the "best practices" and they currently do not use the execute* operations. Can we get a review of the examples and help guide users who are doing copy-paste in the right direction?
Comment by Jeff Morris [ 31/Jan/14 ]
Ok, I am going to push this to 1.3.3 then and include subtasks for a review of current examples and "best practices" then.




[NCBC-273] Better document the DevelpomentModeNameTransformer Created: 04/Jun/13  Updated: 13/Jan/14

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

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


 Description   
In discussion with a user, there was some confusion about development mode views. The SDK docs should mention the DevelpomentModeNameTransformer and refer to the server manual section on development and production views.

 Comments   
Comment by John Zablocki (Inactive) [ 17/Jun/13 ]
See http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-configuration.html. The transformers are listed here (with config sample).




[NCBC-258] Improvement needed around documentation of using singleton client Created: 07/May/13  Updated: 07/Feb/14

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

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


 Description   
This has been coming up more and more lately. Apparently customers are not seeing or understanding the need for using a singleton client, even in their very basic testing.

Additionally, all of the tutorial and API examples in the documentation show the creation of a client for every operation and so tend to reinforce the bad habits.

Can we make an effort around identifying and improving the visibility of this very painful issue?

 Comments   
Comment by John Zablocki (Inactive) [ 07/May/13 ]
See "Instantiating the Client" - http://www.couchbase.com/develop/net/current

See http://www.couchbase.com/docs/couchbase-sdk-net-1.2/stage3.html in the Tutorial.

I think that's pretty clear, no?
Comment by Perry Krug [ 07/May/13 ]
Yes, I've seen both of those...but users are still missing it with wild frequency which is causing support cases to be logged and disruption to the sales process (not to mention the unknown impact to users who don't tell us they're having problems) so I'm asking for creative ways to make it a bigger deal. Even making the text on http://www.couchbase.com/develop/net/current into an explicit "note" would help call attention to it.

What about a ".NET best practices" page? Or "troubleshooting common performance issues with .NET"?
Comment by Perry Krug [ 08/May/13 ]
John, the customer pointed me to this page which does seem to show a client being created more often that we would normally recommend: http://www.couchbase.com/docs/couchbase-sdk-net-1.2/jsonextensions.html. I presume there are other places though I haven't looked through.
Comment by John Zablocki (Inactive) [ 08/May/13 ]
This example is meant to be a standalone, run once console app. So it doesn't actually create the client more than we would recommend. This example is a highly contrived "Hello, World" type of app. So I don't think it would make sense to include another singleton layer, when the client is only created once during the life of the app's execution. I could see how if that's the only code one read, it would not fully detail the proper usage. The right answer might be to implement a layer of abstraction over the client creation, via a factory or something similar...
Comment by Perry Krug [ 08/May/13 ]
That's fair enough John. Maybe it's enough to make a bold note on that page to say "you should create a singleton"
Comment by John Zablocki (Inactive) [ 24/May/13 ]
Deferring this for 1.2.8, to figure out what the best way to address client creation docs for trivial samples.




[NCBC-252] Docs/Library: Unlock after getl Created: 17/Apr/13  Updated: 13/Jan/14

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

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


 Description   
Does the .NET client support an unlock? If not, will we have it? If it does, can we document it?

 Comments   
Comment by John Zablocki (Inactive) [ 08/May/13 ]
Seems to be a problem with the docs - http://www.couchbase.com/docs/couchbase-sdk-net-1.2/api-reference-retrieve.html. I'll investigate.




[NCBC-235] Provide more detail on "Unable to locate node" errors Created: 04/Mar/13  Updated: 20/Aug/14

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

Type: Improvement Priority: Major
Reporter: John Zablocki (Inactive) Assignee: Jeff Morris
Resolution: Unresolved Votes: 5
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates to

 Comments   
Comment by Tim Smith (Inactive) [ 12/Mar/13 ]
For clarity, the desired change is in the library itself, to provide info in the error message about what host lost the connection, whether there was a corrupt cluster map or just couldn't connect to any of the hosts, etc. Currently the error provides no insight into where the problem may lie. The developer can assume there may be some networking problem, but no pointer about which node is to blame, etc.
Comment by Jeff Morris [ 20/Aug/14 ]
Hi Morrie -

The "unable to locate node" message happens when something outside of the client (usually network) temporarily drops the clients connection. Another cause is when an application running on the client blocks the streaming http connection - Fiddler (http://www.telerik.com/fiddler) is a common culprit on windows.

Another common cause is when the hostname in the configuration is wrong or the bucket doesn't exist (if I remember correctly).

-Jeff




[NCBC-153] InvalidOperationException in views during server restart Created: 12/Nov/12  Updated: 13/Jan/14

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

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


 Description   
'service couchbase-server restart' on the (only) node.

While it's easy to understand the reason for these errors, they should be wrapped a bit nicer. This is with doing GetItem() on each view request (and running them all inside a tight loop).

[Couchbase.MessageStreamListener|Warn] Current node 'http://10.0.0.99:8091/pools/default/bucketsStreaming/default?bucket
_uuid=e0a080ddc9d74fa3adbcbb9385f2ceae' has failed.
[Couchbase.MessageStreamListener|Warn] Could not found a working node.
[Couchbase.MessageStreamListener|Warn] All nodes are dead, sleeping for a while.
[Enyim.Caching.Memcached.MemcachedNode|Error] System.IO.IOException: Failed to read from the socket '10.0.0.99:11210'. E
rror: ConnectionReset
   at Enyim.Caching.Memcached.PooledSocket.BasicNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in F:\couch
base-net-client\lib\EnyimMemcached\Enyim.Caching\Memcached\BasicNetworkStream.cs:line 92
   at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
   at Enyim.Caching.Memcached.PooledSocket.Read(Byte[] buffer, Int32 offset, Int32 count) in F:\couchbase-net-client\lib
\EnyimMemcached\Enyim.Caching\Memcached\PooledSocket.cs:line 222
   at Enyim.Caching.Memcached.Protocol.Binary.BinaryResponse.Read(PooledSocket socket) in F:\couchbase-net-client\lib\En
yimMemcached\Enyim.Caching\Memcached\Protocol\Binary\BinaryResponse.cs:line 57
   at Enyim.Caching.Memcached.Protocol.Binary.BinarySingleItemOperation.ReadResponse(PooledSocket socket) in F:\couchbas
e-net-client\lib\EnyimMemcached\Enyim.Caching\Memcached\Protocol\Binary\BinarySingleItemOperation.cs:line 24
   at Enyim.Caching.Memcached.Protocol.Operation.Enyim.Caching.Memcached.IOperation.ReadResponse(PooledSocket socket) in
 F:\couchbase-net-client\lib\EnyimMemcached\Enyim.Caching\Memcached\Protocol\Operation.cs:line 27
   at Enyim.Caching.Memcached.MemcachedNode.ExecuteOperation(IOperation op) in F:\couchbase-net-client\lib\EnyimMemcache
d\Enyim.Caching\Memcached\MemcachedNode.cs:line 550
[Enyim.Caching.Memcached.MemcachedNode|Error] System.IO.IOException: Failed to read from the socket '10.0.0.99:11210'. E
rror: ConnectionReset
   at Enyim.Caching.Memcached.PooledSocket.BasicNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) in F:\couch
base-net-client\lib\EnyimMemcached\Enyim.Caching\Memcached\BasicNetworkStream.cs:line 92
   at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
   at Enyim.Caching.Memcached.PooledSocket.Read(Byte[] buffer, Int32 offset, Int32 count) in F:\couchbase-net-client\lib
\EnyimMemcached\Enyim.Caching\Memcached\PooledSocket.cs:line 222
   at Enyim.Caching.Memcached.Protocol.Binary.BinaryResponse.Read(PooledSocket socket) in F:\couchbase-net-client\lib\En
yimMemcached\Enyim.Caching\Memcached\Protocol\Binary\BinaryResponse.cs:line 57
   at Enyim.Caching.Memcached.Protocol.Binary.BinarySingleItemOperation.ReadResponse(PooledSocket socket) in F:\couchbas
e-net-client\lib\EnyimMemcached\Enyim.Caching\Memcached\Protocol\Binary\BinarySingleItemOperation.cs:line 24
   at Enyim.Caching.Memcached.Protocol.Operation.Enyim.Caching.Memcached.IOperation.ReadResponse(PooledSocket socket) in
 F:\couchbase-net-client\lib\EnyimMemcached\Enyim.Caching\Memcached\Protocol\Operation.cs:line 27
   at Enyim.Caching.Memcached.MemcachedNode.ExecuteOperation(IOperation op) in F:\couchbase-net-client\lib\EnyimMemcache
d\Enyim.Caching\Memcached\MemcachedNode.cs:line 550
[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.
[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.
[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.


Unhandled Exception:Unhandled Exception: [Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dea
d node, failing.

[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.
Unhandled Exception:[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.


[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.
System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
Unhandled Exception:Unhandled Exception:[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead
 node, failing.


System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart() System.InvalidOperationException: Operation is not valid due to the cu
rrent state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart() [Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped
 to a dead node, failing.

Unhandled Exception:

[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.
Unhandled Exception:
[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.

 Unhandled Exception:System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()System.InvalidOperationException: Operation is not valid due to the cur
rent state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped
to a dead node, failing.


Unhandled Exception:
Unhandled Exception:[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.

 System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart() [Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped
 to a dead node, failing.

Unhandled Exception:System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.
Unhandled Exception:
 System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.

 Unhandled Exception:System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped
to a dead node, failing.

Unhandled Exception:

[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped to a dead node, failing.

Unhandled Exception: System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()[Couchbase.CouchbaseView|Warn] View Couchbase.CouchbaseView was mapped
to a dead node, failing.

 Unhandled Exception:
System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()Unhandled Exception:[Couchbase.CouchbaseView|Warn] View Couchbase.Couch
baseView was mapped to a dead node, failing.


System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
Unhandled Exception:System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
Unhandled Exception:System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
 Unhandled Exception:
System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart() System.InvalidOperationException: Operation is not valid due to the cu
rrent state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()System.InvalidOperationException: Operation is not valid due to the cur
rent state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Couchbase.CouchbaseViewBase`1.GetResponse() in F:\couchbase-net-client\src\Couchbase\CouchbaseViewBase.cs:line 209

   at Couchbase.CouchbaseViewBase`1.<TransformResults>d__0`1.MoveNext() in F:\couchbase-net-client\src\Couchbase\Couchba
seViewBase.cs:line 95
   at Sdkd.Views.ViewCommand.Run() in F:\sdkd-net\src\Sdkd\Views\ViewCommand.cs:line 219
   at SdkdConsole.Daemon.Handle.dispatchCommand(Request req) in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 177
   at SdkdConsole.Daemon.Handle.Run() in F:\sdkd-net\src\SdkdConsole\Daemon\Handle.cs:line 110
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, B
oolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()


 Comments   
Comment by Mark Nunberg [ 12/Nov/12 ]
Of course the code blatantly throws this exception. I would think perhaps a bit something less severe would do? Maybe a WebException with a code of 400 (standard code for client-side errors); and maybe with some kind of simple retry?




[NCBC-120] Statistics through Stats() Enyim.Caching.MemcachedClient. Created: 17/Sep/12  Updated: 13/Jan/14

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

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


 Description   


User is collecting statistics and would like to collect some of the histogram type data that is available for specific stats through cbstats timings.

Particularly: "disk_insert" and "item_alloc_sizes" with the Stats command to get data as described in 2.5 Timing Stats for link: https://github.com/membase/ep-engine/blob/master/docs/stats.org.

They would like to be able to do this through Enyim.Caching.dll as it is already used by their "Core" code so they support statistics gathering with what that interface offers and like its simplicity.

Currently the dll support memcached specific stats but not ep-engine.

Enhancment request is to expand the functionality of the stats call in Enyim.Caching





[NCBC-44] Optimize multiple set (multi-set or mset bulk update) with setq Created: 21/May/12  Updated: 13/Jan/14

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

Type: New Feature Priority: Major
Reporter: Tim Smith (Inactive) Assignee: Jeff Morris
Resolution: Unresolved Votes: 1
Labels: customer
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The Java client, and others, implement a more efficient bulk loading feature when multiple updates are sent to the cluster at one time. They use setq to send multiple requests without needing to round-trip the result after each one.

The .NET client does not implement this; it only implements a multi-get operation. The multi-set is important for efficiently loading data.

This probaby doesn't have to be Couchbase-specific, but would apply to vanilla memcached servers, too.

 Comments   
Comment by Tim Smith (Inactive) [ 21/May/12 ]
To be clear, I'm talking about the kind of optimization described here:

http://dustin.github.com/2009/09/23/spymemcached-optimizations.html

Thanks,

Tim




[NCBC-101] Provide Consistent Timeouts Created: 24/Aug/12  Updated: 13/Jan/14

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

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


 Description   
Provides the consistent level of time outs with other SDKs. Provide ability to set timeouts at: 1) connection, 2) authentication, and 3) ops level.




[NCBC-113] CouchbaseCluster RESTful wrappers should not expose WebExceptions Created: 05/Sep/12  Updated: 13/Jan/14

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

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





[NCBC-97] Stats call doesn't handle I/O error Created: 20/Aug/12  Updated: 02/Jun/14

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

Type: Bug Priority: Major
Reporter: Tim Smith (Inactive) Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Couchbase Client 1.1.6, server 1.8.0 build 55

Issue Links:
Dependency

 Description   
Repeat as follows:

- Call to MemcachedClient.Stats(type)
- This builds a StatsOperation for each node and asynchronously performs MemcachedNode.Execute(cmd)
- An I/O error occurs, so StatsOperation leaves its member "results" as null and Execute returns false to indicate an error
- MemcachedClient ignores the returned Boolean value from EndInvoke and puts a null dictionary into its own set of results
- ServerStats.GetRaw(key) dies trying to select into the missing dictionary

Plausible fix: check the status from EndInvoke and don't stick anything in the dictionary if there was an error.

 Comments   
Comment by Tim Smith (Inactive) [ 20/Aug/12 ]
Example of how it's called: mc.Stats().GetRaw("uptime"); result is NullReferenceException....
Comment by Jeff Morris [ 19/Mar/14 ]
Hi Abhishek -

We have a release coming up and try to work this into it. Same for the other ticket they opened 2 years(?) or so ago.

-Jeff




[NCBC-13] generating shippable artifacts Created: 12/Jan/12  Updated: 07/Feb/14

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

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


 Comments   
Comment by Jeff Morris [ 29/Oct/13 ]
Matt -

Can you provide more detailed expectations regarding what exactly should be delivered for this ticket?

Thanks,

Jeff
Comment by Matt Ingenthron [ 04/Dec/13 ]
(replied via email long ago, just copying the comment here)

This was meant to mean that we have CI generating shippable artifacts. I still think this should be done, but I'll leave it to your judgement.
 
I know it's less important with something like .Net versus say C code, but toolchain matters. Meaning, there can be subtle differences based on versions of the software that builds the artifacts we ship. We don't want to accidentally have your product change because a patch was applied, for instance.
 
We should have a documented, change-controlled toolchain and use it to generate shippable artifacts under CI.
 




[NCBC-4] default logging on Enyim should include INFO level logging on connections being dropped Created: 03/Aug/11  Updated: 10/Mar/14

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

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


 Description   
Per an email discussion, at least when using the COM wrapper, if not when using .NET calls directly, there may not be logging by default about connection drops/reconnects.




[NCBC-700] Add overload for byte array values on Prepend/Append methods Created: 24/Oct/14  Updated: 24/Oct/14

Status: Open
Project: Couchbase .NET client library
Component/s: library
Affects Version/s: 2.0 Beta
Fix Version/s: 2.0.1

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





[NCBC-702] Make Release and AddRef un-callable in assemblies other than Couchbase and Couchbase.Tests Created: 25/Oct/14  Updated: 25/Oct/14

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

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





[NCBC-672] Create LoadDocument() method to be an analog to GetDocument() Created: 06/Oct/14  Updated: 13/Oct/14

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

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


 Description   
There should be an equivalent method to simply "Load" a pre-made document:

        static public IDocumentResult<T> LoadDocument<T>(this Couchbase.Core.IBucket bucket, IDocument<T> doc)
        {
            var res = bucket.GetDocument<T>(doc.Id);
            doc.Value = res.Value;
            doc.Cas = res.Document.Cas;
            return res;
        }

or similar




[NCBC-647] Markdown Links not Rendered Created: 18/Sep/14  Updated: 18/Sep/14

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

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


 Description   
There are some links not being rendered correctly because of missing text between the brackets in the markdown.

Three in configuring-logging.markdown:

[](https://github.com/couchbase/couchbase-net-client). If you use these Visual
[](http://logging.apache.org/log4net/release/manual/configuration.html).
See [](http://nlog-project.org/wiki/Configuration_file) for more NLog

And one in packages-for-the.net-client-library.markdown (though I can't see this section in the rendered docs):
[](https://www.couchbase.com/develop/net/current/). The download package






[NCBC-621] IRI Parsing error when bootstrapping on mono Created: 05/Sep/14  Updated: 01/Oct/14

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

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

Issue Links:
Relates to
relates to NCBC-577 SDK 1.3.8 doesn't support uuid with b... Closed

 Description   
Hey Jeff,

I tried the 1.3.9 one on mono, but there appears to be a weird issue. I use the 4.5 compat mode with 1.3.9, but also tried 4.0. Anyways, it seems to bootstrap and doesn't complain in general, but it fails when working on the URI extensions.

Maybe this is something easy to fix or we just dont support mono here? I've attached the logs.



 Comments   
Comment by Michael Nitschinger [ 05/Sep/14 ]
Last login: Fri Sep 5 11:10:52 on ttys001
clear; cd "/Users/michaelnitschinger/dotnet/cbworld/cbworld/cbworld/bin/Debug"; export PKG_CONFIG_PATH="/Library/Frameworks/Mono.framework/Versions/3.8.0/share/pkgconfig:/Library/Frameworks/Mono.framework/Versions/3.8.0/lib/pkgconfig"; export PKG_CONFIG_LIBDIR=""; export PATH="/Applications/Xamarin Studio.app/Contents/MacOS:/usr/bin:/bin:/usr/sbin:/sbin"; export MONO_GAC_PREFIX="/Applications/Xamarin Studio.app/Contents/MacOS"; export XBUILD_FRAMEWORK_FOLDERS_PATH=""; "/Library/Frameworks/Mono.framework/Versions/3.8.0/bin/mono" --debug "/Users/michaelnitschinger/dotnet/cbworld/cbworld/cbworld/bin/Debug/cbworld.exe" ; echo; read -p 'Press any key to continue...' -n1; exit
┌─[michael@daschlbase]─[~]
└──╼ clear; cd "/Users/michaelnitschinger/dotnet/cbworld/cbworld/cbworld/bin/Debug"; export PKG_CONFIG_PATH="/Library/Frameworks/Mono.framework/Versions/3.8.0/share/pkgconfig:/Library/Frameworks/Mono.framework/Versions/3.8.0/lib/pkgconfig"; export PKG_CONFIG_LIBDIR=""; export PATH="/Applications/Xamarin Studio.app/Contents/MacOS:/usr/bin:/bin:/usr/sbin:/sbin"; export MONO_GAC_PREFIX="/Applications/Xamarin Studio.app/Contents/MacOS"; export XBUILD_FRAMEWORK_FOLDERS_PATH=""; "/Library/Frameworks/Mono.framework/Versions/3.8.0/bin/mono" --debug "/Users/michaelnitschinger/dotnet/cbworld/cbworld/cbworld/bin/Debug/cbworld.exe" ; echo; read -p 'Press any key to continue...' -n1; exit




DEBUG [1] (:0) - Initializing Couchbase.CouchbasePool
 WARN [1] (:0) - Creating new client. CID: c5e9ddd2-b6bd-4d47-b72b-8e4bc486f26e CouchbaseClient
 WARN [1] (:0) - Starting Couchbase.CouchbasePool
 WARN [1] (:0) - Starting the listener. Queue=True
 WARN [Threadpool worker] (:0) - Started working.
 WARN [Threadpool worker] (:0) - Looking for the first working node.
DEBUG [Threadpool worker] (:0) - Found config for bucket default.
 WARN [Threadpool worker] (:0) - Resolved pool url http://127.0.0.1:8091/pools to http://127.0.0.1:8091/pools/default/bucketsStreaming/default?bucket_uuid=56d89e666ebf2e54ccb952e114c79f96
 WARN [Threadpool worker] (:0) - Start receiving messages.
 INFO [Threadpool worker] (:0) - Received new configuration.
 INFO [Threadpool worker] (:0) - Has vbucket. Server count: 1
DEBUG [Threadpool worker] (:0) - Found address 127.0.0.1 for 127.0.0.1
DEBUG [Threadpool worker] (:0) - Using address 127.0.0.1 for 127.0.0.1
 WARN [Threadpool worker] (:0) - Creating node Couchbase.CouchbasePool
ERROR [Threadpool worker] (:0) - Failed to initialize the pool.
System.MissingFieldException: Cannot find variable s_IriParsing.
  at System.MonoType.InvokeMember (System.String name, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object target, System.Object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParameters) [0x00549] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/corlib/System/MonoType.cs:518
  at System.Type.InvokeMember (System.String name, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object target, System.Object[] args) [0x00000] in /Volumes/build-root-ramdisk/mono-3.8.0/mcs/class/corlib/System/Type.cs:1411
  at Couchbase.Extensions.UriExtensions.EnableIriParsing (System.Uri uri, Boolean enable) [0x00000] in <filename unknown>:0
  at Couchbase.CouchbasePool.CreateNode (System.Net.IPEndPoint endpoint, ISaslAuthenticationProvider auth, System.Collections.Generic.Dictionary`2 nodeInfo) [0x00000] in <filename unknown>:0
  at Couchbase.CouchbasePool.InitVBucket (Couchbase.Configuration.ClusterConfig config, ISaslAuthenticationProvider auth) [0x00000] in <filename unknown>:0
  at Couchbase.CouchbasePool.ReconfigurePool (Couchbase.Configuration.ClusterConfig config) [0x00000] in <filename unknown>:0
 WARN [Threadpool worker] (:0) - Processing message: {"name":"default","bucketType":"membase","authType":"sasl","saslPassword":"","proxyPort":0,"replicaIndex":false,"uri":"/pools/default/buckets/default?bucket_uuid=56d89e666ebf2e54ccb952e114c79f96","streamingUri":"/pools/default/bucketsStreaming/default?bucket_uuid=56d89e666ebf2e54ccb952e114c79f96","localRandomKeyUri":"/pools/default/buckets/default/localRandomKey","controllers":{"flush":"/pools/default/buckets/default/controller/doFlush","compactAll":"/pools/default/buckets/default/controller/compactBucket","compactDB":"/pools/default/buckets/default/controller/compactDatabases","purgeDeletes":"/pools/default/buckets/default/controller/unsafePurgeBucket","startRecovery":"/pools/default/buckets/default/controller/startRecovery"},"nodes":[{"couchApiBaseHTTPS":"https://127.0.0.1:18092/default%2B56d89e666ebf2e54ccb952e114c79f96","couchApiBase":"http://127.0.0.1:8092/default%2B56d89e666ebf2e54ccb952e114c79f96","replication":1,"clusterMembership":"active","recoveryType":"none","status":"healthy","otpNode":"ns_1@127.0.0.1","thisNode":true,"hostname":"127.0.0.1:8091","clusterCompatibility":196608,"version":"3.0.0-1118-rel-enterprise","os":"x86_64-apple-darwin10.8.0","ports":{"sslProxy":11214,"httpsMgmt":18091,"httpsCAPI":18092,"proxy":11211,"direct":11210}}],"stats":{"uri":"/pools/default/buckets/default/stats","directoryURI":"/pools/default/buckets/default/statsDirectory","nodeStatsListURI":"/pools/default/buckets/default/nodes"},"ddocs":{"uri":"/pools/default/buckets/default/ddocs"},"nodeLocator":"vbucket","fastWarmupSettings":false,"autoCompactionSettings":false,"uuid":"56d89e666ebf2e54ccb952e114c79f96","vBucketServerMap":{"hashAlgorithm":"CRC","numReplicas":0,"serverList":["127.0.0.1:11210"],"vBucketMap":[[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0],[0]]},"bucketCapabilitiesVer":"","bucketCapabilities":["cbhello","touch","couchapi","cccp"]}
 INFO [1] (:0) - CID Config: c5e9ddd2-b6bd-4d47-b72b-8e4bc486f26e {"Servers":{"Bucket":"default","BucketPassword":"","Username":"","Password":"","Urls":[{"Uri":"http://127.0.0.1:8091/pools"}],"Port":1,"RetryCount":0,"RetryTimeout":"00:00:02","ObserveTimeout":"00:01:00","HttpRequestTimeout":"00:01:00","VBucketRetryCount":2,"ViewRetryCount":2},"SocketPool":{"MinPoolSize":10,"MaxPoolSize":20,"ConnectionTimeout":"00:00:10","QueueTimeout":"00:00:02.5000000","ReceiveTimeout":"00:00:10","DeadTimeout":"00:00:02","FailurePolicyFactory":{"Type":null,"Factory":null,"Content":{"Content":null}},"LingerTime":"00:00:10","LingerEnabled":false},"HeartbeatMonitor":{"Uri":"","Interval":10000,"Enabled":true},"HttpClient":{"InitializeConnection":true,"Timeout":"00:01:15"},"NodeLocator":{"Type":null,"Factory":null,"Content":{"Content":null}},"KeyTransformer":{"Type":null,"Factory":null,"Content":{"Content":null}},"Transcoder":{"Type":null,"Factory":null,"Content":{"Content":null}},"PerformanceMonitorFactory":{"Factory":null},"DocumentNameTransformer":{"Type":"Couchbase.Configuration.ProductionModeNameTransformer, Couchbase, Version=1.3.9.0, Culture=neutral, PublicKeyToken=05e9c6b5a9ec94c2","Factory":null,"Content":{"Content":null}},"HttpClientFactory":{"Type":"Couchbase.DefaultHttpClientFactory, Couchbase, Version=1.3.9.0, Culture=neutral, PublicKeyToken=05e9c6b5a9ec94c2","Factory":null,"Content":{"Content":null}},"VBucketRetryCount":2,"ViewRetryCount":2}
finding
storingFalse

Press any key to continue...
Comment by Michael Nitschinger [ 05/Sep/14 ]
Code I'm using is:

using System;
using Couchbase;
using Enyim.Caching.Memcached;
using Newtonsoft.Json;

namespace cbworld
{
class MainClass
{
public static void Main (string[] args)
{
log4net.Config.XmlConfigurator.Configure();
var client = new CouchbaseClient ();
Console.WriteLine ("finding" + client.Get("key"));
var result = client.Store (StoreMode.Set, "key", "Hello World");
Console.WriteLine ("storing" + result);
}
}

}
Comment by Jeff Morris [ 05/Sep/14 ]
This is a difference in the System.URI class between .NET and Mono.
Comment by Don Pinto [ 05/Sep/14 ]
I don't think we even test on Mono today.
Downgrading this to minor.

Thanks,
Comment by Patrick Varley [ 01/Oct/14 ]
Next version of mono will have it.
http://mono.1490590.n4.nabble.com/Net-program-cannot-find-mono-variable-s-IriParsing-td4663873.html
Comment by Jeff Morris [ 01/Oct/14 ]
I pushed a patch that will handle the exception that is raised if IriParsing is not supported: http://review.couchbase.org/#/c/41801
Comment by Patrick Varley [ 01/Oct/14 ]
Stunning!
Comment by Jeff Morris [ 01/Oct/14 ]
A hint of sarcasm? Anyhow, depending upon how mono handles special characters in Uri's, this may or not work - but at least it's not failing at the patch.




[NCBC-625] View do not work with dynamic type or strings on Mono Created: 06/Sep/14  Updated: 24/Sep/14

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

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


 Description   
From Michaels review:

"I think because of my own fault I was not able to get views to work because there it was complaining about the dynamic part which needs a dll that is not included, and when I did a .Query<string> Newtonsoft complained it could not convert it to a string. But don’t mind on that one, I’m sure it works good with VS of course."




[NCBC-580] not able to openBucket after certificate uninstalled/regenerated when ClientConfiguration uses SSL, BucketConfig doesn't Created: 12/Aug/14  Updated: 14/Aug/14

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

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

Attachments: Text File log.txt    

 Description   
test
https://github.com/couchbase/sdkd-net/blob/client-2.0/src/FTests/SSLFeatures.cs#L342
https://github.com/couchbase/sdkd-net/blob/client-2.0/src/FTests/SSLFeatures.cs#L364

code

 ClientConfiguration extConfig = new ClientConfiguration
           {
               UseSsl = true,
               Servers = new List<Uri>
            {
                new Uri("http://testenv:8091/pools")
            }
           };

extConfig.BucketConfigs[bucketName].UseSsl = false;


[Test]
        public void Test_NotSSL_reOpenBucket_When_Cert_Removed()
        {
            installCert(certPath);
            using (var cluster = new CouchbaseCluster(extConfig))
            {
                using (var bucket = cluster.OpenBucket(bucketName))
                {

                    var result = bucket.Upsert(Path.GetRandomFileName(), Path.GetRandomFileName());
                    Assert.IsTrue(result.Success);
                    cluster.CloseBucket(bucket);
                }
                removeCert(certPath);

                var bucketRefreshed = cluster.OpenBucket(bucketName);//FAILED
                bucketRefreshed.Upsert(Path.GetRandomFileName(), Path.GetRandomFileName());
            }
        }


FTests.SSLFeatures.Test_NotSSL_reOpenBucket_When_Cert_Removed:
Couchbase.Configuration.ConfigException : Could not bootstrap default. See log for details.
at Couchbase.Core.ClusterManager.CreateBucket(String bucketName, String password) at d:\couchbase_src\couchbase-net-client\Src\Couchbase\Core\ClusterManager.cs:line 206
at Couchbase.Core.ClusterManager.CreateBucket(String bucketName) в d:\couchbase_src\couchbase-net-client\Src\Couchbase\Core\ClusterManager.cs:line 137
at Couchbase.CouchbaseCluster.OpenBucket(String bucketname) в d:\couchbase_src\couchbase-net-client\Src\Couchbase\CouchbaseCluster.cs:line 103
at FTests.SSLFeatures.Test_NotSSL_reOpenBucket_When_Cert_Removed() в d:\couchbase_src\sdkd-net\src\FTests\SSLFeatures.cs:line 341


so, we try to openBucket when CouchbaseCluster is still "active" but initial certificate doesn't exist anymore


 Comments   
Comment by Jeff Morris [ 12/Aug/14 ]
>>See log for details.

No logs, so hard to say what the problem is here.
Comment by Andrei Baranouski [ 13/Aug/14 ]
client logs
Comment by Jeff Morris [ 13/Aug/14 ]
I can't read the actual reason why the ssl connection is failing, because of some encoding issue (probably because your localization settings?):

2014-08-13 11:29:46,830 [TestRunnerThread] WARN Couchbase.IO.ConnectionBase - Starting SSL encryption on 10.3.121.134
2014-08-13 11:29:47,385 [TestRunnerThread] ERROR Couchbase.IO.ConnectionBase - System.Security.Authentication.AuthenticationException: ��������� ���������� �������������� �������� ����������� �������� �����������.
   � System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)
   � System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)

The problem could be somewhere with your installation/reinstallation of the client certificate. The client itself cannot make the connection with the newly installed cert.

As a feature installing/removing SSL certificates isn't something we have talked about supporting from the client. In most cases the cert would be installed and managed by itops outside of the application layer. That being said, it's an important test and will help automation later on - I do think we should lower the priority though to perhapa minor?
Comment by Andrei Baranouski [ 13/Aug/14 ]
I agree that it is a rare negative case and we can set lower priority

"As a feature installing/removing SSL certificates isn't something we have talked about supporting from the client" I remove/reinstall/regenerate certificate inside the tests to check client behaviour for different ssl feature scenarios we described in https://docs.google.com/document/d/1J3vWQnYxCtbD4WJbcSP4OqYiePAlUdCCKMSj7jtbzxs/edit#heading=h.o6lvbcwhi5gc

i've uploaded new client logs, the error says: System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the results of authentication.
Comment by Don Pinto [ 13/Aug/14 ]
For beta 2 might be OK, but for GA we should address this issue - I would see this scenario hit when you do cert refreshes or if there is a breach and you need to roll out a new certificate.

In any case, we might need to document this as well if there are any particular cases users should think about.

Thanks
Comment by Jeff Morris [ 13/Aug/14 ]
Agreed, but perhaps we add the functionality as a feature to the Management API?




[NCBC-565] Remove "verbose" logging and tracing Created: 27/Jul/14  Updated: 09/Oct/14

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

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


 Description   
This ticket is to ensure that the large number of trace/debug statements are removed before GA is released. While the verbosity make debugging easier, it may be a bit too much for a release candidate, thus this ticket is intended to ensure that extraneous trace/debug/log messages are removed or at least reviewed.




[NCBC-466] Provide a way of creating a bucket, when requested, if it doesn't exist (?) Created: 07/May/14  Updated: 29/Aug/14

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

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


 Description   
This more to jot down a thought: mongo is easy to get up and running because (one reason) if a collection doesn't exist, the SDK creates one for you when it's requested. There are obvious flaws in this model, but it may be worthwhile to provide and overload to OpenBucket which takes a boolean specifying whether or not to create the bucket if it doesn't exist: OpenBucket(bucketName, createIfDoesNotExist);




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

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

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


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


Ethier way the minpoolsize line is not formatted correctly.




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

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

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


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




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

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

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





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

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

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


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

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




[NCBC-223] Check for SetTcpKeepAlive at runtime for Mono support Created: 05/Feb/13  Updated: 07/Feb/14

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

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


 Description   
Mono doesn't support this method on the ServicePointManager.




[NCBC-207] Could not find the pool '...' at http://host:8091/pools : password-less buckets make the other buckets unavailable Created: 17/Jan/13  Updated: 13/Jan/14

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

Type: Bug Priority: Minor
Reporter: guillaume.pitel Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Mono 2.10.8.1 (Debian 2.10.8.1-1ubuntu2.2) Ubuntu 12.04 / Couchbase server 2.0


 Description   
Hi, we stumbled on a minor bug.

After importing the beer bucket for testing purpose, we had this kind of errors : (Couchbase .Net 1.2 / mono client)

2013-01-17 11:13:28 [DEBUG] 1 Couchbase.MessageStreamListener - Starting the listener. Queue=True
2013-01-17 11:13:28 [DEBUG] 11 Couchbase.MessageStreamListener - Started working.
2013-01-17 11:13:28 [DEBUG] 11 Couchbase.MessageStreamListener - Looking for the first working node.
2013-01-17 11:13:29 [WARN] 11 Couchbase.ConfigHelper - Could not find the pool 'static' at http://10.1.44.1:8091/pools
2013-01-17 11:13:29 [WARN] 11 Couchbase.MessageStreamListener - Could not resolve url http://10.1.44.1:8091/pools; trying the next in the list
2013-01-17 11:13:29 [WARN] 11 Couchbase.ConfigHelper - Could not find the pool 'static' at http://10.1.44.2:8091/pools
2013-01-17 11:13:29 [WARN] 11 Couchbase.MessageStreamListener - Could not resolve url http://10.1.44.2:8091/pools; trying the next in the list
2013-01-17 11:13:29 [WARN] 11 Couchbase.MessageStreamListener - Could not found a working node.
2013-01-17 11:13:29 [WARN] 11 Couchbase.MessageStreamListener - All nodes are dead, sleeping for a while.
2013-01-17 11:13:29 [INFO] 11 Couchbase.CouchbasePool - Received new configuration.
2013-01-17 11:13:29 [INFO] 11 Couchbase.CouchbasePool - Config is empty, all nodes are down.
2013-01-17 11:13:29 [DEBUG] 11 Couchbase.MessageStreamListener - Processing message:

It appears that if a bucket with authentication is passwordless (like the beer sample bucket at creation), the client cannot find the other pools.


 Comments   
Comment by John Zablocki (Inactive) [ 18/Jan/13 ]
Hi Guillaume,

How did this affect the client's behavior? Did operations fail? Could you describe a bit more what you were seeing?

Thanks.

-- John
Comment by guillaume.pitel [ 19/Jan/13 ]
It's the connection creation that fails, so every subsequent operation fails.
Comment by Jeff Morris [ 03/Oct/13 ]
Need to verify is still an issue.




[NCBC-202] add a keyStats feature Created: 12/Jan/13  Updated: 13/Jan/14

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

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


 Description   
At times it's useful to get information about a key through underlying "stats key <key> <vbucket>", but using just the stats command is complex because the vbucket hashing isn't exposed. One better though is a keyStats() operation that would return a map of the return for "stats key".




[NCBC-188] Provide file based caching of config for stateless .NET apps Created: 21/Dec/12  Updated: 02/Jun/14

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

Type: New Feature Priority: Minor
Reporter: John Zablocki (Inactive) Assignee: Jeff Morris
Resolution: Unresolved Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
With stateless apps, such as WCF, it's not possible to create a static client variable that is used across the lifetime of the app. An alternate approach would be to write config to a file and update it periodically instead of bootstrapping with each object creation.

 Comments   
Comment by Jeff Morris [ 12/Dec/13 ]
This may be satisfied by File based config provider in 2.0 client: https://docs.google.com/document/d/1bSMt0Sj1uQtm0OYolQaJDJg4sASfoCEwU6_gjm1he8s/edit#




[NCBC-232] Fix CBSE-426 - .Net Client fails silently if there is a wrong configuration Created: 25/Feb/13  Updated: 13/Jan/14

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

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

Issue Links:
Dependency

 Description   
Fix issue CBSE-426




[NCBC-135] Client not properly handling cluster_run server Created: 03/Oct/12  Updated: 13/Jan/14

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

Type: Bug Priority: Minor
Reporter: Mark Nunberg Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Using cluster_run from branch-2.0 xml


 Description   
I can't do simple things like get/set stuff..


PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug> .\cbc-net.exe -c set -k foo -V bar -H 10.0.0.99
:8091; .\cbc-net.exe -c get -k foo -H 10.0.0.99:8091
URI: http://10.0.0.99:8091/pools
http://10.0.0.99:8091/pools
Created new client..
Arguments to ExecuteStore:
   0x00000003, 'foo', 'bar', 00:00:00, Zero, Zero
Operation Succeeded. Cas: 610018894666114
Duration was 3.07 Sec.
URI: http://10.0.0.99:8091/pools
http://10.0.0.99:8091/pools
Created new client..
Command OK
Value is bar
Cas is 610018894666114
Duration was 3.09 Sec.
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug> echo "hi" | C:\Users\Administrator\Documents\Gi
tHub\deps\bin\cbc.exe create -h 10.0.0.99 foo2
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug> # Now with the cluster_run cluster
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug> .\cbc-net.exe -c set -k foo -V bar -H 10.0.0.99
:9000; .\cbc-net.exe -c get -k foo -H 10.0.0.99:9000
URI: http://10.0.0.99:9000/pools
http://10.0.0.99:9000/pools
Created new client..
Arguments to ExecuteStore:
   0x00000003, 'foo', 'bar', 00:00:00, Zero, Zero
Initial command failed (Store operation failed, see InnerResult or StatusCode for details). Trying simple version..
.. Inner Message: Failed to execute operation
Command Failed
Code is 0
Message is Store operation failed, see InnerResult or StatusCode for details
Duration was 3.02 Sec.
URI: http://10.0.0.99:9000/pools
http://10.0.0.99:9000/pools
Created new client..
Command Failed
Code is
Message is Unable to locate node
Duration was 3.05 Sec.
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug>


## This works fine with libcouchbase:


PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug>
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug>
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug> echo "hi" | C:\Users\Administrator\Documents\Gi
tHub\deps\bin\cbc.exe create -h 10.0.0.99:9000 foo2
Stored "foo2" CAS:911342e1e62a0200
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug> C:\Users\Administrator\Documents\GitHub\deps\bi
n\cbc.exe cat -h 10.0.0.99:9000 foo2
"foo2" Size:3 Flags:0 CAS:911342e1e62a0200
hi
PS C:\Users\Administrator\Documents\GitHub\cbc-net\src\CbcNet\bin\Debug>


 Comments   
Comment by Mark Nunberg [ 03/Oct/12 ]
Currently this forces me to run tests against a remote cluster with .net. It would be nice to have the ability to run these tests locally via 'cluster_run'
Comment by Mark Nunberg [ 03/Oct/12 ]
fyi, it seems from running tcpdump that it's connecting to the rest server and also connecting to some memcached port.. but the op still fails..




[NCBC-656] Couchbase .NET SDK 1.X and 2.X cannot be used within the same project Created: 23/Sep/14  Updated: 24/Sep/14

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

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


 Description   
**It is likely that this ticket will never be resolved, but I am creating it so that it exists as a known issue**

Visual Studio blocks adding the reference because of the naming conflict of the dll; there is no resolution for this except renaming the dll to Couchbase.2.0.dll. Additionally, assuming that would work, there would likely have to be quite a bit of namespace and Type aliasing required as well.






[NCBC-578] Non Obtrusive JSON Document Deseralization Created: 11/Aug/14  Updated: 19/Aug/14

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

Type: Improvement Priority: Trivial
Reporter: bchavez Assignee: Jeff Morris
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: all


 Description   
Hi there,

There was some discussion about the 1.3x SDK not forcefully injecting the "ID" property with the object's key.

The previous discussion was briefly mentioned here:
https://www.couchbase.com/issues/browse/NCBC-564

For convenience:
------------------------------
I am having problems with this section of code:

            if (!IsArrayOrCollection(typeof(T)))
            {
                value = DocHelper.InsertId(value, key);
            }

I am managing all the document IDs myself in my application. But DocHelper keeps interfering with my ID during deserialization. Is there a way we can possibly set a flag that wont interfere with my JSON ?

One example: All my domain objects have a strongly typed Guid as their ID.

The KEY to an Account object is "acct:aaaa-bb-cc-dd".

POCO in C#:
public class Account{
    public Guid Id{get;set;}
}

I format the key to this object inside my App; however, during deserialization DocHelper interferes with the JSON by injecting the KEY: "acct:aaaa-bb-cc-dd" into the ID property in the JSON before deseralization.

So when Newtonsoft deserializes the JSON with the injected DocHelper Id:Key:"acct:aaaa-bb-cc-dd" cannot be converted to a Guid because of the prefix "acct:" is an invalid Guid format. I'd prefer the SDK not interfere with any of my ser/deser JSON.

Perhaps we can add some flag that can short circuit the DocHelper injection?
------------------------------

Any suggestions on implementation?

As a static configuration variable on DocHelper or via App.config?

Of course, the default behavior would be to keep things as is for a non-breaking change.

Using something like a static property:

    public static class DocHelper
    {
        public static bool DisableIdInsert{get;set;}

        public static string InsertId(string json, string id)
        {
            if (!DisableIdInsert && !json.Contains("\"id\""))
            {
                return json.Insert(1, string.Concat("\"id\":", "\"", id, "\","));
            }
            return json;
        }
    }

Thanks,
Brian

 Comments   
Comment by Jeff Morris [ 19/Aug/14 ]
Hi Brian -

Sorry for not getting back to you sooner. What you have proposed looks reasonable, could you create a PR so we could push it through to review?

Thanks,

-Jeff




[NCBC-292] update packages with new signing key Created: 27/Aug/13  Updated: 27/Aug/13

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

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





[NCBC-304] log4net logging broken Created: 27/Sep/13  Updated: 27/Sep/13

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

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


 Description   
When logging is configured to log4net like in .net client manual it throws exception:
"Could not load file or assembly 'Enyim.Caching, Version=2.12.0.0, Culture=neutral, PublicKeyToken=05e9c6b5a9ec94c2'"

In release notes http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-rn_1-2-7a.html said that this is "fixed" and it should work if I update all components through nuget. But I don't use nuget, I just downloaded zip archive from http://packages.couchbase.com/clients/net/1.2/Couchbase-Net-Client-1.2.7.zip and included all nessesary references.

 Comments   
Comment by SkeLLLa [ 27/Sep/13 ]
I think that packaged version of log4net adapter in zip file is broken.




[NCBC-294] Enhance intelligence of client to know about all nodes of a cluster for making REST connection Created: 27/Aug/13  Updated: 27/Aug/13

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

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


 Description   
If configured with a single host (a load balancer), the client may pause for everytime it loses this connection. The same thing happens when configured with a list of hosts and the client reaches the end of the list...it pauses before going back to the top.

I don't think it's appropriate to ask for the client to constantly spin on trying to make a connection if in fact none can be made.

Another solution to this would be to have the client be aware of ALL the servers in a cluster (which it gets via the vbucket map info) and be able to try all of them, and/or know which ones are alive so that it doesn't have to wait




[NCBC-295] allow for setting bootstrap nodes via a configuration file, including dynamic updates Created: 27/Aug/13  Updated: 27/Aug/13

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

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


 Description   
Currently, bootstrap parameters may be supplied only via arguments to the constructor. A feature should be added to allow for URLs to be used for bootstrap to be configured via a properties file or something along those lines. This should be able to be edited, and then picked up, during a given client object's lifetime.




[NCBC-220] Error handling documentation Created: 05/Feb/13  Updated: 29/May/13

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

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


 Description   
Please create some documentation specifying possible error/failures to operations, what they "look" like in the logs/exceptions/stack traces and what our recommendation is on how to handle them.

i.e. tmp_oom, timeouts (connection/operation/java-internal/etc), "get miss" (it's technically a failure, let's make it overly obvious what it means), CAS failure, add() failure, replace() failure,

Some of this should be covered in the API reference, but this bug is specifically for a single page where this information is aggregated that a customer/user could read about how to handle errors.




[NCBC-272] Add documentation on error handling with views/queries Created: 04/Jun/13  Updated: 04/Jun/13

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

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Would be helpful to have some insight on how to deal with timeouts (and any other error) when querying a view.




[NCBC-267] should retry count be allowed to be 0, or should it be forced higher Created: 29/May/13  Updated: 29/May/13

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

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





[NCBC-281] Lost error message and exception Created: 22/Jul/13  Updated: 22/Jul/13

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

Type: Bug Priority: Major
Reporter: Raphaël Bartement Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
When a Couchbase operation fails, we may not get the error message and exception (at least for the kind of error I have).
Those error details are produced properly, but then overwriten and erased by the MemcachedNode.ExecuteOperation implementation.

When Acquire fails, "readResult.Combine(result);" overwrites this result with the values of "readResult", which in this block is always blank.

Dropping it just gave me back the error I was looking for.

 Comments   
Comment by Raphaël Bartement [ 22/Jul/13 ]
You may consider using this pull request to fix this bug: https://github.com/couchbase/couchbase-net-client/pull/5




[NCBC-277] Issue on documentation for the "collated view" sample code Created: 03/Jul/13  Updated: 04/Feb/14

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

Type: Task Priority: Major
Reporter: Tug Grall (Inactive) Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Issue with the sample code we show in the documentation:
http://www.couchbase.com/docs/couchbase-sdk-net-1.2/collatedviews.html
and the beer sample application code
https://github.com/couchbaselabs/beer-sample-net

This has been raised by the community:
https://twitter.com/jakescott/status/352637928272437248




[NCBC-268] Implement timeouts on actual operations Created: 30/May/13  Updated: 30/May/13

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

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


 Description   
At the moment it seems that the timeout values are only used on the initial connection to a Couchbase node, not on the servicing of operations.

Comment from a customer:
We had the problems in the WaitAny/WaitMultiple part of the BulkGet method. We saw that there is no timeout passed to the Wait methods. There is a time defined on the connections itself but it would be better if the WaitAny/WaitMultiple methods would have a timeout too.




[NCBC-270] Detailed logging information Created: 30/May/13  Updated: 30/May/13

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

Type: Improvement Priority: Major
Reporter: Perry Krug Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Σ Remaining Estimate: 24h Remaining Estimate: Not Specified
Σ Time Spent: Not Specified Time Spent: Not Specified
Σ Original Estimate: 24h Original Estimate: Not Specified

Sub-Tasks:
Key
Summary
Type
Status
Assignee
NCBC-12 logging level documentation needed Technical task Reopened Matt Ingenthron  
NCBC-183 Docs should use Execute* methods with... Technical task Open Jeff Morris  
NCBC-225 Docs: Recommendations for which loggi... Technical task In Progress Jeff Morris  

 Description   
Could we extend this page (http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-logging.html) to include sample log messages and help the customer understand which log level to configure for looking at/investigating what parts of the code?




[NCBC-269] Link broken to nlog configuration file Created: 30/May/13  Updated: 10/Mar/14

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

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The link at the bottom of this page: http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-logging.html

Points to: http://nlog-project.org/wiki/Configuration_file, which returns a 404

 Comments   
Comment by Jeff Morris [ 10/Mar/14 ]

This line needs to be updated: "See for more NLog configuration details" using this link: https://github.com/nlog/nlog/wiki

http://docs.couchbase.com/couchbase-sdk-net-1.3/#configuring-logging




[NCBC-77] Need details on "StoreMode" values Created: 26/Jun/12  Updated: 10/Mar/14

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

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
In this page: http://www.couchbase.com/docs/couchbase-sdk-net-1.1/couchbase-sdk-net-retrieve-set.html

There is no detail on what the available store modes are (set/add/replace)

 Comments   
Comment by John Zablocki (Inactive) [ 10/Jan/13 ]
Pull request pending in docs.
Comment by John Zablocki (Inactive) [ 05/Feb/13 ]
Released
Comment by Perry Krug [ 06/Feb/13 ]
http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-store-set.html

Hey John, I think this page could still use a little cleaning up.

Many of the API calls are listed as: "object.Store(storemode, key, value, expiresat)". and the descriptions are all the same as well. Some of the API calls do not match the method they are describing (see the very last one for example)

Can we include some description of what the user should expect to see when each of them fails?




[NCBC-39] Minimize key size by storing as binary array Created: 30/Apr/12  Updated: 14/Oct/14

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

Type: Improvement Priority: Major
Reporter: Tim Smith (Inactive) Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: .NET client, Couchbase Server 1.8


 Description   
To reduce overall memory consumption, and make most efficient use of resources, the client should be able to store data as a binary array instead of in a string representation. For example, a GUID which might take 36 bytes as a string can be stored as a 20-byte binary array.

However, the .NET client API doesn't provide any means to store non-string representations of keys, so we're not able to maximize efficiency in this way.






[NCBC-36] Enhance intelligence of client to know about all nodes of a cluster for making REST connection Created: 06/Apr/12  Updated: 02/Jun/14

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

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


 Description   
If configured with a single host (a load balancer), the client will pause for 1s everytime it loses this connection. The same thing happens when configured with a list of hosts and the client reaches the end of the list...it pauses for 1s before going back to the top.

I don't think it's appropriate to ask for the client to constantly spin on trying to make a connection if in fact none can be made.

Another solution to this would be to have the client be aware of ALL the servers in a cluster (which it gets via the vbucket map info) and be able to try all of them, and/or know which ones are alive so that it doesn't have to wait

 Comments   
Comment by Perry Krug [ 15/Aug/13 ]
This is also needed when trying to upgrade the entire cluster as IP addresses are changing (mostly in AWS)
Comment by Perry Krug [ 13/Jan/14 ]
Has this already been handled with unibrow/CCCP?
Comment by Matt Ingenthron [ 13/Jan/14 ]
Node IPs only change on reboot in EC2. Well, or if you associate an EIP, but that's administrator controlled, not random.

.NET has not implemented unibrow yet and may actually get to CCCP first. The phase one for unibrow was Java and libcouchbase, and those two have been done for some time.
Comment by Perry Krug [ 13/Jan/14 ]
I think it's just important to realize the major use case of this would be when replacing all of the nodes in a client's bootstrap list. This might be when swapping all nodes for some reason or another or just happening to rebalance out the nodes that the client has in its list...I don't think that's a corner-case only related to AWS.




[NCBC-288] .NET documentation missing CheckExists method for view object Created: 07/Aug/13  Updated: 09/Aug/13

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

Type: Task Priority: Minor
Reporter: Patrick Varley Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: The link below should explain the CheckExists method:
http://www.couchbase.com/docs/couchbase-sdk-net-1.2/api-reference-view.html


 Comments   
Comment by Patrick Varley [ 09/Aug/13 ]
OnError should be explained too:
view.OnError(OnErrorMode.stop)
View.OnError(onErrorMode.continue)




[NCBC-244] Explicit docs for what .NET Framework versions are supported Created: 02/Apr/13  Updated: 29/May/13

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

Type: Task Priority: Minor
Reporter: Tim Smith (Inactive) Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: http://www.couchbase.com/docs/couchbase-sdk-net-1.2/ch01s03s01.html


 Description   
Need to be explicit about what versions of Visual Studio are supported, and what .NET Framework is supported. 3.5? 4.0?

The docs mention that you need the full .NET Framework, not just a Client profile. But don't mention if 4.0 is needed. It seems that 3.5 is not supported, but I'm not positive.



 Comments   
Comment by Tim Smith (Inactive) [ 02/Apr/13 ]
I just got this update:

The 1.2 versions use 4.0 features for some things. 3.5 will still work with the 1.1 series (1.2 series is recommended, has important stability fixes).
Comment by Tim Smith (Inactive) [ 02/Apr/13 ]
Probably need to confirm this info, and decide if we want to just state plainly that 4.0 features are used in the .NET SDK. Probably need input from SDK dev team on this.

Tim
Comment by John Zablocki (Inactive) [ 02/Apr/13 ]
The release note for 1.2 GA does announce the 4.0 requirement - http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-rn_1-2-0g.html. But agree, it could be added to the getting started. 3.5 support will be targeted for the May release.




Detailed logging information (NCBC-270)

[NCBC-12] logging level documentation needed Created: 05/Dec/11  Updated: 02/Jun/14

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

Type: Technical task Priority: Minor
Reporter: Matt Ingenthron Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Currently, there's insufficient information on how to change the logging level to see what's happening when diagnosing an issue.

 Comments   
Comment by Matt Ingenthron [ 05/Dec/11 ]
From Bin:

Attila added more logging for operation Delete/Get/Set at https://github.com/enyim/EnyimMemcached/commit/768fb5956f2f69b6c57a484a3aee367dc0d42ba0#Enyim.Caching/Memcached/Protocol/Binary/GetOperation.cs.
 
The customer needs to get the latest Enyim library and build with symbol ‘EVEN_MORE_LOGGING’. See attached picture for illustration.
At the same time, they need to set the log level to DEBUG in their configuration file.
Comment by John Zablocki (Inactive) [ 02/Mar/12 ]
I added a section "Configuring Logging" to the "Getting Started" document - http://www.couchbase.com/develop/net/current. This doesn't cover the build with EVEN_MORE_LOGGING though...
Comment by John Zablocki (Inactive) [ 05/Feb/13 ]
Released
Comment by Perry Krug [ 07/Feb/13 ]
John, does this doc need to be updated to cover EVEN_MORE_LOGGING?

This is related to NCBC-225 as well.
Comment by Jeff Morris [ 10/Mar/14 ]
I am going to be consolidating these into a single ticket, since there several regarding the lack of documentation for logging.




[NCBC-276] /opt/couchbase/bin/cbstats Created: 27/Jun/13  Updated: 01/Jul/13

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

Type: Task Priority: Trivial
Reporter: trace Assignee: Matt Ingenthron
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: couchbase 1.8.1. Red Hat Enterprise Linux Server release 5.8 (Tikanga)

Attachments: PNG File cmd_get.png    

 Description   
Подскажите, почему cmd_get и cmd_set всё время возрастает.
Хотя график должен быть ввиде синусойды.

п.с.
данные в zabbix пишутся правильно.

 Comments   
Comment by trace [ 01/Jul/13 ]
Please transfer the task to a project Cochbase Server (MB)




[NCBC-297] Documentation problem Created: 25/Jul/13  Updated: 03/Sep/13

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

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


 Description   
I was just reading about the observe method implemented in .Net client library, found two things problematic:

1. Here in the wiki page : http://www.couchbase.com/wiki/display/couchbase/Observe
there is a statement that says : "In the examples above, the ReplicateTo and PersistTo are enums with values from 1 to 4." which is incorrect as we know that replication is only allowed till 3 nodes and the enum ReplicateTo has values = 0,1,2,3. For PersistTo, the values are from 0 to 4.

2. No information about Observe is found in sdk documentation (may be i couldn't locate it) : http://www.couchbase.com/docs/couchbase-sdk-net-1.2/




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

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

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

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

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

 Comments   
Comment by Jeff Morris [ 01/May/14 ]
Hi Saaskhi -

Should I move this to the next sprint for 1.3.6?

-Jeff
Comment by Jeff Morris [ 02/Jun/14 ]
Saakshi -

Moved this to 1.3.7 - if this isn't right, feel free to update the ticket.