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

capistrant pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new b9c702f6b71 `CascadingReindexingTemplate` update to drop support for 
native engine + nuke `ReindexingIOConfigRule` (#19078)
b9c702f6b71 is described below

commit b9c702f6b71e7de49e92559e451e3114b7304bfc
Author: Lucas Capistrant <[email protected]>
AuthorDate: Thu Mar 5 08:57:11 2026 -0600

    `CascadingReindexingTemplate` update to drop support for native engine + 
nuke `ReindexingIOConfigRule` (#19078)
    
    * checkpoint removing io config rule and removing support for native in 
cascading reindexing
    
    * fix indentation
---
 .../embedded/compact/CompactionSupervisorTest.java |  30 ++--
 .../compact/CascadingReindexingTemplate.java       |  10 +-
 .../indexing/compact/ReindexingConfigBuilder.java  |   9 --
 .../compact/CascadingReindexingTemplateTest.java   |  39 +----
 .../compact/ReindexingConfigBuilderTest.java       |  24 +--
 .../ComposingReindexingRuleProvider.java           |  21 ---
 .../compaction/InlineReindexingRuleProvider.java   |  28 ----
 .../server/compaction/ReindexingIOConfigRule.java  | 109 -------------
 .../server/compaction/ReindexingRuleProvider.java  |  21 ---
 .../ComposingReindexingRuleProviderTest.java       |  37 +----
 .../InlineReindexingRuleProviderTest.java          |  21 ---
 .../compaction/ReindexingIOConfigRuleTest.java     | 172 ---------------------
 12 files changed, 28 insertions(+), 493 deletions(-)

diff --git 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/compact/CompactionSupervisorTest.java
 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/compact/CompactionSupervisorTest.java
index 37c28ee61bb..35273779997 100644
--- 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/compact/CompactionSupervisorTest.java
+++ 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/compact/CompactionSupervisorTest.java
@@ -56,7 +56,6 @@ import 
org.apache.druid.segment.transform.CompactionTransformSpec;
 import org.apache.druid.segment.virtual.ExpressionVirtualColumn;
 import org.apache.druid.server.compaction.InlineReindexingRuleProvider;
 import org.apache.druid.server.compaction.ReindexingDeletionRule;
-import org.apache.druid.server.compaction.ReindexingIOConfigRule;
 import org.apache.druid.server.compaction.ReindexingSegmentGranularityRule;
 import org.apache.druid.server.compaction.ReindexingTuningConfigRule;
 import org.apache.druid.server.coordinator.ClusterCompactionConfig;
@@ -247,14 +246,13 @@ public class CompactionSupervisorTest extends 
EmbeddedClusterTestBase
     verifySegmentsHaveNullLastCompactionStateAndNonNullFingerprint();
   }
 
-  @MethodSource("getEngine")
-  @ParameterizedTest(name = "compactionEngine={0}")
-  public void 
test_cascadingCompactionTemplate_multiplePeriodsApplyDifferentCompactionRules(CompactionEngine
 compactionEngine)
+  @Test
+  public void 
test_cascadingCompactionTemplate_multiplePeriodsApplyDifferentCompactionRules()
   {
-    // Configure cluster with storeCompactionStatePerSegment=false
+    // Configure cluster with MSQ engine and 
storeCompactionStatePerSegment=false
     final UpdateResponse updateResponse = cluster.callApi().onLeaderOverlord(
         o -> o.updateClusterCompactionConfig(
-            new ClusterCompactionConfig(1.0, 100, null, true, 
compactionEngine, false)
+            new ClusterCompactionConfig(1.0, 100, null, true, 
CompactionEngine.MSQ, false)
         )
     );
     Assertions.assertTrue(updateResponse.isSuccess());
@@ -317,23 +315,18 @@ public class CompactionSupervisorTest extends 
EmbeddedClusterTestBase
         null
     );
 
-    InlineReindexingRuleProvider.Builder ruleProvider = 
InlineReindexingRuleProvider.builder()
-                                                                            
.segmentGranularityRules(List.of(hourRule, dayRule))
-                                                                            
.tuningConfigRules(List.of(tuningConfigRule))
-                                                                            
.deletionRules(List.of(deletionRule));
-
-    if (compactionEngine == CompactionEngine.NATIVE) {
-      ruleProvider = ruleProvider.ioConfigRules(
-          List.of(new ReindexingIOConfigRule("dropExisting", null, 
Period.days(7), new UserCompactionTaskIOConfig(true)))
-      );
-    }
+    InlineReindexingRuleProvider ruleProvider = InlineReindexingRuleProvider
+        .builder()
+        .segmentGranularityRules(List.of(hourRule, dayRule))
+        .tuningConfigRules(List.of(tuningConfigRule))
+        .deletionRules(List.of(deletionRule))
+        .build();
 
     CascadingReindexingTemplate cascadingReindexingTemplate = new 
CascadingReindexingTemplate(
         dataSource,
         null,
         null,
-        ruleProvider.build(),
-        compactionEngine,
+        ruleProvider,
         null,
         null,
         null,
@@ -412,7 +405,6 @@ public class CompactionSupervisorTest extends 
EmbeddedClusterTestBase
                                     .deletionRules(List.of(deletionRule))
                                     
.tuningConfigRules(List.of(tuningConfigRule))
                                     .build(),
-        compactionEngine,
         null,
         null,
         null,
diff --git 
a/indexing-service/src/main/java/org/apache/druid/indexing/compact/CascadingReindexingTemplate.java
 
b/indexing-service/src/main/java/org/apache/druid/indexing/compact/CascadingReindexingTemplate.java
index 16307fa1539..94e0f739688 100644
--- 
a/indexing-service/src/main/java/org/apache/druid/indexing/compact/CascadingReindexingTemplate.java
+++ 
b/indexing-service/src/main/java/org/apache/druid/indexing/compact/CascadingReindexingTemplate.java
@@ -92,8 +92,6 @@ public class CascadingReindexingTemplate implements 
CompactionJobTemplate, DataS
   private final ReindexingRuleProvider ruleProvider;
   @Nullable
   private final Map<String, Object> taskContext;
-  @Nullable
-  private final CompactionEngine engine;
   private final int taskPriority;
   private final long inputSegmentSizeBytes;
   private final Period skipOffsetFromLatest;
@@ -106,7 +104,6 @@ public class CascadingReindexingTemplate implements 
CompactionJobTemplate, DataS
       @JsonProperty("taskPriority") @Nullable Integer taskPriority,
       @JsonProperty("inputSegmentSizeBytes") @Nullable Long 
inputSegmentSizeBytes,
       @JsonProperty("ruleProvider") ReindexingRuleProvider ruleProvider,
-      @JsonProperty("engine") @Nullable CompactionEngine engine,
       @JsonProperty("taskContext") @Nullable Map<String, Object> taskContext,
       @JsonProperty("skipOffsetFromLatest") @Nullable Period 
skipOffsetFromLatest,
       @JsonProperty("skipOffsetFromNow") @Nullable Period skipOffsetFromNow,
@@ -119,7 +116,6 @@ public class CascadingReindexingTemplate implements 
CompactionJobTemplate, DataS
     InvalidInput.conditionalException(ruleProvider != null, "'ruleProvider' 
cannot be null");
     this.ruleProvider = ruleProvider;
 
-    this.engine = engine;
     this.taskContext = taskContext;
     this.taskPriority = Objects.requireNonNullElse(taskPriority, 
DEFAULT_COMPACTION_TASK_PRIORITY);
     this.inputSegmentSizeBytes = 
Objects.requireNonNullElse(inputSegmentSizeBytes, 
DEFAULT_INPUT_SEGMENT_SIZE_BYTES);
@@ -149,12 +145,10 @@ public class CascadingReindexingTemplate implements 
CompactionJobTemplate, DataS
     return taskContext;
   }
 
-  @JsonProperty
-  @Nullable
   @Override
   public CompactionEngine getEngine()
   {
-    return engine;
+    return CompactionEngine.MSQ;
   }
 
   @JsonProperty
@@ -347,7 +341,7 @@ public class CascadingReindexingTemplate implements 
CompactionJobTemplate, DataS
         .forDataSource(dataSource)
         .withTaskPriority(taskPriority)
         .withInputSegmentSizeBytes(inputSegmentSizeBytes)
-        .withEngine(engine)
+        .withEngine(CompactionEngine.MSQ)
         .withTaskContext(taskContext)
         .withSkipOffsetFromLatest(Period.ZERO); // We handle skip offsets at 
the timeline level, we know we want to cover the entirety of the interval
   }
diff --git 
a/indexing-service/src/main/java/org/apache/druid/indexing/compact/ReindexingConfigBuilder.java
 
b/indexing-service/src/main/java/org/apache/druid/indexing/compact/ReindexingConfigBuilder.java
index 8fec4553210..c0217170bc0 100644
--- 
a/indexing-service/src/main/java/org/apache/druid/indexing/compact/ReindexingConfigBuilder.java
+++ 
b/indexing-service/src/main/java/org/apache/druid/indexing/compact/ReindexingConfigBuilder.java
@@ -30,7 +30,6 @@ import 
org.apache.druid.segment.transform.CompactionTransformSpec;
 import org.apache.druid.server.compaction.IntervalGranularityInfo;
 import org.apache.druid.server.compaction.ReindexingDataSchemaRule;
 import org.apache.druid.server.compaction.ReindexingDeletionRule;
-import org.apache.druid.server.compaction.ReindexingIOConfigRule;
 import org.apache.druid.server.compaction.ReindexingRule;
 import org.apache.druid.server.compaction.ReindexingRuleProvider;
 import org.apache.druid.server.compaction.ReindexingTuningConfigRule;
@@ -137,14 +136,6 @@ class ReindexingConfigBuilder
       count++;
     }
 
-    // Apply IO config rule
-    ReindexingIOConfigRule ioConfigRule = provider.getIOConfigRule(interval, 
referenceTime);
-    if (ioConfigRule != null) {
-      builder.withIoConfig(ioConfigRule.getIoConfig());
-      appliedRules.add(ioConfigRule);
-      count++;
-    }
-
     // Apply data schema rules
     ReindexingDataSchemaRule dataSchemaRule = 
provider.getDataSchemaRule(interval, referenceTime);
     if (dataSchemaRule != null) {
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/compact/CascadingReindexingTemplateTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/compact/CascadingReindexingTemplateTest.java
index 01b36100444..14d285a7517 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/compact/CascadingReindexingTemplateTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/compact/CascadingReindexingTemplateTest.java
@@ -88,7 +88,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
                 )
             ))
             .build(),
-        CompactionEngine.NATIVE,
         ImmutableMap.of("context_key", "context_value"),
         null,
         null,
@@ -123,7 +122,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
                 )
             ))
             .build(),
-        CompactionEngine.MSQ,
         ImmutableMap.of("key", "value"),
         null,
         null,
@@ -161,7 +159,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -186,7 +183,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
             null,
             mockProvider,
             null,
-            null,
             Period.days(7),  // skipOffsetFromLatest
             Period.days(3),   // skipOffsetFromNow
             Granularities.DAY
@@ -213,7 +209,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
             null,
             null,
             null,
-            null,
             Granularities.DAY
         )
     );
@@ -235,7 +230,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
             null,
             null,
             null,
-            null,
             Granularities.DAY
         )
     );
@@ -259,7 +253,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
             null,
             null,
             null,
-            null,
             null  // null defaultSegmentGranularity
         )
     );
@@ -278,7 +271,7 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     DruidInputSource mockSource = createMockSource();
 
     TestCascadingReindexingTemplate template = new 
TestCascadingReindexingTemplate(
-        "testDS", null, null, mockProvider, null, null, null, null
+        "testDS", null, null, mockProvider, null, null, null
     );
 
     template.createCompactionJobs(mockSource, mockParams);
@@ -304,7 +297,7 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     DruidInputSource mockSource = createMockSource();
 
     TestCascadingReindexingTemplate template = new 
TestCascadingReindexingTemplate(
-        "testDS", null, null, mockProvider, null, null, Period.days(100), null
+        "testDS", null, null, mockProvider, null, Period.days(100), null
     );
 
     List<CompactionJob> jobs = template.createCompactionJobs(mockSource, 
mockParams);
@@ -325,7 +318,7 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     DruidInputSource mockSource = createMockSource();
 
     TestCascadingReindexingTemplate template = new 
TestCascadingReindexingTemplate(
-        "testDS", null, null, mockProvider, null, null, Period.days(5), null
+        "testDS", null, null, mockProvider, null, Period.days(5), null
     );
 
     template.createCompactionJobs(mockSource, mockParams);
@@ -348,7 +341,7 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     DruidInputSource mockSource = createMockSource();
 
     TestCascadingReindexingTemplate template = new 
TestCascadingReindexingTemplate(
-        "testDS", null, null, mockProvider, null, null, Period.days(15), null
+        "testDS", null, null, mockProvider, null, Period.days(15), null
     );
 
     template.createCompactionJobs(mockSource, mockParams);
@@ -371,7 +364,7 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     DruidInputSource mockSource = createMockSource();
 
     TestCascadingReindexingTemplate template = new 
TestCascadingReindexingTemplate(
-        "testDS", null, null, mockProvider, null, null, null, Period.days(100)
+        "testDS", null, null, mockProvider, null, null, Period.days(100)
     );
 
     List<CompactionJob> jobs = template.createCompactionJobs(mockSource, 
mockParams);
@@ -392,7 +385,7 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     DruidInputSource mockSource = createMockSource();
 
     TestCascadingReindexingTemplate template = new 
TestCascadingReindexingTemplate(
-        "testDS", null, null, mockProvider, null, null, null, Period.days(20)
+        "testDS", null, null, mockProvider, null, null, Period.days(20)
     );
 
     template.createCompactionJobs(mockSource, mockParams);
@@ -415,7 +408,7 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     DruidInputSource mockSource = createMockSource();
 
     TestCascadingReindexingTemplate template = new 
TestCascadingReindexingTemplate(
-        "testDS", null, null, mockProvider, null, null, null, Period.days(20)
+        "testDS", null, null, mockProvider, null, null, Period.days(20)
     );
 
     template.createCompactionJobs(mockSource, mockParams);
@@ -481,7 +474,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -572,7 +564,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -672,7 +663,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -764,7 +754,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.HOUR
     );
 
@@ -870,7 +859,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.HOUR
     );
 
@@ -940,7 +928,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1005,7 +992,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1072,7 +1058,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1143,7 +1128,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1207,7 +1191,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1271,7 +1254,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1356,7 +1338,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1429,7 +1410,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.MONTH  // MONTH is coarser than HOUR!
     );
 
@@ -1490,7 +1470,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         null,
         null,
         null,
-        null,
         Granularities.DAY
     );
 
@@ -1517,14 +1496,13 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
         Integer taskPriority,
         Long inputSegmentSizeBytes,
         ReindexingRuleProvider ruleProvider,
-        CompactionEngine engine,
         Map<String, Object> taskContext,
         Period skipOffsetFromLatest,
         Period skipOffsetFromNow
     )
     {
       super(dataSource, taskPriority, inputSegmentSizeBytes, ruleProvider,
-            engine, taskContext, skipOffsetFromLatest, skipOffsetFromNow, 
Granularities.DAY);
+            taskContext, skipOffsetFromLatest, skipOffsetFromNow, 
Granularities.DAY);
     }
 
     public List<Interval> getProcessedIntervals()
@@ -1597,7 +1575,6 @@ public class CascadingReindexingTemplateTest extends 
InitializedNullHandlingTest
     // Return a fresh stream on each call to avoid "stream has already been 
operated upon or closed" errors
     EasyMock.expect(mockProvider.streamAllRules()).andAnswer(() -> 
segmentGranularityRules.stream().map(r -> (ReindexingRule) r)).anyTimes();
     
EasyMock.expect(mockProvider.getSegmentGranularityRule(EasyMock.anyObject(), 
EasyMock.anyObject())).andReturn(segmentGranularityRules.get(0)).anyTimes();
-    EasyMock.expect(mockProvider.getIOConfigRule(EasyMock.anyObject(), 
EasyMock.anyObject())).andReturn(null).anyTimes();
     EasyMock.expect(mockProvider.getTuningConfigRule(EasyMock.anyObject(), 
EasyMock.anyObject())).andReturn(null).anyTimes();
     EasyMock.expect(mockProvider.getDataSchemaRule(EasyMock.anyObject(), 
EasyMock.anyObject())).andReturn(null).anyTimes();
     EasyMock.expect(mockProvider.getDeletionRules(EasyMock.anyObject(), 
EasyMock.anyObject())).andReturn(Collections.emptyList()).anyTimes();
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingConfigBuilderTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingConfigBuilderTest.java
index c9bc0c69f11..091b110aded 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingConfigBuilderTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/compact/ReindexingConfigBuilderTest.java
@@ -34,13 +34,11 @@ import 
org.apache.druid.server.compaction.InlineReindexingRuleProvider;
 import org.apache.druid.server.compaction.IntervalGranularityInfo;
 import org.apache.druid.server.compaction.ReindexingDataSchemaRule;
 import org.apache.druid.server.compaction.ReindexingDeletionRule;
-import org.apache.druid.server.compaction.ReindexingIOConfigRule;
 import org.apache.druid.server.compaction.ReindexingRuleProvider;
 import org.apache.druid.server.compaction.ReindexingSegmentGranularityRule;
 import org.apache.druid.server.compaction.ReindexingTuningConfigRule;
 import 
org.apache.druid.server.coordinator.InlineSchemaDataSourceCompactionConfig;
 import org.apache.druid.server.coordinator.UserCompactionTaskDimensionsConfig;
-import org.apache.druid.server.coordinator.UserCompactionTaskIOConfig;
 import org.apache.druid.server.coordinator.UserCompactionTaskQueryTuningConfig;
 import org.joda.time.DateTime;
 import org.joda.time.Interval;
@@ -151,7 +149,7 @@ public class ReindexingConfigBuilderTest
 
     int count = configBuilder.applyTo(builder);
 
-    Assertions.assertEquals(6, count);
+    Assertions.assertEquals(5, count);
 
     InlineSchemaDataSourceCompactionConfig config = builder.build();
 
@@ -168,7 +166,6 @@ public class ReindexingConfigBuilderTest
     Assertions.assertEquals("count", config.getMetricsSpec()[0].getName());
 
     Assertions.assertNotNull(config.getDimensionsSpec());
-    Assertions.assertNotNull(config.getIoConfig());
 
     Assertions.assertNotNull(config.getProjections());
     Assertions.assertEquals(1, config.getProjections().size()); // only 1 as 
we match the 2nd dataSchemaRule
@@ -195,15 +192,14 @@ public class ReindexingConfigBuilderTest
 
     // Verify applied rules list
     Assertions.assertNotNull(buildResult.getAppliedRules());
-    Assertions.assertEquals(6, buildResult.getAppliedRules().size());
+    Assertions.assertEquals(5, buildResult.getAppliedRules().size());
 
-    // Verify rule types in order: tuning, io, dataSchema, 2 deletion rules, 
segment granularity
+    // Verify rule types in order: tuning, dataSchema, 2 deletion rules, 
segment granularity
     Assertions.assertTrue(buildResult.getAppliedRules().get(0) instanceof 
ReindexingTuningConfigRule);
-    Assertions.assertTrue(buildResult.getAppliedRules().get(1) instanceof 
ReindexingIOConfigRule);
-    Assertions.assertTrue(buildResult.getAppliedRules().get(2) instanceof 
ReindexingDataSchemaRule);
+    Assertions.assertTrue(buildResult.getAppliedRules().get(1) instanceof 
ReindexingDataSchemaRule);
+    Assertions.assertTrue(buildResult.getAppliedRules().get(2) instanceof 
ReindexingDeletionRule);
     Assertions.assertTrue(buildResult.getAppliedRules().get(3) instanceof 
ReindexingDeletionRule);
-    Assertions.assertTrue(buildResult.getAppliedRules().get(4) instanceof 
ReindexingDeletionRule);
-    Assertions.assertTrue(buildResult.getAppliedRules().get(5) instanceof 
ReindexingSegmentGranularityRule);
+    Assertions.assertTrue(buildResult.getAppliedRules().get(4) instanceof 
ReindexingSegmentGranularityRule);
 
     // Verify the config produced by applyToWithDetails() matches the original
     InlineSchemaDataSourceCompactionConfig configFromDetails = 
builderForDetails.build();
@@ -279,13 +275,6 @@ public class ReindexingConfigBuilderTest
         null
     );
 
-    ReindexingIOConfigRule ioConfigRule = new ReindexingIOConfigRule(
-        "io-30d",
-        null,
-        Period.days(30),
-        new UserCompactionTaskIOConfig(null)
-    );
-
     ReindexingDataSchemaRule dataSchemaRule1 = new ReindexingDataSchemaRule(
         "schema-30d",
         null,
@@ -319,7 +308,6 @@ public class ReindexingConfigBuilderTest
     return InlineReindexingRuleProvider.builder()
         .segmentGranularityRules(ImmutableList.of(segmentGranularityRule))
         .tuningConfigRules(ImmutableList.of(tuningConfigRule))
-        .ioConfigRules(ImmutableList.of(ioConfigRule))
         .deletionRules(ImmutableList.of(filterRule1, filterRule2))
         .dataSchemaRules(ImmutableList.of(dataSchemaRule1, dataSchemaRule2))
         .build();
diff --git 
a/server/src/main/java/org/apache/druid/server/compaction/ComposingReindexingRuleProvider.java
 
b/server/src/main/java/org/apache/druid/server/compaction/ComposingReindexingRuleProvider.java
index e1152ff4826..7d7b6769d78 100644
--- 
a/server/src/main/java/org/apache/druid/server/compaction/ComposingReindexingRuleProvider.java
+++ 
b/server/src/main/java/org/apache/druid/server/compaction/ComposingReindexingRuleProvider.java
@@ -146,27 +146,6 @@ public class ComposingReindexingRuleProvider implements 
ReindexingRuleProvider
                     .orElse(Collections.emptyList());
   }
 
-  @Override
-  public List<ReindexingIOConfigRule> getIOConfigRules()
-  {
-    return providers.stream()
-                    .map(ReindexingRuleProvider::getIOConfigRules)
-                    .filter(rules -> !rules.isEmpty())
-                    .findFirst()
-                    .orElse(Collections.emptyList());
-  }
-
-  @Override
-  @Nullable
-  public ReindexingIOConfigRule getIOConfigRule(Interval interval, DateTime 
referenceTime)
-  {
-    return providers.stream()
-                    .map(p -> p.getIOConfigRule(interval, referenceTime))
-                    .filter(Objects::nonNull)
-                    .findFirst()
-                    .orElse(null);
-  }
-
   @Override
   @Nullable
   public ReindexingSegmentGranularityRule getSegmentGranularityRule(Interval 
interval, DateTime referenceTime)
diff --git 
a/server/src/main/java/org/apache/druid/server/compaction/InlineReindexingRuleProvider.java
 
b/server/src/main/java/org/apache/druid/server/compaction/InlineReindexingRuleProvider.java
index d713b1ec3a9..05ee102681a 100644
--- 
a/server/src/main/java/org/apache/druid/server/compaction/InlineReindexingRuleProvider.java
+++ 
b/server/src/main/java/org/apache/druid/server/compaction/InlineReindexingRuleProvider.java
@@ -89,7 +89,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
   public static final String TYPE = "inline";
 
   private final List<ReindexingDeletionRule> deletionRules;
-  private final List<ReindexingIOConfigRule> ioConfigRules;
   private final List<ReindexingSegmentGranularityRule> segmentGranularityRules;
   private final List<ReindexingTuningConfigRule> tuningConfigRules;
   private final List<ReindexingDataSchemaRule> dataSchemaRules;
@@ -98,14 +97,12 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
   @JsonCreator
   public InlineReindexingRuleProvider(
       @JsonProperty("deletionRules") @Nullable List<ReindexingDeletionRule> 
deletionRules,
-      @JsonProperty("ioConfigRules") @Nullable List<ReindexingIOConfigRule> 
ioConfigRules,
       @JsonProperty("segmentGranularityRules") @Nullable 
List<ReindexingSegmentGranularityRule> segmentGranularityRules,
       @JsonProperty("tuningConfigRules") @Nullable 
List<ReindexingTuningConfigRule> tuningConfigRules,
       @JsonProperty("dataSchemaRules") @Nullable 
List<ReindexingDataSchemaRule> dataSchemaRules
   )
   {
     this.deletionRules = Configs.valueOrDefault(deletionRules, 
Collections.emptyList());
-    this.ioConfigRules = Configs.valueOrDefault(ioConfigRules, 
Collections.emptyList());
     this.segmentGranularityRules = 
Configs.valueOrDefault(segmentGranularityRules, Collections.emptyList());
     this.tuningConfigRules = Configs.valueOrDefault(tuningConfigRules, 
Collections.emptyList());
     this.dataSchemaRules = Configs.valueOrDefault(dataSchemaRules, 
Collections.emptyList());
@@ -144,13 +141,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
     return dataSchemaRules;
   }
 
-  @Override
-  @JsonProperty("ioConfigRules")
-  public List<ReindexingIOConfigRule> getIOConfigRules()
-  {
-    return ioConfigRules;
-  }
-
   @Override
   @JsonProperty("segmentGranularityRules")
   public List<ReindexingSegmentGranularityRule> getSegmentGranularityRules()
@@ -171,13 +161,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
     return getApplicableRules(deletionRules, interval, referenceTime);
   }
 
-  @Override
-  @Nullable
-  public ReindexingIOConfigRule getIOConfigRule(Interval interval, DateTime 
referenceTime)
-  {
-    return getApplicableRule(ioConfigRules, interval, referenceTime);
-  }
-
   @Override
   @Nullable
   public ReindexingSegmentGranularityRule getSegmentGranularityRule(
@@ -252,7 +235,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
     }
     InlineReindexingRuleProvider that = (InlineReindexingRuleProvider) o;
     return Objects.equals(deletionRules, that.deletionRules)
-           && Objects.equals(ioConfigRules, that.ioConfigRules)
            && Objects.equals(segmentGranularityRules, 
that.segmentGranularityRules)
            && Objects.equals(tuningConfigRules, that.tuningConfigRules)
            && Objects.equals(dataSchemaRules, that.dataSchemaRules);
@@ -263,7 +245,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
   {
     return Objects.hash(
         deletionRules,
-        ioConfigRules,
         segmentGranularityRules,
         tuningConfigRules,
         dataSchemaRules
@@ -275,7 +256,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
   {
     return "InlineReindexingRuleProvider{"
            + "deletionRules=" + deletionRules
-           + ", ioConfigRules=" + ioConfigRules
            + ", segmentGranularityRules=" + segmentGranularityRules
            + ", tuningConfigRules=" + tuningConfigRules
            + ", dataSchemaRules=" + dataSchemaRules
@@ -285,7 +265,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
   public static class Builder
   {
     private List<ReindexingDeletionRule> deletionRules;
-    private List<ReindexingIOConfigRule> ioConfigRules;
     private List<ReindexingSegmentGranularityRule> segmentGranularityRules;
     private List<ReindexingTuningConfigRule> tuningConfigRules;
     private List<ReindexingDataSchemaRule> dataSchemaRules;
@@ -302,12 +281,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
       return this;
     }
 
-    public Builder ioConfigRules(List<ReindexingIOConfigRule> ioConfigRules)
-    {
-      this.ioConfigRules = ioConfigRules;
-      return this;
-    }
-
     public Builder 
segmentGranularityRules(List<ReindexingSegmentGranularityRule> 
segmentGranularityRules)
     {
       this.segmentGranularityRules = segmentGranularityRules;
@@ -324,7 +297,6 @@ public class InlineReindexingRuleProvider implements 
ReindexingRuleProvider
     {
       return new InlineReindexingRuleProvider(
           deletionRules,
-          ioConfigRules,
           segmentGranularityRules,
           tuningConfigRules,
           dataSchemaRules
diff --git 
a/server/src/main/java/org/apache/druid/server/compaction/ReindexingIOConfigRule.java
 
b/server/src/main/java/org/apache/druid/server/compaction/ReindexingIOConfigRule.java
deleted file mode 100644
index 1c34c269133..00000000000
--- 
a/server/src/main/java/org/apache/druid/server/compaction/ReindexingIOConfigRule.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.druid.server.compaction;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.druid.error.InvalidInput;
-import org.apache.druid.server.coordinator.UserCompactionTaskIOConfig;
-import org.joda.time.Period;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import java.util.Objects;
-
-/**
- * A {@link ReindexingRule} that specifies a {@link 
UserCompactionTaskIOConfig} for tasks to configure.
- * <p>
- * This is a non-additive rule. Multiple IO config rules cannot be applied to 
the same interval safely,
- * as a compaction job can only use one IO configuration.
- * <p>
- * Example inline usage:
- * <pre>{@code
- * {
- *   "id": "dropExistingFalse-false",
- *   "olderThan": "P90D",
- *   "ioConfig": {
- *     "dropExisting": false
- *   },
- * }
- * }</pre>
- */
-public class ReindexingIOConfigRule extends AbstractReindexingRule
-{
-  private final UserCompactionTaskIOConfig ioConfig;
-
-  @JsonCreator
-  public ReindexingIOConfigRule(
-      @JsonProperty("id") @Nonnull String id,
-      @JsonProperty("description") @Nullable String description,
-      @JsonProperty("olderThan") @Nonnull Period olderThan,
-      @JsonProperty("ioConfig") @Nonnull UserCompactionTaskIOConfig ioConfig
-  )
-  {
-    super(id, description, olderThan);
-    InvalidInput.conditionalException(ioConfig != null, "'ioConfig' cannot be 
null");
-    this.ioConfig = ioConfig;
-  }
-
-  @JsonProperty
-  public UserCompactionTaskIOConfig getIoConfig()
-  {
-    return ioConfig;
-  }
-
-  @Override
-  public boolean equals(Object o)
-  {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    ReindexingIOConfigRule that = (ReindexingIOConfigRule) o;
-    return Objects.equals(getId(), that.getId())
-           && Objects.equals(getDescription(), that.getDescription())
-           && Objects.equals(getOlderThan(), that.getOlderThan())
-           && Objects.equals(ioConfig, that.ioConfig);
-  }
-
-  @Override
-  public int hashCode()
-  {
-    return Objects.hash(
-        getId(),
-        getDescription(),
-        getOlderThan(),
-        ioConfig
-    );
-  }
-
-  @Override
-  public String toString()
-  {
-    return "ReindexingIOConfigRule{"
-           + "id='" + getId() + '\''
-           + ", description='" + getDescription() + '\''
-           + ", olderThan=" + getOlderThan()
-           + ", ioConfig=" + ioConfig
-           + '}';
-  }
-}
diff --git 
a/server/src/main/java/org/apache/druid/server/compaction/ReindexingRuleProvider.java
 
b/server/src/main/java/org/apache/druid/server/compaction/ReindexingRuleProvider.java
index be617169ec5..23ff16f4c3f 100644
--- 
a/server/src/main/java/org/apache/druid/server/compaction/ReindexingRuleProvider.java
+++ 
b/server/src/main/java/org/apache/druid/server/compaction/ReindexingRuleProvider.java
@@ -107,26 +107,6 @@ public interface ReindexingRuleProvider
    */
   List<ReindexingDataSchemaRule> getDataSchemaRules();
 
-  /**
-   * Returns the matched reindexing IO config rule that applies to the given 
interval.
-   * <p>
-   * Handling cases of multiple applicable rules and/or partial overlaps is 
the responsibility of the provider
-   * implementation and should be clearly documented.
-   * </p>
-   *
-   * @param interval      The interval to check applicability against.
-   * @param referenceTime The reference time to use for period calculations 
while determining rule applicability for an interval.
-   *                      e.g., a rule with period P7D applies to data older 
than 7 days from the reference time.
-   * @return {@link ReindexingIOConfigRule} that applies to the given interval.
-   */
-  @Nullable
-  ReindexingIOConfigRule getIOConfigRule(Interval interval, DateTime 
referenceTime);
-
-  /**
-    * Returns ALL reindexing IO config rules.
-   */
-  List<ReindexingIOConfigRule> getIOConfigRules();
-
   /**
    * Returns the matched reindexing segment granularity rule that applies to 
the given interval.
    * <p>
@@ -178,7 +158,6 @@ public interface ReindexingRuleProvider
   default Stream<ReindexingRule> streamAllRules()
   {
     return Stream.of(
-        getIOConfigRules().stream(),
         getTuningConfigRules().stream(),
         getDeletionRules().stream(),
         getSegmentGranularityRules().stream(),
diff --git 
a/server/src/test/java/org/apache/druid/server/compaction/ComposingReindexingRuleProviderTest.java
 
b/server/src/test/java/org/apache/druid/server/compaction/ComposingReindexingRuleProviderTest.java
index 03ce574273e..f7063ce3478 100644
--- 
a/server/src/test/java/org/apache/druid/server/compaction/ComposingReindexingRuleProviderTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/compaction/ComposingReindexingRuleProviderTest.java
@@ -28,7 +28,6 @@ import org.apache.druid.query.aggregation.AggregatorFactory;
 import org.apache.druid.query.aggregation.CountAggregatorFactory;
 import org.apache.druid.query.filter.SelectorDimFilter;
 import org.apache.druid.server.coordinator.UserCompactionTaskDimensionsConfig;
-import org.apache.druid.server.coordinator.UserCompactionTaskIOConfig;
 import org.apache.druid.server.coordinator.UserCompactionTaskQueryTuningConfig;
 import org.joda.time.DateTime;
 import org.joda.time.Interval;
@@ -179,30 +178,6 @@ public class ComposingReindexingRuleProviderTest
     );
   }
 
-  @Test
-  public void test_getIOConfigRules_compositingBehavior()
-  {
-    testComposingBehaviorForRuleType(
-        rules -> 
InlineReindexingRuleProvider.builder().ioConfigRules(rules).build(),
-        ComposingReindexingRuleProvider::getIOConfigRules,
-        createIOConfigRule("rule1", Period.days(7)),
-        createIOConfigRule("rule2", Period.days(30)),
-        ReindexingIOConfigRule::getId
-    );
-  }
-
-  @Test
-  public void test_getIOConfigRuleWithInterval_compositingBehavior()
-  {
-    testComposingBehaviorForNonAdditiveRuleTypeWithInterval(
-        rules -> 
InlineReindexingRuleProvider.builder().ioConfigRules(rules).build(),
-        (provider, it) -> provider.getIOConfigRule(it.interval, it.time),
-        createIOConfigRule("rule1", Period.days(7)),
-        createIOConfigRule("rule2", Period.days(30)),
-        ReindexingIOConfigRule::getId
-    );
-  }
-
   @Test
   public void test_getTuningConfigRules_compositingBehavior()
   {
@@ -425,7 +400,7 @@ public class ComposingReindexingRuleProviderTest
    */
   private ReindexingRuleProvider createNotReadyProvider()
   {
-    return new InlineReindexingRuleProvider(null, null, null, null, null)
+    return new InlineReindexingRuleProvider(null, null, null, null)
     {
       @Override
       public boolean isReady()
@@ -456,16 +431,6 @@ public class ComposingReindexingRuleProviderTest
     );
   }
 
-  private ReindexingIOConfigRule createIOConfigRule(String id, Period period)
-  {
-    return new ReindexingIOConfigRule(
-        id,
-        "Test IO config rule",
-        period,
-        new UserCompactionTaskIOConfig(null)
-    );
-  }
-
   private ReindexingTuningConfigRule createTuningConfigRule(String id, Period 
period)
   {
     return new ReindexingTuningConfigRule(
diff --git 
a/server/src/test/java/org/apache/druid/server/compaction/InlineReindexingRuleProviderTest.java
 
b/server/src/test/java/org/apache/druid/server/compaction/InlineReindexingRuleProviderTest.java
index efd37311d33..92f6ed8a1c9 100644
--- 
a/server/src/test/java/org/apache/druid/server/compaction/InlineReindexingRuleProviderTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/compaction/InlineReindexingRuleProviderTest.java
@@ -28,7 +28,6 @@ import org.apache.druid.query.aggregation.AggregatorFactory;
 import org.apache.druid.query.aggregation.CountAggregatorFactory;
 import org.apache.druid.query.filter.SelectorDimFilter;
 import org.apache.druid.server.coordinator.UserCompactionTaskDimensionsConfig;
-import org.apache.druid.server.coordinator.UserCompactionTaskIOConfig;
 import org.apache.druid.server.coordinator.UserCompactionTaskQueryTuningConfig;
 import org.joda.time.DateTime;
 import org.joda.time.Interval;
@@ -62,14 +61,11 @@ public class InlineReindexingRuleProviderTest
         null,
         null,
         null,
-        null,
         null
     );
 
     Assertions.assertNotNull(provider.getDeletionRules());
     Assertions.assertTrue(provider.getDeletionRules().isEmpty());
-    Assertions.assertNotNull(provider.getIOConfigRules());
-    Assertions.assertTrue(provider.getIOConfigRules().isEmpty());
     Assertions.assertNotNull(provider.getSegmentGranularityRules());
     Assertions.assertTrue(provider.getSegmentGranularityRules().isEmpty());
     Assertions.assertNotNull(provider.getTuningConfigRules());
@@ -105,14 +101,6 @@ public class InlineReindexingRuleProviderTest
   @Test
   public void test_allNonAdditiveRules_validateNonAdditivity()
   {
-    // Test IOConfig rules
-    testNonAdditivity(
-        "ioConfig",
-        this::createIOConfigRule,
-        InlineReindexingRuleProvider.Builder::ioConfigRules,
-        InlineReindexingRuleProvider::getIOConfigRule
-    );
-
     // Test segment granularity rules
     testNonAdditivity(
         "segmentGranularity",
@@ -141,14 +129,12 @@ public class InlineReindexingRuleProviderTest
   public void test_allRuleTypesWireCorrectly_withInterval()
   {
     ReindexingDeletionRule filterRule = createFilterRule("filter", 
Period.days(30));
-    ReindexingIOConfigRule ioConfigRule = createIOConfigRule("ioconfig", 
Period.days(30));
     ReindexingSegmentGranularityRule segmentGranularityRule = 
createSegmentGranularityRule("segmentGranularity", Period.days(30));
     ReindexingTuningConfigRule tuningConfigRule = 
createTuningConfigRule("tuning", Period.days(30));
     ReindexingDataSchemaRule dataSchemaRule = 
createDataSchemaRule("dataSchema", Period.days(30));
 
     InlineReindexingRuleProvider provider = 
InlineReindexingRuleProvider.builder()
         .deletionRules(ImmutableList.of(filterRule))
-        .ioConfigRules(ImmutableList.of(ioConfigRule))
         .segmentGranularityRules(ImmutableList.of(segmentGranularityRule))
         .tuningConfigRules(ImmutableList.of(tuningConfigRule))
         .dataSchemaRules(ImmutableList.of(dataSchemaRule))
@@ -157,8 +143,6 @@ public class InlineReindexingRuleProviderTest
     Assertions.assertEquals(1, 
provider.getDeletionRules(INTERVAL_100_DAYS_OLD, REFERENCE_TIME).size());
     Assertions.assertEquals("filter", 
provider.getDeletionRules(INTERVAL_100_DAYS_OLD, 
REFERENCE_TIME).get(0).getId());
 
-    Assertions.assertEquals("ioconfig", 
provider.getIOConfigRule(INTERVAL_100_DAYS_OLD, REFERENCE_TIME).getId());
-
     Assertions.assertEquals("segmentGranularity", 
provider.getSegmentGranularityRule(INTERVAL_100_DAYS_OLD, 
REFERENCE_TIME).getId());
 
     Assertions.assertEquals("tuning", 
provider.getTuningConfigRule(INTERVAL_100_DAYS_OLD, REFERENCE_TIME).getId());
@@ -230,11 +214,6 @@ public class InlineReindexingRuleProviderTest
     return new ReindexingDeletionRule(id, null, period, new 
SelectorDimFilter("dim", "val", null), null);
   }
 
-  private ReindexingIOConfigRule createIOConfigRule(String id, Period period)
-  {
-    return new ReindexingIOConfigRule(id, null, period, new 
UserCompactionTaskIOConfig(null));
-  }
-
   private ReindexingSegmentGranularityRule createSegmentGranularityRule(String 
id, Period period)
   {
     return new ReindexingSegmentGranularityRule(
diff --git 
a/server/src/test/java/org/apache/druid/server/compaction/ReindexingIOConfigRuleTest.java
 
b/server/src/test/java/org/apache/druid/server/compaction/ReindexingIOConfigRuleTest.java
deleted file mode 100644
index 92ecd4d5f0b..00000000000
--- 
a/server/src/test/java/org/apache/druid/server/compaction/ReindexingIOConfigRuleTest.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * 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.druid.server.compaction;
-
-import org.apache.druid.error.DruidException;
-import org.apache.druid.java.util.common.DateTimes;
-import org.apache.druid.java.util.common.Intervals;
-import org.apache.druid.server.coordinator.UserCompactionTaskIOConfig;
-import org.joda.time.DateTime;
-import org.joda.time.Interval;
-import org.joda.time.Period;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-public class ReindexingIOConfigRuleTest
-{
-  private static final DateTime REFERENCE_TIME = 
DateTimes.of("2025-12-19T12:00:00Z");
-  private static final Period PERIOD_60_DAYS = Period.days(60);
-
-  private final ReindexingIOConfigRule rule = new ReindexingIOConfigRule(
-      "test-ioconfig-rule",
-      "Custom IO config",
-      PERIOD_60_DAYS,
-      new UserCompactionTaskIOConfig(null)
-  );
-
-  @Test
-  public void test_appliesTo_intervalFullyBeforeThreshold_returnsFull()
-  {
-    // Threshold is 2025-10-20T12:00:00Z (60 days before reference time)
-    // Interval ends at 2025-10-15, which is fully before threshold
-    Interval interval = 
Intervals.of("2025-10-14T00:00:00Z/2025-10-15T00:00:00Z");
-
-    ReindexingRule.AppliesToMode result = rule.appliesTo(interval, 
REFERENCE_TIME);
-
-    Assertions.assertEquals(ReindexingRule.AppliesToMode.FULL, result);
-  }
-
-  @Test
-  public void test_appliesTo_intervalEndsAtThreshold_returnsFull()
-  {
-    // Threshold is 2025-10-20T12:00:00Z (60 days before reference time)
-    // Interval ends exactly at threshold - should be FULL (boundary case)
-    Interval interval = 
Intervals.of("2025-10-19T12:00:00Z/2025-10-20T12:00:00Z");
-
-    ReindexingRule.AppliesToMode result = rule.appliesTo(interval, 
REFERENCE_TIME);
-
-    Assertions.assertEquals(ReindexingRule.AppliesToMode.FULL, result);
-  }
-
-  @Test
-  public void test_appliesTo_intervalSpansThreshold_returnsPartial()
-  {
-    // Threshold is 2025-10-20T12:00:00Z (60 days before reference time)
-    // Interval starts before threshold and ends after - PARTIAL
-    Interval interval = 
Intervals.of("2025-10-19T00:00:00Z/2025-10-21T00:00:00Z");
-
-    ReindexingRule.AppliesToMode result = rule.appliesTo(interval, 
REFERENCE_TIME);
-
-    Assertions.assertEquals(ReindexingRule.AppliesToMode.PARTIAL, result);
-  }
-
-  @Test
-  public void test_appliesTo_intervalStartsAfterThreshold_returnsNone()
-  {
-    // Threshold is 2025-10-20T12:00:00Z (60 days before reference time)
-    // Interval starts after threshold - NONE
-    Interval interval = 
Intervals.of("2025-12-15T00:00:00Z/2025-12-16T00:00:00Z");
-
-    ReindexingRule.AppliesToMode result = rule.appliesTo(interval, 
REFERENCE_TIME);
-
-    Assertions.assertEquals(ReindexingRule.AppliesToMode.NONE, result);
-  }
-
-  @Test
-  public void test_getIoConfig_returnsConfiguredValue()
-  {
-    UserCompactionTaskIOConfig config = rule.getIoConfig();
-
-    Assertions.assertNotNull(config);
-  }
-
-  @Test
-  public void test_getId_returnsConfiguredId()
-  {
-    Assertions.assertEquals("test-ioconfig-rule", rule.getId());
-  }
-
-  @Test
-  public void test_getDescription_returnsConfiguredDescription()
-  {
-    Assertions.assertEquals("Custom IO config", rule.getDescription());
-  }
-
-  @Test
-  public void test_getOlderThan_returnsConfiguredPeriod()
-  {
-    Assertions.assertEquals(PERIOD_60_DAYS, rule.getOlderThan());
-  }
-
-  @Test
-  public void test_constructor_nullId_throwsNullPointerException()
-  {
-    UserCompactionTaskIOConfig config = new UserCompactionTaskIOConfig(null);
-    Assertions.assertThrows(
-        NullPointerException.class,
-        () -> new ReindexingIOConfigRule(null, "description", PERIOD_60_DAYS, 
config)
-    );
-  }
-
-  @Test
-  public void test_constructor_nullPeriod_throwsNullPointerException()
-  {
-    UserCompactionTaskIOConfig config = new UserCompactionTaskIOConfig(null);
-    Assertions.assertThrows(
-        NullPointerException.class,
-        () -> new ReindexingIOConfigRule("test-id", "description", null, 
config)
-    );
-  }
-
-  @Test
-  public void test_constructor_zeroPeriod_succeeds()
-  {
-    // P0D is valid - indicates rules that apply immediately to all data
-    UserCompactionTaskIOConfig config = new UserCompactionTaskIOConfig(null);
-    Period zeroPeriod = Period.days(0);
-    ReindexingIOConfigRule rule = new ReindexingIOConfigRule(
-        "test-id",
-        "description",
-        zeroPeriod,
-        config
-    );
-    Assertions.assertEquals(zeroPeriod, rule.getOlderThan());
-  }
-
-  @Test
-  public void test_constructor_negativePeriod_throwsIllegalArgumentException()
-  {
-    UserCompactionTaskIOConfig config = new UserCompactionTaskIOConfig(null);
-    Period negativePeriod = Period.days(-60);
-    Assertions.assertThrows(
-        IllegalArgumentException.class,
-        () -> new ReindexingIOConfigRule("test-id", "description", 
negativePeriod, config)
-    );
-  }
-
-  @Test
-  public void test_constructor_nullIOConfig_throwsDruidException()
-  {
-    Assertions.assertThrows(
-        DruidException.class,
-        () -> new ReindexingIOConfigRule("test-id", "description", 
PERIOD_60_DAYS, null)
-    );
-  }
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to