You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2022/12/07 11:26:15 UTC

[cassandra] branch trunk updated: Set the major compaction type correctly for compactionstats

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

brandonwilliams pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 3f83396b76 Set the major compaction type correctly for compactionstats
3f83396b76 is described below

commit 3f83396b76115a25b8189410c68775f87f31f8ac
Author: maxwellguo <cc...@gmail.com>
AuthorDate: Thu Nov 17 21:04:23 2022 +0800

    Set the major compaction type correctly for compactionstats
    
    Patch by Maxwell Guo; reviewed by brandonwilliams and blambov for CASSANDRA-18055
---
 CHANGES.txt                                                       | 1 +
 .../org/apache/cassandra/db/compaction/CompactionIterator.java    | 7 +++++--
 .../org/apache/cassandra/db/compaction/CompactionManager.java     | 3 +++
 .../apache/cassandra/db/compaction/CompactionStrategyManager.java | 5 ++++-
 .../org/apache/cassandra/db/compaction/CompactionTaskTest.java    | 8 ++++++++
 5 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index ce975c6fa1..02655851b1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.2
+ * Set the major compaction type correctly for compactionstats (CASSANDRA-18055)
  * Print exception message without stacktrace when nodetool commands fail on probe.getOwnershipWithPort() (CASSANDRA-18079)
  * Add option to print level in nodetool getsstables output (CASSANDRA-18023)
  * Implement a guardrail for not having zero default_time_to_live on tables with TWCS (CASSANDRA-18042)
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java b/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java
index bceb2b6a97..4d1b2ac132 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java
@@ -202,9 +202,12 @@ public class CompactionIterator extends CompactionInfo.Holder implements Unfilte
 
                 CompactionIterator.this.updateCounterFor(merged);
 
-                if (type != OperationType.COMPACTION || !controller.cfs.indexManager.hasIndexes())
+                if ( (type != OperationType.COMPACTION && type != OperationType.MAJOR_COMPACTION) 
+                    || !controller.cfs.indexManager.hasIndexes() ) 
+                {
                     return null;
-
+                }
+                
                 Columns statics = Columns.NONE;
                 Columns regulars = Columns.NONE;
                 for (int i=0, isize=versions.size(); i<isize; i++)
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index 2e1d94e807..b7d1a24b7b 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -985,7 +985,10 @@ public class CompactionManager implements CompactionManagerMBean
                 {
                     for (AbstractCompactionTask task : tasks)
                         if (task != null)
+                        {
+                            task.setCompactionType(OperationType.MAJOR_COMPACTION);
                             task.execute(active);
+                        }
                 }
             };
 
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
index 08ab2c22fe..e98e4dd10f 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
@@ -1016,7 +1016,10 @@ public class CompactionStrategyManager implements INotificationConsumer
             {
                 for (AbstractStrategyHolder holder : holders)
                 {
-                    tasks.addAll(holder.getMaximalTasks(gcBefore, splitOutput));
+                    for (AbstractCompactionTask task: holder.getMaximalTasks(gcBefore, splitOutput)) 
+                    {
+                        tasks.add(task.setCompactionType(operationType));
+                    }
                 }
             }
             finally
diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionTaskTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionTaskTest.java
index 24b0c3dfed..ca75453600 100644
--- a/test/unit/org/apache/cassandra/db/compaction/CompactionTaskTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/CompactionTaskTest.java
@@ -191,4 +191,12 @@ public class CompactionTaskTest
             cfs.getTracker().removeUnsafe(sstables);
         }
     }
+    
+    @Test
+    public void testMajorCompactTask()
+    {
+        //major compact without range/pk specified 
+        CompactionTasks compactionTasks = cfs.getCompactionStrategyManager().getMaximalTasks(Integer.MAX_VALUE, false, OperationType.MAJOR_COMPACTION);
+        Assert.assertTrue(compactionTasks.stream().allMatch(task -> task.compactionType.equals(OperationType.MAJOR_COMPACTION)));
+    }
 }


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