2013-03-19 175 views
0

正试图在卡桑德拉执行触发器。执行卡桑德拉触发器时出错

一直在尝试使用可用的卡桑德拉帮助:https://github.com/hmsonline/cassandra-triggers

然而,当我试图设置触发值,并检查日志,以下是我收到的错误。

DEBUG [Thrift:2] 2013-03-19 15:07:27,753 CassandraServerTriggerAspect.java (line 69) Mutation for [triggers] with consistencyLevel [ONE] 
DEBUG [Thrift:2] 2013-03-19 15:08:08,873 ConfigurationStore.java (line 66) Refreshing trigger configuration. 
DEBUG [Thrift:2] 2013-03-19 15:08:08,876 ConfigurationStore.java (line 92) Triggers.isCommitLogEnabled? [true] 
DEBUG [Thrift:2] 2013-03-19 15:08:08,876 CassandraServerTriggerAspect.java (line 69) Mutation for [world] with consistencyLevel [ONE] 
DEBUG [Thrift:2] 2013-03-19 15:08:08,882 LogEntryStore.java (line 84) Host ID: CTSINGMRGTO 
DEBUG [Thrift:2] 2013-03-19 15:08:08,882 CassandraStore.java (line 59) Did not create [triggers:CommitLog_CTSINGMRGTO] (probably already there) 
INFO [Thrift:2] 2013-03-19 15:08:08,884 CassandraStore.java (line 93) Did not create [triggers:CommitLog_CTSINGMRGTO] (probably already there) 
WARN [Thrift:2] 2013-03-19 15:08:08,884 CommitLog.java (line 38) Instantiated commit log [CommitLog_CTSINGMRGTO] 
DEBUG [Thrift:2] 2013-03-19 15:08:08,886 TriggerTask.java (line 32) Spawning [20] threads for commit log processing. 
DEBUG [Thrift:2] 2013-03-19 15:08:08,890 CommitLog.java (line 41) Started Trigger Task thread. 
ERROR [Thrift:2] 2013-03-19 15:08:08,892 CassandraServerTriggerAspect.java (line 61) Could not write to cassandra! Method: org.apache.cassandra.thrift.CassandraServer.doInsert() 
java.lang.ClassCastException: java.util.UUID cannot be cast to java.lang.Integer 
     at com.hmsonline.cassandra.triggers.dao.CommitLog.writePending(CommitLog.java:63) 
     at com.hmsonline.cassandra.triggers.CassandraServerTriggerAspect.writePending(CassandraServerTriggerAspect.java:72) 
     at com.hmsonline.cassandra.triggers.CassandraServerTriggerAspect.ajc$inlineAccessMethod$com_hmsonline_cassandra_triggers_CassandraServerTriggerAspect$com_hmsonline_cassandra_triggers_CassandraServerTriggerAspect$writePending(CassandraServerTriggerAspect.java:1) 
     at com.hmsonline.cassandra.triggers.CassandraServerTriggerAspect.writeToCommitLog(CassandraServerTriggerAspect.java:34) 
     at org.apache.cassandra.thrift.CassandraServer.doInsert(CassandraServer.java:854) 
     at org.apache.cassandra.thrift.CassandraServer.internal_insert(CassandraServer.java:624) 
     at org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:645) 
     at org.apache.cassandra.thrift.Cassandra$Processor$insert.getResult(Cassandra.java:3526) 
     at org.apache.cassandra.thrift.Cassandra$Processor$insert.getResult(Cassandra.java:3514) 
     at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32) 
     at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34) 
     at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:199) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:722) 
WARN [Thread-23] 2013-03-19 15:08:08,895 TriggerTask.java (line 62) Could not execute triggers [null] 
ERROR [Thrift:2] 2013-03-19 15:08:08,896 CustomTThreadPoolServer.java (line 217) Error occurred during processing of message. 

进行进一步的诊断,在卡桑德拉-CLI显示的错误是:


org.apache.thrift.transport.TTransportException 
     at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) 
     at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
     at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129) 
     at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) 
     at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
     at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) 
     at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) 
     at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204) 
     at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
     at org.apache.cassandra.thrift.Cassandra$Client.recv_insert(Cassandra.java:839) 
     at org.apache.cassandra.thrift.Cassandra$Client.insert(Cassandra.java:823) 
     at org.apache.cassandra.cli.CliClient.executeSet(CliClient.java:975) 
     at org.apache.cassandra.cli.CliClient.executeCLIStatement(CliClient.java:218) 
     at org.apache.cassandra.cli.CliMain.processStatementInteractive(CliMain.java:210) 
     at org.apache.cassandra.cli.CliMain.main(CliMain.java:337)

回答

0

在由您提供的日志信息,清楚地提到

java.lang.ClassCastException: java.util.UUID cannot be cast to java.lang.Integer 

对于一个更好的回应,你必须分享脚本和插入代码

+0

谢谢你的回复...我也不是很熟悉Java .. 但是,正如我已经提到的,我发现这个错误,同时尝试运行Cassandra帮助页面中给出的示例命令触发器:[Cassandra触发器](https://github.com/hmsonline/cassandra-triggers/wiki/GettingStarted) 和我执行的命令与该页面中给出的命令相同.. 只有当我尝试运行最后一个时,才会弹出错误命令: 'set hello ['test'] ['triggers'] ='123';' – Tanny 2013-03-20 06:13:52

+0

实际上它不是一个脚本,我只是试图从Cassandra客户端提示符实现它。这些命令是: 'create keyspace world; 使用世界; 使用column_type ='Standard'和comparator ='UTF8Type'和default_validation_class ='UTF8Type'和key_validation_class ='UTF8Type'创建列族hello。 set hello ['test'] ['triggers'] ='123'; 使用触发器; set Configuration ['CommitLog'] ['enabled'] ='true'; 使用column_type ='Standard'和comparator ='UTF8Type'和default_validation_class ='UTF8Type'和key_validation_class ='UTF8Type'来创建列族触发器;' Tanny 2013-03-20 06:28:39

+0

'set Triggers ['world:hello'] ['com.hmsonline。 cassandra.triggers.TestTrigger '] =' 启用'; 使用世界; set hello ['test'] ['triggers'] ='123';' – Tanny 2013-03-20 06:32:51