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