couchbase .NET客户端被卡在构造函数中



我创建了这个简单的应用程序

using System;
using System.Configuration;
using System.Threading;
using Couchbase;
using Couchbase.Configuration;
namespace SimpleCouchClientTest
{
    /// <summary>
    /// Simple couch client test
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            var connectionString = "http://localhost:8091/pools/";
            var bucketName = "testbucket";
            var bucketPassword = "testbucket";
            var numberOfLoops = 1000;
            for (var i = 0; i <= numberOfLoops; i++)
            {
                var config = new CouchbaseClientConfiguration
                {
                    Bucket = bucketName,
                    BucketPassword = bucketPassword,
                };
                config.Urls.Add(new Uri(connectionString));
                Console.WriteLine("Creating client #" + i);
                var couchClient = new CouchbaseClient(config);
                Console.WriteLine("Client #" + i + " created.");
                //Thread.Sleep(100); //-- uncomment this to run successfully
            }
        }
    }
}

numberOfLoops设置为1000,并且在第一个客户端之后,Couchbaseclient创建悬挂。我举办了windbg会话,我得知客户被卡在BucketConfigListener.Start()上。

这是一个已知问题吗?有解决方法吗?

我遇到了相同的问题,最后弄清楚了。我正在运行Fiddler2来检查Web请求/响应的内容。但是,这正在干扰桶形的URI。

一旦我关闭了Fiddler2并确保没有其他代理,它就可以了。我还能够通过在尝试初始化构造函数之前重新启动Fiddler2来按需重现问题。

让我知道您是否也经历过。

不确定您是否想通过创建多个客户端实例来测试/实现什么?我认为您不应该创建那么多的Couchbase客户。它应该是为您的所有应用程序线程服务的一个客户端实例。

您应该移动"新的couchbaseclient(config);"在循环外。

,例如

var config = new CouchbaseClientConfiguration
{
  Bucket = bucketName,
  BucketPassword = bucketPassword,
};
config.Urls.Add(new Uri(connectionString));
Console.WriteLine("Creating one client for all my app needs");
var couchClient = new CouchbaseClient(config);
for (var i = 0; i <= numberOfLoops; i++)
{
  // use client to do your test operations get/set/etc
}

相关内容

最新更新