【发布时间】:2018-08-14 18:25:05
【问题描述】:
我有一个 3 节点 Cassandra 集群,其密钥空间的复制因子为 3:
CREATE KEYSPACE demo
WITH REPLICATION = {
'class':'SimpleStrategy',
'replication_factor':3
};
(仅部署在一个数据中心)
在进行故障测试时,即关闭一个节点时,我在尝试对我的键空间进行查询时遇到这些异常:
Caused by: org.apache.cassandra.exceptions.UnavailableException: Cannot achieve consistency level LOCAL_ONE
at org.apache.cassandra.db.ConsistencyLevel.assureSufficientLiveNodes(ConsistencyLevel.java:296) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.service.AbstractReadExecutor.getReadExecutor(AbstractReadExecutor.java:162) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.service.StorageProxy$SinglePartitionReadLifecycle.<init>(StorageProxy.java:1774) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:1736) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.service.StorageProxy.readRegular(StorageProxy.java:1682) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:1597) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.db.SinglePartitionReadCommand$Group.execute(SinglePartitionReadCommand.java:997) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:277) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:247) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.auth.CassandraRoleManager.getRoleFromTable(CassandraRoleManager.java:521) ~[apache-cassandra-3.10.jar:3.10]
at org.apache.cassandra.auth.CassandraRoleManager.getRole(CassandraRoleManager.java:503) ~[apache-cassandra-3.10.jar:3.10]
... 47 common frames omitted
我不确定为什么会看到此错误,因为:
- 我的复制因子设置为 3(即我还有 2 个节点,每个节点都包含所有数据)
- 我的一致性级别设置为 QUORUM。 (为什么我看到的是 LOCAL_ONE?)
【问题讨论】:
标签: cassandra