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