[ https://issues.apache.org/jira/browse/HIVE-26471?focusedWorklogId=815495&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-815495 ]
ASF GitHub Bot logged work on HIVE-26471: ----------------------------------------- Author: ASF GitHub Bot Created on: 11/Oct/22 07:37 Start Date: 11/Oct/22 07:37 Worklog Time Spent: 10m Work Description: deniskuzZ commented on code in PR #3645: URL: https://github.com/apache/hive/pull/3645#discussion_r991919119 ########## 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)); + + initiatedPoolCount.compute(element.getPoolName(), (k, old) -> (old == null) ? 1 : old + 1); + // find the oldest element + if (oldestEnqueueTime > element.getEnqueueTime()) { + oldestEnqueueTime = element.getEnqueueTime(); + } } if (element.isSetStart()) { - if (TxnStore.WORKING_RESPONSE.equals(state) && (oldestWorkingTime > element.getStart())) { - oldestWorkingTime = element.getStart(); + if (TxnStore.WORKING_RESPONSE.equals(state)) { + final int startSeconds = (int) ((currentTime - element.getStart()) / 1000); + oldestEnqueueTimePerPool.compute(element.getPoolName(), (k, old) -> (old == null) ? startSeconds : Math.max(startSeconds, old)); + + workingPoolCount.compute(element.getPoolName(), (k, old) -> (old == null) ? 1 : old + 1); + // find the oldest element + if (oldestWorkingTime > element.getStart()) { + oldestWorkingTime = element.getStart(); + } } } if (element.isSetCleanerStart()) { - if (TxnStore.CLEANING_RESPONSE.equals(state) && (oldestCleaningTime > element.getCleanerStart())) { - oldestCleaningTime = element.getCleanerStart(); + if (TxnStore.CLEANING_RESPONSE.equals(state)) { Review Comment: yes, please Issue Time Tracking ------------------- Worklog Id: (was: 815495) Time Spent: 4h 20m (was: 4h 10m) > 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: 4h 20m > 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)