cassandra 3.5 无法加载触发器 class

cassandra 3.5 fails to load trigger class

我正在尝试开始使用 Cassandra 触发器,但我无法让 Cassandra 加载它们。我已经从 here and here 构建了 jar 文件,并将它们放在 C:\Program Files\DataStax-DDC\apache-cassandra\conf\triggers 下。我已经重新启动 DataStax_DDC_Server 服务(在 Windows 上)并重新打开 CQLSH 命令行,但是尝试在 create trigger 命令中使用触发器 class 只给我:

ConfigurationException: <ErrorMessage code=2300 [Query invalid because of configuration issue] message="Trigger class 'org.apache.cassandra.triggers.InvertedIndex' doesn't exist">

我检查了 jar 文件,它们包含 class 文件。 我在 cassandra 的日志文件中唯一能找到的是 Trigger directory doesn't exist, please create it and try again. 但我不知道这是否相关。


编辑:在显示的最后一行 here 之后,我编辑了 cassandra.bat 文件。现在,如果我直接停止 DataStax_DDC_Server 服务和 运行 bat 文件,create trigger 命令就会成功。不过,该服务似乎独立于此 bat 文件。现在的问题是如何将相同的配置应用于服务?

创造性地谷歌搜索后,我找到了解决方案。如前所述 here you need to explicitly set the cassandra.triggers_dir variable, but for the service to pick it up, as explained here,您必须在注册表中配置它。所以答案是更新注册表项

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\DataStax_CDC_Server\Parameters\Java\Options

并添加行

-Dcassandra.triggers_dir=C:\Program Files\DataStax-DDC\apache-cassandra\conf\triggers

注意路径不要用引号括起来,否则会失效。 不要忘记重新启动服务。

以上解决方案适用于 window。在 window 中很难找到注册表选项。所以要找到注册表选项,请转到开始菜单并键入 "regedit" 它将打开注册表 window 然后您可以进行上述设置。