Viktor Csomor created HIVE-25746:
------------------------------------

             Summary: Compaction Failure Counter counted incorrectly
                 Key: HIVE-25746
                 URL: https://issues.apache.org/jira/browse/HIVE-25746
             Project: Hive
          Issue Type: Bug
          Components: Metastore
    Affects Versions: 4.0.0
            Reporter: Viktor Csomor
            Assignee: Viktor Csomor


The count of the below metrics counted incorrectly upon an exception.
- {{compaction_initator_failure_counter}}
- {{compaction_cleaner_failure_counter}}

Reasoning:
In the {{Initator}}/{{Cleaner}} class creates a list of {{CompletableFuture}} 
which {{Runnable}} core exception is being wrapped to {{RuntimeExceptions}}. 
The below code-snippet waits all cleaners to complete (Initiators does it 
similarly).
{code:java}
        try {
           ....
            for (CompactionInfo compactionInfo : readyToClean) {
              
cleanerList.add(CompletableFuture.runAsync(CompactorUtil.ThrowingRunnable.unchecked(()
 ->
                      clean(compactionInfo, cleanerWaterMark, metricsEnabled)), 
cleanerExecutor));
            }
            CompletableFuture.allOf(cleanerList.toArray(new 
CompletableFuture[0])).join();
          }
        } catch (Throwable t) {
          // the lock timeout on AUX lock, should be ignored.
          if (metricsEnabled && handle != null) {
            failuresCounter.inc();
          }
{code}

If the {{CompleteableFututre#join}} throws an Exception then the failure 
counter is incremented.

Let's suppose we have 10 cleaners and the 2nd throws an exception. The 
{{catch}} block will be initiated and the {{failuresCounter}} will be 
incremented. If there is any consecutive error amongst the remaining cleaners 
the counter won't be incremented. 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to