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

abstractdog pushed a commit to branch branch-0.9
in repository https://gitbox.apache.org/repos/asf/tez.git


The following commit(s) were added to refs/heads/branch-0.9 by this push:
     new 6feea44  TEZ-4155: Remove sync bottleneck in counters (László Bodor 
reviewed by Rajesh Balamohan)
6feea44 is described below

commit 6feea448935169ce07ced18e422bb984193efe22
Author: László Bodor <[email protected]>
AuthorDate: Tue Apr 28 17:32:04 2020 +0200

    TEZ-4155: Remove sync bottleneck in counters (László Bodor reviewed by 
Rajesh Balamohan)
    
    Signed-off-by: Laszlo Bodor <[email protected]>
---
 .../org/apache/tez/common/counters/Limits.java     | 52 ++++++++--------------
 1 file changed, 18 insertions(+), 34 deletions(-)

diff --git a/tez-api/src/main/java/org/apache/tez/common/counters/Limits.java 
b/tez-api/src/main/java/org/apache/tez/common/counters/Limits.java
index 332df8e..13cc7fb 100644
--- a/tez-api/src/main/java/org/apache/tez/common/counters/Limits.java
+++ b/tez-api/src/main/java/org/apache/tez/common/counters/Limits.java
@@ -35,28 +35,27 @@ public class Limits {
   private static int COUNTER_NAME_MAX;
   private static int GROUPS_MAX;
   private static int COUNTERS_MAX;
-  private static boolean initialized = false;
 
-  private static synchronized void ensureInitialized() {
-    if (initialized) {
-      return;
-    }
-    if (conf == null) {
-      conf = new TezConfiguration();
+  static {
+    init(new TezConfiguration());
+  }
+
+  public synchronized static void setConfiguration(Configuration conf) {
+    if (Limits.conf == null && conf != null) {
+      init(conf);
     }
-    GROUP_NAME_MAX =
-        conf.getInt(TezConfiguration.TEZ_COUNTERS_GROUP_NAME_MAX_LENGTH,
-            TezConfiguration.TEZ_COUNTERS_GROUP_NAME_MAX_LENGTH_DEFAULT);
-    COUNTER_NAME_MAX =
-        conf.getInt(TezConfiguration.TEZ_COUNTERS_COUNTER_NAME_MAX_LENGTH,
-            TezConfiguration.TEZ_COUNTERS_COUNTER_NAME_MAX_LENGTH_DEFAULT);
-    GROUPS_MAX =
-        conf.getInt(TezConfiguration.TEZ_COUNTERS_MAX_GROUPS,
-            TezConfiguration.TEZ_COUNTERS_MAX_GROUPS_DEFAULT);
+  }
+
+  private static void init(Configuration conf) {
+    Limits.conf = conf;
+    GROUP_NAME_MAX = 
conf.getInt(TezConfiguration.TEZ_COUNTERS_GROUP_NAME_MAX_LENGTH,
+        TezConfiguration.TEZ_COUNTERS_GROUP_NAME_MAX_LENGTH_DEFAULT);
+    COUNTER_NAME_MAX = 
conf.getInt(TezConfiguration.TEZ_COUNTERS_COUNTER_NAME_MAX_LENGTH,
+        TezConfiguration.TEZ_COUNTERS_COUNTER_NAME_MAX_LENGTH_DEFAULT);
+    GROUPS_MAX = conf.getInt(TezConfiguration.TEZ_COUNTERS_MAX_GROUPS,
+        TezConfiguration.TEZ_COUNTERS_MAX_GROUPS_DEFAULT);
     COUNTERS_MAX =
-        conf.getInt(TezConfiguration.TEZ_COUNTERS_MAX,
-            TezConfiguration.TEZ_COUNTERS_MAX_DEFAULT);
-    initialized = true;
+        conf.getInt(TezConfiguration.TEZ_COUNTERS_MAX, 
TezConfiguration.TEZ_COUNTERS_MAX_DEFAULT);
     LOG.info("Counter limits initialized with parameters: " + " 
GROUP_NAME_MAX=" + GROUP_NAME_MAX
         + ", MAX_GROUPS=" + GROUPS_MAX + ", COUNTER_NAME_MAX=" + 
COUNTER_NAME_MAX
         + ", MAX_COUNTERS=" + COUNTERS_MAX);
@@ -70,17 +69,14 @@ public class Limits {
   }
 
   public static String filterCounterName(String name) {
-    ensureInitialized();
     return filterName(name, COUNTER_NAME_MAX);
   }
 
   public static String filterGroupName(String name) {
-    ensureInitialized();
     return filterName(name, GROUP_NAME_MAX);
   }
 
   public synchronized void checkCounters(int size) {
-    ensureInitialized();
     if (firstViolation != null) {
       throw new LimitExceededException(firstViolation);
     }
@@ -97,7 +93,6 @@ public class Limits {
   }
 
   public synchronized void checkGroups(int size) {
-    ensureInitialized();
     if (firstViolation != null) {
       throw new LimitExceededException(firstViolation);
     }
@@ -107,21 +102,10 @@ public class Limits {
     }
   }
 
-  public synchronized LimitExceededException violation() {
-    return firstViolation;
-  }
-
-  public synchronized static void setConfiguration(Configuration conf) {
-    if (Limits.conf == null && conf != null) {
-      Limits.conf = conf;
-    }
-  }
-
   @VisibleForTesting
   @InterfaceAudience.Private
   public synchronized static void reset() {
     conf = null;
-    initialized = false;
   }
 
 }

Reply via email to