You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2024/07/02 19:46:41 UTC

(cassandra) branch cassandra-4.1 updated (875793bc19 -> f378f92030)

This is an automated email from the ASF dual-hosted git repository.

maedhroz pushed a change to branch cassandra-4.1
in repository https://gitbox.apache.org/repos/asf/cassandra.git


    from 875793bc19 Merge branch 'cassandra-4.0' into cassandra-4.1
     new d54646e409 UnsupportedOperationException when reducing scope for LCS compactions
     new f378f92030 Merge branch 'cassandra-4.0' into cassandra-4.1

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGES.txt                                        |  1 +
 .../db/compaction/LeveledCompactionTask.java       |  2 +-
 .../test/LeveledCompactionTaskTest.java            | 92 ++++++++++++++++++++++
 3 files changed, 94 insertions(+), 1 deletion(-)
 create mode 100644 test/distributed/org/apache/cassandra/distributed/test/LeveledCompactionTaskTest.java


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


(cassandra) 01/01: Merge branch 'cassandra-4.0' into cassandra-4.1

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

maedhroz pushed a commit to branch cassandra-4.1
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit f378f92030f3813ebcff7be155f526500af7ac21
Merge: 875793bc19 d54646e409
Author: Caleb Rackliffe <ca...@gmail.com>
AuthorDate: Tue Jul 2 14:05:23 2024 -0500

    Merge branch 'cassandra-4.0' into cassandra-4.1
    
    * cassandra-4.0:
      UnsupportedOperationException when reducing scope for LCS compactions

 CHANGES.txt                                        |  1 +
 .../db/compaction/LeveledCompactionTask.java       |  2 +-
 .../test/LeveledCompactionTaskTest.java            | 92 ++++++++++++++++++++++
 3 files changed, 94 insertions(+), 1 deletion(-)

diff --cc CHANGES.txt
index 4028f905ef,52ec8bc211..cdceaa802d
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -11,13 -7,7 +11,14 @@@ Merged from 3.0
   * Upgrade OWASP to 10.0.0 (CASSANDRA-19738)
  
  
 -4.0.13
 +4.1.5
 + * Make queries visible to the "system_views.queries" virtual table at the coordinator level (CASSANDRA-19577)
 + * Concurrent equivalent schema updates lead to unresolved disagreement (CASSANDRA-19578)
 + * Fix hints delivery for a node going down repeatedly (CASSANDRA-19495)
 + * Do not go to disk for reading hints file sizes (CASSANDRA-19477)
 + * Fix system_views.settings to handle array types (CASSANDRA-19475)
 +Merged from 4.0:
++ * UnsupportedOperationException when reducing scope for LCS compactions (CASSANDRA-19704)
   * Make nodetool import congruent with the documentation by not relying on the folder structure of the imported SSTable files (CASSANDRA-19401)
   * IR may leak SSTables with pending repair when coming from streaming (CASSANDRA-19182)
   * Streaming exception race creates corrupt transaction log files that prevent restart (CASSANDRA-18736)
diff --cc test/distributed/org/apache/cassandra/distributed/test/LeveledCompactionTaskTest.java
index 0000000000,f1051e6109..dccad716e2
mode 000000,100644..100644
--- a/test/distributed/org/apache/cassandra/distributed/test/LeveledCompactionTaskTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/LeveledCompactionTaskTest.java
@@@ -1,0 -1,88 +1,92 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  *     http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+ 
+ package org.apache.cassandra.distributed.test;
+ 
+ import java.io.IOException;
+ 
+ import org.junit.Test;
+ 
+ import net.bytebuddy.ByteBuddy;
+ import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
+ import net.bytebuddy.implementation.MethodDelegation;
+ import org.apache.cassandra.db.Directories;
+ import org.apache.cassandra.db.Keyspace;
+ import org.apache.cassandra.distributed.Cluster;
+ import org.apache.cassandra.distributed.api.ConsistencyLevel;
+ 
+ import static net.bytebuddy.matcher.ElementMatchers.named;
+ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
+ import static org.junit.Assert.fail;
+ 
+ public class LeveledCompactionTaskTest extends TestBaseImpl
+ {
+     @Test
+     public void testBuildCompactionCandidatesForAvailableDiskSpace() throws IOException
+     {
 -        try (Cluster cluster = init(builder().withNodes(1).withInstanceInitializer(BB::install).start()))
++        try (Cluster cluster = init(builder().withNodes(1)
++                                             .withConfig(config -> config.set("autocompaction_on_startup_enabled", false))
++                                             .withInstanceInitializer(BB::install).start()))
+         {
+             cluster.schemaChange(withKeyspace("CREATE TABLE %s.tbl (id int primary key) WITH compaction = {'class':'LeveledCompactionStrategy', 'enabled':'false'}"));
+             for (int i = 0; i < 100; i++)
+             {
+                 cluster.coordinator(1).execute(withKeyspace("INSERT INTO %s.tbl (id) VALUES (?)"), ConsistencyLevel.ALL, i);
+                 if (i % 10 == 0)
+                     cluster.get(1).flush(KEYSPACE);
+             }
+             cluster.get(1).flush(KEYSPACE);
+             cluster.setUncaughtExceptionsFilter((exception) -> exception.getMessage() != null && exception.getMessage().contains("Not enough space for compaction"));
+ 
+             cluster.get(1).runOnInstance(() -> {
++                BB.hasDiskSpaceResult = false;
+                 try
+                 {
+                     Keyspace.open(KEYSPACE).getColumnFamilyStore("tbl").enableAutoCompaction(true);
+                     fail("This should fail, but only due to having no disk space");
+                 }
+                 catch (Exception e)
+                 {
+                     if (!(e.getMessage() != null && e.getMessage().contains("Not enough space for compaction")))
+                         throw e;
+                 }
+             });
 -
+         }
+     }
+ 
+     public static class BB
+     {
++        static volatile boolean hasDiskSpaceResult = true;
++
+         @SuppressWarnings("resource")
+         public static void install(ClassLoader cl, int id)
+         {
+             new ByteBuddy().rebase(Directories.class)
+                            .method(named("hasAvailableDiskSpace").and(takesArguments(2)))
+                            .intercept(MethodDelegation.to(BB.class))
+                            .make()
+                            .load(cl, ClassLoadingStrategy.Default.INJECTION);
+         }
+ 
+         @SuppressWarnings("unused")
+         public static boolean hasAvailableDiskSpace(long estimatedSSTables, long expectedTotalWriteSize)
+         {
 -            return false;
++            return hasDiskSpaceResult;
+         }
+     }
+ }


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