somandal commented on code in PR #15190:
URL: https://github.com/apache/pinot/pull/15190#discussion_r1980059588


##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixSegmentOnlineOfflineStateModelGenerator.java:
##########
@@ -46,23 +40,37 @@ private PinotHelixSegmentOnlineOfflineStateModelGenerator() 
{
   public static final String DROPPED_STATE = "DROPPED";
   public static final String CONSUMING_STATE = "CONSUMING";
 
+  // Helix state transitions can be assigned a priority which is used by Helix
+  // to issue the order of state transitions. A lower priority value means a 
higher
+  // priority in Helix.
+  // Set all DROPPED related state transitions to have a higher priority.
+  // Handling DROPPED state transitions with a higher priority can help prevent
+  // servers from running into disk utilization problems.
+  public static final int DROPPED_STATE_TRANSITION_PRIORITY = 1;
+  public static final int DEFAULT_STATE_TRANSITION_PRIORITY = 
Integer.MAX_VALUE;
+
   public static StateModelDefinition generatePinotStateModelDefinition() {
     StateModelDefinition.Builder builder = new 
StateModelDefinition.Builder(PINOT_SEGMENT_ONLINE_OFFLINE_STATE_MODEL);
+    // Set the initial state when the node starts
     builder.initialState(OFFLINE_STATE);
 
     builder.addState(ONLINE_STATE);
     builder.addState(CONSUMING_STATE);
     builder.addState(OFFLINE_STATE);
     builder.addState(DROPPED_STATE);
-    // Set the initial state when the node starts
 
     // Add transitions between the states.
-    builder.addTransition(CONSUMING_STATE, ONLINE_STATE);
-    builder.addTransition(OFFLINE_STATE, CONSUMING_STATE);
-    builder.addTransition(OFFLINE_STATE, ONLINE_STATE);
-    builder.addTransition(CONSUMING_STATE, OFFLINE_STATE);
-    builder.addTransition(ONLINE_STATE, OFFLINE_STATE);
-    builder.addTransition(OFFLINE_STATE, DROPPED_STATE);
+    builder.addTransition(CONSUMING_STATE, ONLINE_STATE, 
DEFAULT_STATE_TRANSITION_PRIORITY);
+    builder.addTransition(OFFLINE_STATE, CONSUMING_STATE, 
DEFAULT_STATE_TRANSITION_PRIORITY);
+    builder.addTransition(OFFLINE_STATE, ONLINE_STATE, 
DEFAULT_STATE_TRANSITION_PRIORITY);
+    builder.addTransition(CONSUMING_STATE, OFFLINE_STATE, 
DEFAULT_STATE_TRANSITION_PRIORITY);
+    builder.addTransition(ONLINE_STATE, OFFLINE_STATE, 
DEFAULT_STATE_TRANSITION_PRIORITY);

Review Comment:
   done, order:
   OFFLINE state transitions
   CONSUMING state transitions
   ONLINE state transitions



##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixSegmentOnlineOfflineStateModelGenerator.java:
##########
@@ -46,23 +40,37 @@ private PinotHelixSegmentOnlineOfflineStateModelGenerator() 
{
   public static final String DROPPED_STATE = "DROPPED";
   public static final String CONSUMING_STATE = "CONSUMING";
 
+  // Helix state transitions can be assigned a priority which is used by Helix
+  // to issue the order of state transitions. A lower priority value means a 
higher
+  // priority in Helix.
+  // Set all DROPPED related state transitions to have a higher priority.
+  // Handling DROPPED state transitions with a higher priority can help prevent
+  // servers from running into disk utilization problems.
+  public static final int DROPPED_STATE_TRANSITION_PRIORITY = 1;

Review Comment:
   done



-- 
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