kfaraz commented on code in PR #14831:
URL: https://github.com/apache/druid/pull/14831#discussion_r1297345295


##########
server/src/main/java/org/apache/druid/server/coordinator/duty/KillUnusedSegments.java:
##########
@@ -112,9 +125,8 @@ public KillUnusedSegments(
   @Override
   public DruidCoordinatorRuntimeParams run(DruidCoordinatorRuntimeParams 
params)
   {
-
     final long currentTimeMillis = System.currentTimeMillis();
-    if (lastKillTime + period > currentTimeMillis) {
+    if (null != period && (lastKillTime + period > currentTimeMillis)) {

Review Comment:
   I think we have already validated that `period` is not `null` in the 
constructor.



##########
server/src/test/java/org/apache/druid/server/coordinator/TestDruidCoordinatorConfig.java:
##########
@@ -326,6 +337,12 @@ public Builder withMetadataStoreManagementPeriod(Duration 
metadataStoreManagemen
       return this;
     }
 
+    public Builder witAutoKillEnabled(Boolean autoKillEnabled)

Review Comment:
   ```suggestion
       public Builder withAutoKillEnabled(Boolean autoKillEnabled)
   ```



##########
server/src/main/java/org/apache/druid/server/coordinator/duty/KillUnusedSegments.java:
##########
@@ -63,25 +67,32 @@ public class KillUnusedSegments implements CoordinatorDuty
                 && (KILL_TASK_TYPE.equals(status.getType()) && 
status.getId().startsWith(TASK_ID_PREFIX));
   private static final Logger log = new Logger(KillUnusedSegments.class);
 
-  private final long period;
+  @Nullable private final Long period;
   private final long retainDuration;
   private final boolean ignoreRetainDuration;
   private final int maxSegmentsToKill;
+
+  /**
+   * Used to keep track of the last interval end time that was killed for each
+   * datasource.
+   */
+  private final Map<String, DateTime> datasourceToLastKillIntervalEnd;
   private long lastKillTime = 0;
 
   private final SegmentsMetadataManager segmentsMetadataManager;
   private final OverlordClient overlordClient;
 
   @Inject
+  @JsonCreator
   public KillUnusedSegments(
-      SegmentsMetadataManager segmentsMetadataManager,
-      OverlordClient overlordClient,
-      DruidCoordinatorConfig config
+      @JacksonInject SegmentsMetadataManager segmentsMetadataManager,
+      @JacksonInject OverlordClient overlordClient,
+      @JacksonInject DruidCoordinatorConfig config
   )
   {
-    this.period = config.getCoordinatorKillPeriod().getMillis();
+    this.period = null != config.getCoordinatorKillPeriod() ? 
config.getCoordinatorKillPeriod().getMillis() : null;
     Preconditions.checkArgument(
-        this.period > config.getCoordinatorIndexingPeriod().getMillis(),
+        null == this.period || this.period > 
config.getCoordinatorIndexingPeriod().getMillis(),

Review Comment:
   Null handling and validation can be done in the `DruidCoordinatorConfig` 
itself.



##########
server/src/main/java/org/apache/druid/server/coordinator/DruidCoordinatorConfig.java:
##########
@@ -43,9 +45,16 @@ public abstract class DruidCoordinatorConfig
   @Default("PT1H")
   public abstract Duration getCoordinatorMetadataStoreManagementPeriod();
 
+  @Config("druid.coordinator.kill.on")
+  @Default("false")
+  public abstract Boolean getAutoKillEnabled();

Review Comment:
   The default value here is false. Does this mean that existing clusters that 
already had kill enabled implicitly won't anymore?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to