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

Reply via email to