在多节点拓扑中更改 cassandra 中的列族
Altering a column family in cassandra in a multiple node topology
我在尝试更改 cassandra 时遇到以下问题:
我正在直接改变 table:
ALTER TABLE posts ADD is_black BOOLEAN;
在单节点环境中,在 EC2 服务器和本地主机上一切正常 - select、删除等。
当我在具有 3 个节点的集群上进行更改时 - 东西变得越来越多。
当我执行
select().all().from(tableName).where..
我遇到以下异常:
java.lang.IllegalArgumentException: is_black is not a column defined in this metadata
at com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:273)
at com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:279)
at com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:69)
at com.datastax.driver.core.AbstractGettableData.getString(AbstractGettableData.java:137)
显然我不是唯一有这种行为的人:
reference
p.s - 放弃创建密钥空间对我来说是不可能的,因为我无法删除 table 中包含的数据。
错误已解决:-)
我的问题是 DataStax 在包含每个节点配置的内存缓存中维护,当我更改 table 时此缓存未更新,因为我使用的是 cqlsh 而不是他们的 SDK。
重新启动所有节点后,内存缓存被删除,bug 已解决。
我在尝试更改 cassandra 时遇到以下问题: 我正在直接改变 table:
ALTER TABLE posts ADD is_black BOOLEAN;
在单节点环境中,在 EC2 服务器和本地主机上一切正常 - select、删除等。
当我在具有 3 个节点的集群上进行更改时 - 东西变得越来越多。 当我执行
select().all().from(tableName).where..
我遇到以下异常:
java.lang.IllegalArgumentException: is_black is not a column defined in this metadata
at com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:273)
at com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:279)
at com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:69)
at com.datastax.driver.core.AbstractGettableData.getString(AbstractGettableData.java:137)
显然我不是唯一有这种行为的人: reference
p.s - 放弃创建密钥空间对我来说是不可能的,因为我无法删除 table 中包含的数据。
错误已解决:-)
我的问题是 DataStax 在包含每个节点配置的内存缓存中维护,当我更改 table 时此缓存未更新,因为我使用的是 cqlsh 而不是他们的 SDK。
重新启动所有节点后,内存缓存被删除,bug 已解决。