abstractdog commented on PR #6436:
URL: https://github.com/apache/hive/pull/6436#issuecomment-4260105614

   > > @abstractdog , can you please help me in understanding this, I might be 
wrong but won't this work, if we just overload the initSingleton and its 
subsequent methods?
   > > ```
   > > diff --git 
i/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java 
w/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java
   > > index fa0d285faf..7445bf2617 100644
   > > --- i/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java
   > > +++ w/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java
   > > @@ -56,6 +56,13 @@ synchronized JvmMetrics init(String processName, 
String sessionId) {
   > >        }
   > >        return impl;
   > >      }
   > > +
   > > +    synchronized JvmMetrics init(String processName, String sessionId, 
MetricsSystem ms) {
   > > +      if (impl == null) {
   > > +        impl = create(processName, sessionId, ms);
   > > +      }
   > > +      return impl;
   > > +    }
   > >    }
   > >  
   > >    static final float M = 1024*1024;
   > > @@ -87,6 +94,10 @@ public static JvmMetrics initSingleton(String 
processName, String sessionId) {
   > >      return Singleton.INSTANCE.init(processName, sessionId);
   > >    }
   > >  
   > > +  public static JvmMetrics initSingleton(String processName, String 
sessionId, MetricsSystem ms) {
   > > +    return Singleton.INSTANCE.init(processName, sessionId, ms);
   > > +  }
   > > +
   > >    @Override
   > >    public void getMetrics(MetricsCollector collector, boolean all) {
   > >      MetricsRecordBuilder rb = collector.addRecord(JvmMetrics)
   > > diff --git 
i/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
 
w/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
   > > index 7518bae318..1eb9376408 100644
   > > --- 
i/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
   > > +++ 
w/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
   > > @@ -113,7 +113,7 @@ public static LlapTaskSchedulerMetrics create(String 
displayName, String metrics
   > >        // Using different displayNames within the same JVM can still 
trigger an issue even after fixing HIVE-29566,
   > >        // however it has not been observed in practice (including tests).
   > >        // This highlights the need to clean up this area.
   > > -      JvmMetrics jm = 
JvmMetrics.create(MetricsUtils.METRICS_PROCESS_NAME, metricsSessionId, ms);
   > > +      JvmMetrics jm = 
JvmMetrics.initSingleton(MetricsUtils.METRICS_PROCESS_NAME, metricsSessionId, 
ms);
   > >        return ms.register(name, "Llap Task Scheduler Metrics",
   > >            new LlapTaskSchedulerMetrics(name, jm, metricsSessionId));
   > >      });
   > > ```
   > 
   > looks ok, but we could reuse now genric signature
   > 
   > ```
   >     synchronized JvmMetrics init(String processName, String sessionId) {
   >       return init(processName, sessionId, DefaultMetricsSystem.instance());
   >     }
   > 
   >     synchronized JvmMetrics init(String processName, String sessionId, 
MetricsSystem ms) {
   >       if (impl == null) {
   >         impl = create(processName, sessionId, ms);
   >       }
   >       return impl;
   >     }
   > ```
   > 
   > patch
   > 
   > ```
   > Subject: [PATCH] patch
   > ---
   > Index: 
llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
   > IDEA additional info:
   > Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
   > <+>UTF-8
   > ===================================================================
   > diff --git 
a/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
 
b/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
   > --- 
a/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
       (revision 2a38aab31b853f0ffdd64aeb5c185f8bf1c6bfcd)
   > +++ 
b/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/metrics/LlapTaskSchedulerMetrics.java
       (date 1776340972465)
   > @@ -31,6 +31,8 @@
   >  import static org.apache.hadoop.metrics2.impl.MsInfo.ProcessName;
   >  import static org.apache.hadoop.metrics2.impl.MsInfo.SessionId;
   >  
   > +import java.util.concurrent.ConcurrentHashMap;
   > +
   >  import org.apache.hadoop.hive.common.JvmMetrics;
   >  import org.apache.hadoop.hive.llap.metrics.LlapMetricsSystem;
   >  import org.apache.hadoop.hive.llap.metrics.MetricsUtils;
   > @@ -51,6 +53,9 @@
   >   */
   >  @Metrics(about = "Llap Task Scheduler Metrics", context = "scheduler")
   >  public class LlapTaskSchedulerMetrics implements MetricsSource {
   > +  private static final ConcurrentHashMap<String, 
LlapTaskSchedulerMetrics> METRICS =
   > +      new ConcurrentHashMap<>();
   > +
   >    private final String name;
   >    private final JvmMetrics jvmMetrics;
   >    private final String sessionId;
   > @@ -102,10 +107,12 @@
   >    }
   >  
   >    public static LlapTaskSchedulerMetrics create(String displayName, 
String sessionId) {
   > -    MetricsSystem ms = LlapMetricsSystem.instance();
   > -    JvmMetrics jm = JvmMetrics.create(MetricsUtils.METRICS_PROCESS_NAME, 
sessionId, ms);
   > -    return ms.register(displayName, "Llap Task Scheduler Metrics",
   > -        new LlapTaskSchedulerMetrics(displayName, jm, sessionId));
   > +    return METRICS.computeIfAbsent(displayName, name -> {
   > +      MetricsSystem ms = LlapMetricsSystem.instance();
   > +      JvmMetrics jm = 
JvmMetrics.initSingleton(MetricsUtils.METRICS_PROCESS_NAME, sessionId, ms);
   > +      return ms.register(name, "Llap Task Scheduler Metrics",
   > +          new LlapTaskSchedulerMetrics(name, jm, sessionId));
   > +    });
   >    }
   >  
   >    @Override
   > Index: 
llap-server/src/java/org/apache/hadoop/hive/llap/metrics/LlapDaemonExecutorMetrics.java
   > IDEA additional info:
   > Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
   > <+>UTF-8
   > ===================================================================
   > diff --git 
a/llap-server/src/java/org/apache/hadoop/hive/llap/metrics/LlapDaemonExecutorMetrics.java
 
b/llap-server/src/java/org/apache/hadoop/hive/llap/metrics/LlapDaemonExecutorMetrics.java
   > --- 
a/llap-server/src/java/org/apache/hadoop/hive/llap/metrics/LlapDaemonExecutorMetrics.java
      (revision 2a38aab31b853f0ffdd64aeb5c185f8bf1c6bfcd)
   > +++ 
b/llap-server/src/java/org/apache/hadoop/hive/llap/metrics/LlapDaemonExecutorMetrics.java
      (date 1776341049814)
   > @@ -236,7 +236,7 @@
   >        int numExecutorsConfigured, int waitQueueSizeConfigured, final 
int[] intervals, int timedWindowAverageDataPoints,
   >        long timedWindowAverageWindowLength, int 
simpleAverageWindowDataSize) {
   >      MetricsSystem ms = LlapMetricsSystem.instance();
   > -    JvmMetrics jm = JvmMetrics.create(MetricsUtils.METRICS_PROCESS_NAME, 
sessionId, ms);
   > +    JvmMetrics jm = 
JvmMetrics.initSingleton(MetricsUtils.METRICS_PROCESS_NAME, sessionId, ms);
   >      return ms.register(displayName, "LlapDaemon Executor Metrics",
   >          new LlapDaemonExecutorMetrics(displayName, jm, sessionId, 
numExecutorsConfigured, waitQueueSizeConfigured,
   >              intervals, timedWindowAverageDataPoints, 
timedWindowAverageWindowLength, simpleAverageWindowDataSize));
   > Index: common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java
   > IDEA additional info:
   > Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
   > <+>UTF-8
   > ===================================================================
   > diff --git a/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java 
b/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java
   > --- a/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java        
(revision 2a38aab31b853f0ffdd64aeb5c185f8bf1c6bfcd)
   > +++ b/common/src/java/org/apache/hadoop/hive/common/JvmMetrics.java        
(date 1776340794035)
   > @@ -51,8 +51,12 @@
   >      JvmMetrics impl;
   >  
   >      synchronized JvmMetrics init(String processName, String sessionId) {
   > +      return init(processName, sessionId, 
DefaultMetricsSystem.instance());
   > +    }
   > +
   > +    synchronized JvmMetrics init(String processName, String sessionId, 
MetricsSystem ms) {
   >        if (impl == null) {
   > -        impl = create(processName, sessionId, 
DefaultMetricsSystem.instance());
   > +        impl = create(processName, sessionId, ms);
   >        }
   >        return impl;
   >      }
   > @@ -87,6 +91,10 @@
   >      return Singleton.INSTANCE.init(processName, sessionId);
   >    }
   >  
   > +  public static JvmMetrics initSingleton(String processName, String 
sessionId, MetricsSystem ms) {
   > +    return Singleton.INSTANCE.init(processName, sessionId, ms);
   > +  }
   > +
   >    @Override
   >    public void getMetrics(MetricsCollector collector, boolean all) {
   >      MetricsRecordBuilder rb = collector.addRecord(JvmMetrics)
   > ```
   
   took a quick look, I'm fine with this guy if you both can agree with this 
approach, I'll apply it in this PR


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