从 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 重新连接到下一个主机的尝试
可以通过 Cassandra Datastax 驱动程序从文件中加载语句吗?