Get Operation - Misses

I noticed, when I am making Get operation, for an existing object, it does not retrieve the item sometimes
and comes back with null and status id 0 and no exception.

It happens rarely, but I wanted to see if anybody else saw same kind of behavior.

I am 100% sure that the item is present, because, when I try to add it again, then I get the error saying that key already exists.

The first time I try to do a "Get" operation, it does not come back. When I try the second or third time, it was successful.

I was not waiting at least for 5 minutes after the "Put" operation is does (which is successful), before I try to do a "Get" Operation.

Any ideas?

I also see this periodically in a high-load production system. I'm using server 2.0.1 on CentOS, and using the 1.2.4 .NET SDK. I see this problem maybe once per week, so it is fairly rare. I'm using ExecuteGet, and the IGetOperationResult as Success==false, but no other information is provided. No message, status code, or exception, and no InnerResult either.

1 Answer

« Back to question.

I suspect what is happening here is that the connection pool is temporarily exhausted and the waiting - eventually if an available connection is not acquired, the operation will time out. Previously, when this happened the operation returned with success=false and no message or status code was returned. In the latest release 1.2.8, we return a client status code indicating that a timeout occurred, as well as message. We also added a new enumeration that makes it easier to determine what the status code refers to: Enyim.StatusCode.SocketPoolTimeout. The enum can be used to help translate all operation status codes.

The fix is described here: http://www.couchbase.com/issues/browse/NCBC-301

Additionally, to help alleviate connection pool exhaustion, you may want to bump up your upper bounds of your connection pool by setting the maxPoolSize to something higher than the default of 20 as described here: http://docs.couchbase.com/couchbase-sdk-net-1.2/#appendix-configuring-th....

You should also probably consider updating you clients to the latest version which is 1.2.8 at the time of this writing.