>
> 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.
>>>
>>

Reply via email to