[ 
https://issues.apache.org/jira/browse/HIVE-26471?focusedWorklogId=815490&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-815490
 ]

ASF GitHub Bot logged work on HIVE-26471:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 11/Oct/22 07:33
            Start Date: 11/Oct/22 07:33
    Worklog Time Spent: 10m 
      Work Description: deniskuzZ commented on code in PR #3645:
URL: https://github.com/apache/hive/pull/3645#discussion_r991915282


##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/CompactionMetricData.java:
##########
@@ -67,34 +70,53 @@ static CompactionMetricData 
of(List<ShowCompactResponseElement> compacts) {
 
   private void init() {
     final Map<String, ShowCompactResponseElement> lastElements = new 
HashMap<>();
-    poolCount = new HashMap<>();
+    initiatedPoolCount = new HashMap<>();
+    workingPoolCount = new HashMap<>();
+    oldestEnqueueTimePerPool = new HashMap<>();
+    oldestWorkingTimePerPool = new HashMap<>();
 
     oldestEnqueueTime = OLDEST_TIME_NO_VALUE;
     oldestWorkingTime = OLDEST_TIME_NO_VALUE;
     oldestCleaningTime = OLDEST_TIME_NO_VALUE;
+
+    long currentTime = System.currentTimeMillis();
     for (ShowCompactResponseElement element : compacts) {
       final String key = element.getDbname() + "/" + element.getTablename() +
           (element.getPartitionname() != null ? "/" + 
element.getPartitionname() : "");
 
       // If new key, add the element, if there is an existing one, change to 
the element if the element.id is greater than old.id
       lastElements.compute(key, (k, old) -> (old == null) ? element : 
(element.getId() > old.getId() ? element : old));
 
-      // find the oldest elements with initiated and working states
       String state = element.getState();
-      if (TxnStore.INITIATED_RESPONSE.equals(state) && (oldestEnqueueTime > 
element.getEnqueueTime())) {
-        oldestEnqueueTime = element.getEnqueueTime();
-        poolCount.compute(element.getPoolName(), (k, old) -> (old == null) ? 1 
: old + 1);
+      if (TxnStore.INITIATED_RESPONSE.equals(state)) {
+        final int enqueueSeconds = (int) ((currentTime - 
element.getEnqueueTime()) / 1000);
+        oldestWorkingTimePerPool.compute(element.getPoolName(), (k, old) -> 
(old == null) ? enqueueSeconds : Math.max(enqueueSeconds, old));

Review Comment:
   shouldn't it be vice versa? when INITIATED_RESPONSE ->  
oldestEnqueueTimePerPool, when WORKING_RESPONSE -> oldestWorkingTimePerPool





Issue Time Tracking
-------------------

    Worklog Id:     (was: 815490)
    Time Spent: 3h 50m  (was: 3h 40m)

> New metric for Compaction pooling
> ---------------------------------
>
>                 Key: HIVE-26471
>                 URL: https://issues.apache.org/jira/browse/HIVE-26471
>             Project: Hive
>          Issue Type: Improvement
>          Components: Hive
>            Reporter: László Végh
>            Assignee: László Végh
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 4.0.0-alpha-2
>
>          Time Spent: 3h 50m
>  Remaining Estimate: 0h
>
> To be able to properly supervise the pool based compaction, a new metric is 
> required:
> Number of 'Initiated' compaction requests per compaction pool.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to