Thanks you very much! I will try that. As you know, would it be a long-terms solution? Or is there any plan to add the possibility to customize UDF classes whitelist?
Le lun. 28 mars 2022 à 14:31, Benjamin Lerer <ble...@apache.org> a écrit : > Is there a way to customize that default behaviour? > > > Looking at JavaBasedUDFunction quickly it seems that the ClassLoader is > only used when you use the UDFExecutorService to execute your UDFs. You > can try to disable it using "enable_user_defined_functions_threads: false" > and see if it works. > Now that also means that you have to ensure that only trusted persons can > create UDF or UDA as it removes all safety mechanisms. > > Le lun. 28 mars 2022 à 13:23, Sébastien Rebecchi <srebec...@kameleoon.com> > a écrit : > >> Hi Benjamin, >> >> Thanks for the answer. >> Is there a way to customize that default behaviour? If no, could you >> indicate where to find this class loader in the github of Cassandra please? >> >> Le lun. 28 mars 2022 à 12:40, Benjamin Lerer <ble...@apache.org> a >> écrit : >> >>> 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. >>>> >>>