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]