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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5027abe21 [Amoro-3196]: Fix scheduling hungry issue (#3203)
5027abe21 is described below

commit 5027abe21b43dc263be096e7dd879e37c5a74beb
Author: majin1102 <[email protected]>
AuthorDate: Thu Sep 19 10:01:05 2024 +0800

    [Amoro-3196]: Fix scheduling hungry issue (#3203)
    
    * Amoro-3196: Fix scheduling hungry issue
    
    * Apply spotless
    
    ---------
    
    Co-authored-by: majin.nathan <[email protected]>
---
 .../amoro/server/optimizing/SchedulingPolicy.java  | 24 ++++++++++------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/SchedulingPolicy.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/SchedulingPolicy.java
index 72dfdce76..c62a188b6 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/SchedulingPolicy.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/SchedulingPolicy.java
@@ -41,7 +41,6 @@ public class SchedulingPolicy {
 
   private final Map<ServerTableIdentifier, TableRuntime> tableRuntimeMap = new 
HashMap<>();
   private volatile String policyName;
-  private Comparator<TableRuntime> tableSorter;
   private final Lock tableLock = new ReentrantLock();
 
   public SchedulingPolicy(ResourceGroup group) {
@@ -55,17 +54,6 @@ public class SchedulingPolicy {
           Optional.ofNullable(optimizerGroup.getProperties())
               .orElseGet(Maps::newHashMap)
               .getOrDefault(SCHEDULING_POLICY_PROPERTY_NAME, QUOTA);
-      if (policyName.equalsIgnoreCase(QUOTA)) {
-        if (tableSorter == null || !(tableSorter instanceof 
QuotaOccupySorter)) {
-          tableSorter = new QuotaOccupySorter();
-        }
-      } else if (policyName.equalsIgnoreCase(BALANCED)) {
-        if (tableSorter == null || !(tableSorter instanceof BalancedSorter)) {
-          tableSorter = new BalancedSorter();
-        }
-      } else {
-        throw new IllegalArgumentException("Illegal scheduling policy: " + 
policyName);
-      }
     } finally {
       tableLock.unlock();
     }
@@ -81,13 +69,23 @@ public class SchedulingPolicy {
       fillSkipSet(skipSet);
       return tableRuntimeMap.values().stream()
           .filter(tableRuntime -> 
!skipSet.contains(tableRuntime.getTableIdentifier()))
-          .min(tableSorter)
+          .min(createSorterByPolicy())
           .orElse(null);
     } finally {
       tableLock.unlock();
     }
   }
 
+  private Comparator<TableRuntime> createSorterByPolicy() {
+    if (policyName.equalsIgnoreCase(QUOTA)) {
+      return new QuotaOccupySorter();
+    } else if (policyName.equalsIgnoreCase(BALANCED)) {
+      return new BalancedSorter();
+    } else {
+      throw new IllegalArgumentException("Illegal scheduling policy: " + 
policyName);
+    }
+  }
+
   public TableRuntime getTableRuntime(ServerTableIdentifier tableIdentifier) {
     tableLock.lock();
     try {

Reply via email to