C# 批量插入/更新中的Cassandra不一致

C# 批量插入/更新中的Cassandra不一致,c#,.net,cassandra,cassandra-2.0,datastax,C#,.net,Cassandra,Cassandra 2.0,Datastax,我收到以下错误消息: consistency ONE写入查询期间的Cassandra超时(0个副本确认了所需的1次写入) 我使用的是复制因子为3的Cassandra。 一切都正常运转。但最近,我发现了一个错误。可能它发生在Cassandra或我正在使用的datastax c#Cassandra驱动程序中 为了100%确定,我在测试中将所有ConsistenceLevel可能性设置为ConsistenceLevel.Quorum。但我也尝试了一致性级别2 这两种设置都出现了问题 我的问题不是超时,

我收到以下错误消息:
consistency ONE写入查询期间的Cassandra超时(0个副本确认了所需的1次写入)

我使用的是复制因子为3的Cassandra。 一切都正常运转。但最近,我发现了一个错误。可能它发生在Cassandra或我正在使用的datastax c#Cassandra驱动程序中

为了100%确定,我在测试中将所有ConsistenceLevel可能性设置为
ConsistenceLevel.Quorum
。但我也尝试了一致性级别2

这两种设置都出现了问题

我的问题不是超时,这是我可以解决的问题。 我担心的是,我收到一条错误消息,说需要1个确认(一致性1)。尽管我将所有设置为
consistentylevel.Quorum
consistentylevel.Two

如果没有WriteTimeoutException,我永远不会注意到,可能存在一致性问题

我还使用了跟踪,得到了以下(更深的)错误:

Cassandra.Session:RequestHandler在一致性1(0个复制副本确认了所需的1次写入)的写入查询期间收到异常Cassandra.WriteTimeoutException:Cassandra超时

下面是一些测试代码:

var cluster =  Cluster.Builder().AddContactPoints("192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", "192.168.0.5")
.WithQueryOptions(new QueryOptions().SetConsistencyLevel(ConsistencyLevel.Quorum))
.WithCompression(CompressionType.LZ4).Build();
var session = cluster.Connect();
insertStatementTableX = session.Prepare(
   "INSERT INTO keyspace.x (a, b, c) VALUES (?, ?, ?);").SetConsistencyLevel(ConsistencyLevel.Quorum);
insertStatementTableY = session.Prepare(
   "INSERT INTO keyspace.y (a, b, c) VALUES (?, ?, ?);").SetConsistencyLevel(ConsistencyLevel.Quorum);
var batch = new BatchStatement();
batch.SetConsistencyLevel(ConsistencyLevel.Quorum);   
batch.Add(insertStatementTableX.Bind(1, 2, 3)).SetConsistencyLevel(ConsistencyLevel.Quorum);
batch.Add(insertStatementTableY.Bind(2, 3, 4)).SetConsistencyLevel(ConsistencyLevel.Quorum);
session.Execute(batch);
我是否可以假设,尽管我将一致性级别1设置为quorum,但现在所有其他插入/更新都是通过一致性级别1完成的?
还是只是错误消息出错?

在Cassandra中,对于写入操作

这意味着协调器等待实际复制副本响应写入成功的时间已经过去


它尚不可读取,但已写入批处理日志,您不应让客户端重试。如果您希望低延迟和保证写入永不失败(最高可用性),则可以更改写入。

您使用的驱动程序版本是什么?可能是这个bug,也可能是我正在使用的2.5.2。通过NuGet,我应该有最新版本。我不知道是错误的报告,还是提交给卡桑德拉的报告。你知道我怎么知道吗?如果你是最新版本的,你能提交jira吗?让我们知道#你好,我已经创建了一个bug报告:我的数据没有更新。我正在使用插入来覆盖某些值。这些值仍然是旧格式。然而,这不是问题所在。我担心的是,我设置了consistentylevel.Quorum或consistentylevel.Two,但错误消息说它得到了consistentylevel.One的超时。因此,要么请求被发送到带有ConsistenceLevel.One的Cassandra,要么c#驱动程序是错误的,并且忽略了ConsistenceLevel被设置为“1”以外的值这一事实。