[ 
https://issues.apache.org/jira/browse/CASSANDRA-18264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Miklosovic updated CASSANDRA-18264:
------------------------------------------
          Fix Version/s: 4.1.1
                         4.2
                             (was: 4.x)
                             (was: 4.1.x)
          Since Version: 4.1-alpha1
    Source Control Link: 
https://github.com/apache/cassandra/commit/9860c1e9d9fb45342fa674782ecd135cf6875943
             Resolution: Fixed
                 Status: Resolved  (was: Ready to Commit)

> CustomClassLoader does not load jars rendering triggers from JARs broken
> ------------------------------------------------------------------------
>
>                 Key: CASSANDRA-18264
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18264
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Legacy/Core
>            Reporter: Stefan Miklosovic
>            Assignee: Stefan Miklosovic
>            Priority: Normal
>             Fix For: 4.1.1, 4.2
>
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> A user had to downgrade to 4.0.7 from 4.1.0 because they hit a problem with 
> CustomClassLoader for triggers. 
> User says that in Apache Cassandra 4.1.0 the trigger mechanism does not work, 
> not their trigger, but the possibility of loading any trigger in Cassandra.
> In the Cassandra 4.1.0 version of CustomClassLoader 
> (https://github.com/apache/cassandra/blob/cassandra-4.1/src/java/org/apache/cassandra/triggers/CustomClassLoader.java)
>  the code is changed in such a way that when copying the JAR Cassandra uses 
> java.nio.file.Files, while earlier versions (cassandra 4.0.X or 3.X) used 
> Guava com.google.common.io.Files to copy the JAR file.
> The difference between one and the other is that Guava by default overwrites 
> the file if it already exists and user has permissions to do so, and in Java 
> by default it does not overwrite.
> Copying is done here (1) from inputJar to out. However, the problem is that 
> we are getting temporary file from here (2) and the implementation loops 
> unless it succeeds to create an empty file. (3) - But that fails to copy the 
> file to out because copying does not work when the target file already exists.
> (1) 
> https://github.com/apache/cassandra/blob/cassandra-4.1/src/java/org/apache/cassandra/triggers/CustomClassLoader.java#L86
> (2) 
> https://github.com/apache/cassandra/blob/cassandra-4.1/src/java/org/apache/cassandra/triggers/CustomClassLoader.java#L81
> (3) 
> https://github.com/apache/cassandra/blob/cassandra-4.1/src/java/org/apache/cassandra/io/util/FileUtils.java#L152



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to