Can you open a JIRA please, would be great if you have a trivial trigger to
help us repro (so whoever goes to fix it doesnt need to write a fake
trigger class)?

https://issues.apache.org/jira/browse/CASSANDRA

On Thu, Dec 7, 2017 at 10:34 AM, tsubasa.nar...@us.fujitsu.com <
tsubasa.nar...@us.fujitsu.com> wrote:

> Hi,
>
>
>
> Thanks for your replay.
>
> I put jar file under conf/triggers before starting Cassandra then I could
> found following log
>
> INFO  [OptionalTasks:1] 2017-11-30 03:55:43,541 CustomClassLoader.java:87
> - Loading new jar /home/tnarita/cassandra/conf/triggers/TestTrigger.jar
>
>
>
> It looks like my jar files is added to Cassandra’s classloader but when
> Cassandra call my class, sometimes ClassNotFoundException happen.
>
> If I reboot Cassandra , I don’t get ClassNotFoundException and cassandara
> can call my class.
>
> So, I suspect function related to loading jar file have bugs.
>
>
>
> Thanks,
>
> Tsubasa Narita
>
>
>
> *From:* Jacques-Henri Berthemet [mailto:jacques-henri.
> berthe...@genesys.com]
> *Sent:* Wednesday, December 6, 2017 11:56 PM
> *To:* user@cassandra.apache.org
> *Subject:* RE: ClassNotFoundException when trigger is fired
>
>
>
> Hi,
>
>
>
> I have a custom secondary index that works well with Cassandra, I put the
> jar file in Cassandra’s lib folder before starting Cassandra, maybe you
> can try to do the same thing?
>
>
>
> I don’t think that Cassandra’s class loader is dynamic, you need to have
> your jars in the classpath before starting Cassandra.
>
>
>
> Regards,
>
> *--*
>
> *Jacques-Henri Berthemet*
>
>
>
> *From:* tsubasa.nar...@us.fujitsu.com [mailto:Tsubasa.Narita@us.
> fujitsu.com <tsubasa.nar...@us.fujitsu.com>]
> *Sent:* mercredi 6 décembre 2017 19:49
> *To:* user@cassandra.apache.org
> *Subject:* ClassNotFoundException when trigger is fired
>
>
>
> Dear All
>
>
>
> I use cassandra trigger to detect data change in DB and usually it works.
>
> But sometime I get ClassNotFoundException when trigger is fired.
>
>
>
> Following is what I did
>
> 1. create class which implement ITrigger interface. ex)class name is
> TestTrigger.java
>
> 2. create jar file and put it under conf/triggers ex)jar file name is
> TestTrigger.jar
>
> 3. start cassandra
>
> 4. I can find following log. Looks like jar file is loaded successfully
>
> INFO  [OptionalTasks:1] 2017-11-30 03:55:43,541 CustomClassLoader.java:87
> - Loading new jar /home/tnarita/cassandra/conf/triggers/TestTrigger.jar
>
> 5. login cql and create trigger for test table.
>
> 6. insert value into test table
>
> 7. trigger is fired.
>
> 8. I got ClassNotFoundException. following is the log
>
>
>
> java.lang.RuntimeException: Exception while executing trigger on table
> with ID: 1cb6a5a0-cb00-11e7-a737-49047aea57a8
>
>                 at org.apache.cassandra.triggers.TriggerExecutor.
> executeInternal(TriggerExecutor.java:241) ~[apache-cassandra-3.9.jar:3.9]
>
>                 at 
> org.apache.cassandra.triggers.TriggerExecutor.execute(TriggerExecutor.java:119)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.service.StorageProxy.
> mutateWithTriggers(StorageProxy.java:823) ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.cql3.statements.
> ModificationStatement.executeWithoutCondition(ModificationStatement.java:431)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.cql3.statements.
> ModificationStatement.execute(ModificationStatement.java:417)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.cql3.QueryProcessor.
> processStatement(QueryProcessor.java:188) ~[apache-cassandra-3.9.jar:3.9]
>
>                 at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:219)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:204)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.transport.messages.
> QueryMessage.execute(QueryMessage.java:115) ~[apache-cassandra-3.9.jar:3.
> 9]
>
>                 at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:513)
> [apache-cassandra-3.9.jar:3.9]
>
>                 at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:407)
> [apache-cassandra-3.9.jar:3.9]
>
>                 at io.netty.channel.SimpleChannelInboundHandler.
> channelRead(SimpleChannelInboundHandler.java:105)
> [netty-all-4.0.39.Final.jar:4.0.39.Final]
>
>                 at io.netty.channel.AbstractChannelHandlerContext.
> invokeChannelRead(AbstractChannelHandlerContext.java:366)
> [netty-all-4.0.39.Final.jar:4.0.39.Final]
>
>                 at io.netty.channel.AbstractChannelHandlerContext.
> access$600(AbstractChannelHandlerContext.java:35)
> [netty-all-4.0.39.Final.jar:4.0.39.Final]
>
>                 at io.netty.channel.AbstractChannelHandlerContext$7.run(
> AbstractChannelHandlerContext.java:357) [netty-all-4.0.39.Final.jar:4.
> 0.39.Final]
>
>                 at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> [na:1.8.0_66]
>
>                 at org.apache.cassandra.concurrent.
> AbstractLocalAwareExecutorService$FutureTask.run(
> AbstractLocalAwareExecutorService.java:164) [apache-cassandra-3.9.jar:3.9]
>
>                 at 
> org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:109)
> [apache-cassandra-3.9.jar:3.9]
>
>                 at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]
>
> Caused by: java.lang.ClassNotFoundException: com.test.TestTrigger
>
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
> ~[na:1.8.0_66]
>
>                 at org.apache.cassandra.triggers.CustomClassLoader.
> loadClassInternal(CustomClassLoader.java:118)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.triggers.
> CustomClassLoader.loadClass(CustomClassLoader.java:103)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.triggers.TriggerExecutor.
> loadTriggerInstance(TriggerExecutor.java:254)
> ~[apache-cassandra-3.9.jar:3.9]
>
>                 at org.apache.cassandra.triggers.TriggerExecutor.
> executeInternal(TriggerExecutor.java:226) ~[apache-cassandra-3.9.jar:3.9]
>
>                 ... 18 common frames omitted
>
>
>
>
>
> When I get this issue, restarting cassandra resolve this issue.
>
> TestTrigger.java output dummy log in static initializer. When I don't get
> this issue, I can find dummy log after Step4.
>
> But when I get this issue, I can't find it.
>
> I checked system.log and debug.log but there weren't any error log which
> indicate jar loading failure.
>
>
>
> I would like to know whether this is known issue or not.
>
> Does anyone know this issue?
>
>
>
> Thanks
>
> Tsubasa Narita
>

Reply via email to