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)