【发布时间】:2015-01-27 01:31:40
【问题描述】:
我正在研究 Cassandra 集群的概念证明 - 目前在 x64 java 1.0.7_60 上运行 Datastax 社区版(Cassandra 版本 2.0.7)作为两个节点集群(x2 Windows 7 机器)。到目前为止,一切都运行良好,但我的设计在很大程度上依赖于触发器,我绝对无法让 C* 正确识别它们。
我无法让 DevCenter (1.1.0) 识别 /triggers 文件夹中的任何内容。包含我自己的 ITrigger 实现的 jar 和我从 https://github.com/apache/cassandra/tree/trunk/examples/triggers 的 InvertedIndex 示例编译的 jar 也是如此。输入 CQL 命令(对于 InvertedIndex 示例)-
在 table1 上使用 'org.apache.cassandra.triggers.InvertedIndex' 创建 TRIGGER test1;
- 总是返回
我已经仔细检查过的事情 -
- 所有命名空间/表名/触发器类名都正确。
- 我将类名用单引号括起来,CQL 语句本身看起来不错。
- 我已将 jar 文件复制到两个节点上的 /triggers 文件夹中。
- 我检查了 Cassandra 日志,但看不到任何相关内容。
我只在 Windows 上运行,而我正在构建一些 Ubuntu 机器,这与在 Windows 上运行有什么关系吗?
任何建议都将不胜感激,我非常希望将此处理保留在数据库中而不是客户端。
【问题讨论】:
-
在将 .jar 文件复制到触发器目录后,您是否尝试过重新启动 Cassandra 或重新加载触发器 (
nodetool reloadtriggers)? Cassandra 需要这样才能看到新的触发器。 -
这在 cqlsh 中有效吗?只是想确保这是 DevCenter 的问题。
-
@BrianC - 感谢您的评论 - 我确实尝试通过 nodetool 重新加载,但根本没有任何触发器可以重新加载。
-
@phact - 我设法使用 cqlsh 添加我的触发器没有问题,它运行完美。我猜想把它归结为在 Windows 上运行的 DevCenter。再次感谢。