Unfortunately, it is not working even with "enable_user_defined_functions_threads: false" in cassandra.yaml :/ Is there any way to check the running configuration?
Le lun. 28 mars 2022 à 15:35, Benjamin Lerer <ble...@apache.org> a écrit : > I do not think that allowing to customize UDF classes whitelist has been > discussed before. Feel free to open a JIRA ticket :-) > I have some plans to revisit how we securise UDFs as the current threading > approach has some impact in terms of latency. That can be a good > opportunity to look into providing more flexibility. > > Le lun. 28 mars 2022 à 15:00, Sébastien Rebecchi <srebec...@kameleoon.com> > a écrit : > >> 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. >>>>>> >>>>>