public interface Rule
| Modifier and Type | Method and Description |
|---|---|
boolean |
appliesTo(DataSegment segment,
org.joda.time.DateTime referenceTimestamp) |
boolean |
appliesTo(org.joda.time.Interval interval,
org.joda.time.DateTime referenceTimestamp) |
boolean |
canLoadSegments()
Return true if this Rule can load segment onto one or more type of Druid node, otherwise return false.
|
String |
getType() |
CoordinatorStats |
run(DruidCoordinator coordinator,
DruidCoordinatorRuntimeParams params,
DataSegment segment)
DruidCoordinatorRuntimeParams.getUsedSegments() must not be called in Rule's code, because the used
segments are not specified for the DruidCoordinatorRuntimeParams passed into Rule's code. |
default void |
updateUnderReplicated(Map<String,it.unimi.dsi.fastutil.objects.Object2LongMap<String>> underReplicatedPerTier,
SegmentReplicantLookup segmentReplicantLookup,
DataSegment segment)
This method should update the with the replication count of the
.
|
String getType()
boolean appliesTo(DataSegment segment, org.joda.time.DateTime referenceTimestamp)
boolean appliesTo(org.joda.time.Interval interval,
org.joda.time.DateTime referenceTimestamp)
boolean canLoadSegments()
updateUnderReplicated(java.util.Map<java.lang.String, it.unimi.dsi.fastutil.objects.Object2LongMap<java.lang.String>>, org.apache.druid.server.coordinator.SegmentReplicantLookup, org.apache.druid.timeline.DataSegment)default void updateUnderReplicated(Map<String,it.unimi.dsi.fastutil.objects.Object2LongMap<String>> underReplicatedPerTier, SegmentReplicantLookup segmentReplicantLookup, DataSegment segment)
canLoadSegments() must override this method.
Note that is a map of tier -> { dataSource -> underReplicationCount }CoordinatorStats run(DruidCoordinator coordinator, DruidCoordinatorRuntimeParams params, DataSegment segment)
DruidCoordinatorRuntimeParams.getUsedSegments() must not be called in Rule's code, because the used
segments are not specified for the DruidCoordinatorRuntimeParams passed into Rule's code. This is because
DruidCoordinatorRuntimeParams entangles two slightly different (nonexistent yet) abstractions:
"CoordinatorDutyParams" and "RuleParams" which contain params that only CoordinatorDuty objects and Rules need, respectively. For example,
ReplicationThrottler needs to belong only to "RuleParams", but not to
"CoordinatorDutyParams". The opposite for the collection of used segments and DataSourcesSnapshot.
See https://github.com/apache/druid/issues/7228Copyright © 2011–2020 The Apache Software Foundation. All rights reserved.