[
https://issues.apache.org/jira/browse/HIVE-8258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14167348#comment-14167348
]
Eugene Koifman commented on HIVE-8258:
--------------------------------------
getAcidState() has
{noformat}
if (bestBase != null) {
// remove the entries so we don't get confused later and think we should
// use them.
original.clear();
} else {
// Okay, we're going to need these originals. Recurse through them and
figure out what we
// really need.
for (FileStatus origDir : originalDirectories) {
findOriginals(fs, origDir, original);
}
}
{noformat}
The 'if' part doesn't do anything useful.
Also, I think the logic for why this changes addresses the race condition is
very subtle, so a more detailed comment would be useful.
Otherwise, +1.
> Compactor cleaners can be starved on a busy table or partition.
> ---------------------------------------------------------------
>
> Key: HIVE-8258
> URL: https://issues.apache.org/jira/browse/HIVE-8258
> Project: Hive
> Issue Type: Bug
> Components: Transactions
> Affects Versions: 0.13.1
> Reporter: Alan Gates
> Assignee: Alan Gates
> Priority: Critical
> Fix For: 0.14.0
>
> Attachments: HIVE-8258.2.patch, HIVE-8258.3.patch, HIVE-8258.4.patch,
> HIVE-8258.5.patch, HIVE-8258.6.patch, HIVE-8258.patch
>
>
> Currently the cleaning thread in the compactor does not run on a table or
> partition while any locks are held on this partition. This leaves it open to
> starvation in the case of a busy table or partition. It only needs to wait
> until all locks on the table/partition at the time of the compaction have
> expired. Any jobs initiated after that (and thus any locks obtained) will be
> for the new versions of the files.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)