从 c#datastax 驱动程序关闭 cassandra 集群时出错

Posted

技术标签:

【中文标题】从 c#datastax 驱动程序关闭 cassandra 集群时出错【英文标题】:Error while shutdown cassandra cluster from c# datastax driver 【发布时间】:2015-04-01 11:32:46 【问题描述】:

我正在使用 Datastax C# 驱动程序从我的 C# 应用程序连接到 Cassandra 节点。我的代码工作正常,我能够检索所有数据并处理它们。但是,当我在获取记录后尝试关闭集群时,它给了我上述错误。下面是我的 Connect 方法代码。

public ISession Connect()

    cluster = Cluster.Builder().AddContactPoint(NodeIp).Build();       //node ip
    ISession session = cluster.Connect(ClusterName);                   //database name
    return session;

任何帮助将不胜感激。

【问题讨论】:

此错误已在最新版本中修复 刚刚发完这个问题就解决了吗? 是的,我创建了一张票并将其包含在即将发布的版本中 :) datastax-oss.atlassian.net/browse/CSHARP-247 。您应该通过 Nuget 进行更新,无需解决方法即可修复 哇,太好了,非常感谢队友:) 【参考方案1】:

关闭集群时,驱动程序使用 STAThreads 不支持的WaitHandle.WaitAll()

关闭时驱动应该支持STAThreads,我创建了ticket for it。

与此同时,作为一种解决方法,您可以开始一个新任务并等待它。

Task.Factory.StartNew(() => cluster.Shutdown()).Wait();

更新

此错误已在最新版本中修复。

【讨论】:

谢谢,上面的查询有效,现在没有给我错误。但是你能告诉我我的集群什么时候会关闭吗?我怎么知道它已经关闭了? 关机是C#驱动中的一个阻塞操作,所以当行执行时会关机(解决方法包括一个Wait())

以上是关于从 c#datastax 驱动程序关闭 cassandra 集群时出错的主要内容,如果未能解决你的问题,请参考以下文章

在上一个主机被 Datastax Java 驱动程序关闭后,Cassandra 重新连接到下一个主机的尝试

JAVA操作cassandra数据库

可以通过 Cassandra Datastax 驱动程序从文件中加载语句吗?

c# cassandra DataStax驱动版本兼容性

Apache Cassandra vs Datastax Cassandra [关闭]

无法从 Python 应用程序连接到 DataStax Enterprise 集群