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




[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-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-314] Runaway worker process when cluster node shutdown - SessionState provider Created: 18/Oct/13  Updated: 18/Oct/13

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

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


 Description   
http://www.couchbase.com/communities/q-and-a/runaway-worker-process-when-cluster-node-shutdown-sessionstate-provider

>>Hi All,

I am experiencing a problem that has multiple symptoms and all in all seems very strange.

I have a single Windows Server 2012, IIS8 EC2 instance hosting an ASP .Net WebForms site using .Net Fx 4.0. This is configured to use a Couchbase 2.1.1 community edition (build-764-rel) cluster of 2 nodes.

The Client components are: CouchBaseNetClient 1.2.9 and CouchBaseAspNet 1.2.1 both installed from NuGet.

The Problem:

If I shutdown one of the nodes (either one, same problem) to simulate failure; then the following are observed.

The connected browser clients get redirected to a 404 page when they try to postback.

If I re-enter the home page url in the browser and navigate there, the server does not repsond to the get request and the server's w3wp process jumps to 50% and just sits there. If I browse to the site from another client, the w3wp processor usage jumps to 100% - eventually these requests timeout on the browser but the processor use remains the same on the server.

Stopping and starting the app pool seems to have no effect, a full iisreset is required. When I then access the site again after an iisreset, any pages that use session state timeout.

The system cannot be restored to working condition until the dropped Couchbase node is returned to the cluster.

This problem happens when exclusiveAccess is set to true or false.

The web.confg entries are included below:

Web.config:

<sessionState customProvider="Couchbase" mode="Custom" timeout="10">
<providers>
<add name="Couchbase" type="Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet"
exclusiveAccess="false" />
</providers>
</sessionState>
</system.web>
<couchbase>
<servers bucket="default" bucketPassword="passwd">
<add uri="http://cache1.domain.com:8091/pools" />
<add uri="http://cache2.domain.com:8091/pools" />
</servers>
</couchbase>
<code>

- See more at: http://www.couchbase.com/communities/q-and-a/runaway-worker-process-when-cluster-node-shutdown-sessionstate-provider#sthash.6cTgPjM3.dpuf

 Comments   
Comment by Jeff Morris [ 18/Oct/13 ]
Saakshi -

Can you try to replicate this?

-Jeff




[NCBC-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-287] workaround bad REST responses from bucket statistics Created: 07/Aug/13  Updated: 18/Sep/13

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

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

Issue Links:
Dependency

 Description   
Cluster version 1.8.1 may send back bytes in a decimal format (i.e. 1000.0 instead of 1000). We can work around this at the client by turning it into an integer.

 Comments   
Comment by Saakshi Manocha [ 23/Aug/13 ]
@Saran:
Please see the change done for this issue at : https://github.com/saakshimanocha/couchbase-net-client/commit/24930aab58f574009cb842bfd267b21d992fc4a2

I have committed the changes in my forked repository https://github.com/saakshimanocha/couchbase-net-client/
Please use the Couchbase-net-client code from here and use it in the customer application. If it works fine for you, I will commit the changes in main repository.

Change done:
Changed data types from long to double for Swap_total, MemoryFree and MemoryTotal. This will solve the problem for 1.8.1 and later builds.
Converting to Int will not help as it cannot parse the trailing decimal because value is too large for int.
Comment by Saakshi Manocha [ 18/Sep/13 ]
@Saran: Any update on this?




[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-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-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-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-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-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-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-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-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-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-284] after some time with lots of connections, client gets stuck requiring a full IIS reset Created: 30/Jul/13  Updated: 23/Aug/13

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

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Saakshi Manocha
Resolution: Unresolved Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Couchbase Server 2.1


 Description   
Bug reporter can reproduce this issue in production, but has not been able to reproduce it in test environment. From the bug reporter:

"once we get lots of connections to the live server with a single instance it eventually totally gets stuck, and it is not clear where or why. A full IIS reset is needed.

"I am going to try to load test our site on our staging server to see if we can get it to fail outside of the production server. I suspect the issue can be replicated if you add a large load to a web app that is making extensive use of couchbase for caching. In our case we have to Couchbase clients that we use; one is to the memcached buckets we use purely for caching, and the second is to a couchbase bucket that currently only stores session data. Not sure that makes any difference, but we do use two clients per request. And since we use it for session data that one gets a good load on it but the cache one is hit many times per request.

And after some further investigation:

"However the good news is that it behaved differently to how it has in the past. Usually as soon as we turn it on and recycle the application pool, the site falls over and becomes non-responsive immediately, and the CPU gets pegged at 100% in the IIS process. In this case however we actually got a page load to come up pretty quickly after we turned it on, which for a second made me think it was working. But alas more page loads after that started to load up and the site ground to a halt. Oddly the CPU was not pegged at 100% like it normally does, but it was definitely way higher than normal, in the 80-95% range I think (normal CPU sits around 10-15% max once the site has come up and settled in).

 Comments   
Comment by Matt Ingenthron [ 30/Jul/13 ]
Saakshi: I know you're trying to reproduce this. Can you drop your current status in here, including any references to tools we've built or modified? Let's track status on this investigation on this NCBC.
Comment by Saakshi Manocha [ 05/Aug/13 ]
Hi Kendall,

1. Please note that constructing the client should not be done per operation, but rather per app domain. Could you please try to use one Couchbase client per request and try if that helps.

2. Since the problems are seen with increase in number of threads, could you try once by gradually increasing the time out in the sessionState config section as below:

<sessionState customProvider="Couchbase" mode="Custom" timeout="500">
    <providers>
        <add name="Couchbase" type="Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet" section="couchbaseSessionState" />
    </providers>
</sessionState>
Comment by Kendall Bennett [ 05/Aug/13 ]
1. The demo code shows creating a single, static instance of the Couchbase client, so that all threads share the same instance and internally Couchbase uses the Enyim library that caches HTTP connections in a pool and reuses them. That is basically one client per app domain, and that is what does NOT work. Our site hangs up if we try to do that.

To work around the issue we create one client per HTTP application instance, not per request. So we are reusing instances over and over for subsequent requests, but there is only one per HTTP instance that IIS starts. We average about 40 or so instances under load. This means no thread safety is needed because IIS only handles one request per instance at a time, and is the reason we made this change. Which indicates that the current library has some kind of threading issue that causes our site to lock up and get stuck if we try to use the single instance mode where all threads (40 at a time) are coming into the library at once.

2. I am not sure why the session state config will make any difference? I don't believe it is a timeout problem in the sessions or we should see a session timeout error getting logged?
Comment by Saakshi Manocha [ 05/Aug/13 ]
Is it possible for you to share your sample code or code snippet so that I can have a look?
Comment by Kendall Bennett [ 06/Aug/13 ]
Sure, I can do that. I am busy the rest of this week, but I can try next week. What specifically are you looking for? Something that shows how we set up per-application instance? Or how we are using it in single instance mode? We have it set up so we can change from per-app instance (which works best for us) and single instance mode with a configuration file change.
Comment by Saakshi Manocha [ 23/Aug/13 ]
Could you please share some code snippet or a simple test case that demonstrates the error you are getting. I won't be able to debug your entire program as it might be dependent on any of the customer-specific binaries, but lets target a small code which replicates the behaviour at your end and i will try to debug and analyse the error.




[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-655] .NET Client seeing many pauses during Rebalance Created: 23/Sep/14  Updated: 23/Sep/14

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

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   
I have been benchmarking the Java client vs .NET client. During a rebalance, I see frequent pauses within the .NET client that greatly impacts overall throughput. These pauses are not seen in the Java client with equivalent code (gets). I've captured a 30 second video as well as a 30 second network capture, attached. It is connecting to a 3 node 2.5.1 cluster where I add or remove a node, and rebalance.

ASK: Why is the .NET client pausing for 10-15 seconds each minute during a rebalance?

http://screencast.com/t/kNyXkauaEPK3

Here is the relevant C# code, performing a GetWithCas with random keys in a loop:

private static void Main(string[] args)
        {
         
            var config = new CouchbaseClientConfiguration();

            config.Bucket = "TestBucket";
            config.Username = "";
            config.Password = "";

            config.SocketPool.MaxPoolSize = 20;
            config.SocketPool.MinPoolSize = 20;
            config.RetryCount = 10;
            config.HeartbeatMonitor.Interval = 30000;
            config.SocketPool.ReceiveTimeout = TimeSpan.FromMilliseconds(2500);
            config.RetryTimeout = TimeSpan.FromMilliseconds(1000);

            config.Urls.Add(new Uri("http://10.4.2.57:8091/pools"));
            config.Urls.Add(new Uri("http://10.4.2.107:8091/pools"));
            config.Urls.Add(new Uri("http://10.4.2.108:8091/pools"));

            var Client = new CouchbaseClient(config);

            // create threads to read random documents:

            ParallelOptions parallelOptions = new ParallelOptions();
            parallelOptions.MaxDegreeOfParallelism = 1;
            Parallel.For((long)0, 1, parallelOptions, i =>
            {
                for (int j = 100071; j < 1000000; j++)
                {
                    string key = "Couch_" + j.ToString();
                    var casVal = Client.GetWithCas(key);
                    if (casVal.Result != null)
                    {
                        Console.WriteLine("j=" + j.ToString());
                    }
                }
            });

            Client.Dispose();
        }
    }


FYI, here is the corresponding Java code that does not paused during a rebalance:

public static void main(String[] args) throws Exception {
        new App().run();
    }
    
    private void run() throws InterruptedException, ExecutionException {
        int numThreads = 1;
        
        ExecutorService pool = Executors.newFixedThreadPool(numThreads);
        List<Future> fs = new ArrayList<Future>(numThreads);
        for (int i=0; i<numThreads; i++) {
            fs.add(pool.submit(new Reader(i+1, 5000000)));
        }
        for (Future f : fs) {
            f.get();
        }
    }

    private class Reader implements Runnable {
        
        private int id;
        private long runningTime;
        
        public Reader(int id, long runningTime) {
            this.id = id;
            this.runningTime = runningTime;
        }
        
        @Override
        public void run() {
            long n=100071;
            long start, end=0;
            long initTime = System.currentTimeMillis();
            List<URI> uris = null;
            try {
                uris = Arrays.asList(new URI("http://10.4.2.57:8091/pools"));
            } catch (URISyntaxException e) {
                
                e.printStackTrace();
            }
            String bucketName = "TestBucket";
            String result = "";
            String password = "";
            CouchbaseConnectionFactoryBuilder builder = new CouchbaseConnectionFactoryBuilder();
            builder.setReadBufferSize(20000);
            builder.setOpTimeout(2500);
            builder.setFailureMode(FailureMode.Redistribute);
            builder. setOpQueueMaxBlockTime(1000);
            CouchbaseConnectionFactory connectionFactory = null;
            CouchbaseClient client = null;
            try {
                connectionFactory =
                builder.buildCouchbaseConnection(uris, bucketName, "", "");
                client = new com.couchbase.client.CouchbaseClient(connectionFactory);
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            while (true) {
                String key = "Couch_" + n;
                start = System.currentTimeMillis();
                
                if (client.gets(key) !=null) {
                    System.out.println("N=" + n);
                }
                
                n++;
                if (runningTime>0 && (end-initTime)>runningTime) {
                    break;
                }
            }
        }
    }


 Comments   
Comment by Jeff Morris [ 23/Sep/14 ]
Jeff -

Thanks for doing this :) Not sure why the client pauses - I have some ideas, though; I'll have to take a deeper look.

-Jeff




[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





Fix invalid tests in NUnit project. (NCBC-174)

[NCBC-296] Fix the test: When_Observing_A_Removed_Key_Operation_Is_Successful_With_Master_And_Replication_Persistence Created: 03/Sep/13  Updated: 03/Sep/13

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

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

Issue Links:
Dependency

 Description   
The test:
When_Observing_A_Removed_Key_Operation_Is_Successful_With_Master_And_Replication_Persistence
requires creating a bucket that has replication index two.
so remove this dependency from the test and rather let the test create such a bucket for itself.

 Comments   
Comment by Saakshi Manocha [ 03/Sep/13 ]
code changes submitted at:
http://review.couchbase.org/#/c/28758/

pending for review




[NCBC-305] Improve setup and tear down phases of unit tests Created: 01/Oct/13  Updated: 01/Oct/13

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

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


 Description   
In many bucket admin tests in particular, the test should clear the bucket that it creates and also improve the wait condition




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




[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-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-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-264] document the release process Created: 17/May/13  Updated: 31/Jul/14

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

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

Attachments: Microsoft Word Release_Process_.Net_SDK.doc    
Issue Links:
Dependency

 Description   
Somewhere in the source repository, please document the release process.

 Comments   
Comment by Saakshi Manocha [ 23/May/13 ]
@Matt/John: Attached herewith is a layman version of the release process of .Net SDK.
Please review and suggest the changes as required.
Thanks!
Comment by Saakshi Manocha [ 10/Jun/13 ]
created sub-task to review the document




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




Generated at Tue Sep 23 20:34:53 CDT 2014 using JIRA 5.2.4#845-sha1:c9f4cc41abe72fb236945343a1f485c2c844dac9.