Hi Sébastien, Cassandra uses a special classloader for UDFs that limit which classes can be used. You cannot rely on non-JDK classes for UDFs and some of the JDK packages like the IO package for example cannot be used. The goal is simply to ensure that UDFs cannot compromise the server security.
Le lun. 28 mars 2022 à 11:31, Sébastien Rebecchi <srebec...@kameleoon.com> a écrit : > Hello, > > I am trying to create a UDF based on custom methods. > So I set enable_user_defined_functions to true and added a jar in > "/usr/share/cassandra/lib/" folder on every node, restarted the nodes and I > can see from the command line that the jar is indeed used (in the classpath > with -cp). > > But when i create the UDF I got that error: > > CREATE OR REPLACE FUNCTION blobToJson (input blob) RETURNS NULL ON NULL > INPUT RETURNS text LANGUAGE java AS 'return > com.kameleoon.visit.Visit.writeToJson(com.kameleoon.visit.Visit.readFromByteBuffer(input));'; > InvalidRequest: Error from server: code=2200 [Invalid query] message="Java > source compilation failed: > Line 1: com.kameleoon.visit.Visit cannot be resolved to a type > Line 1: com.kameleoon.visit.Visit cannot be resolved to a type > > Of course the class com.kameleoon.visit.Visit does exist in the jar and > the jar has read rights to every user (chmod 444). So I can not find the > reason. > > versions are: [cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native > protocol v5] > > Any help would be appreciated! > > Thanks! > > Sébastien. >