[
https://issues.apache.org/jira/browse/HBASE-16964?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Helmling updated HBASE-16964:
----------------------------------
Attachment: HBASE-16964.002.patch
Here's an updated patch based on the review comments. Changes in this version:
* Addressed prior TODO -- removed {{HFileArchiver#resolveAndArchive(FileSystem,
Path, Collection<File>):boolean}} and refactored the prior uses of it to throw
FailedArchiveException with the specific failed files. I left the throwing on
the caller side so that the exception message could be specific to the caller
context. The places up the call stack where this was invoked were throwing
IOException prior, so it shouldn't be a change in behavior.
* added InterfaceAudience.Private annotations to FailedArchiveException and
HFileArchiver. These both seem to be down in HBase internals, so Private
seemed appropriate to me.
* added empty check prior to clearCompactedFiles()
> Successfully archived files are not cleared from compacted store file list if
> archiving of any file fails
> ---------------------------------------------------------------------------------------------------------
>
> Key: HBASE-16964
> URL: https://issues.apache.org/jira/browse/HBASE-16964
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Reporter: Gary Helmling
> Assignee: Gary Helmling
> Priority: Blocker
> Fix For: 2.0.0, 1.3.0, 1.4.0
>
> Attachments: HBASE-16964.002.patch, HBASE-16964.patch
>
>
> In HStore.removeCompactedFiles(), we only clear archived files from
> StoreFileManager's list of compactedfiles if _all_ files were archived
> successfully. If we encounter an error archiving any of the files, then any
> files which were already archived will remain in the list of compactedfiles.
> Even worse, this means that all subsequent attempts to archive the list of
> compacted files will fail (as the previously successfully archived files
> still in the list will now throw FileNotFoundException), and the list of
> compactedfiles will never be cleared from that point on.
> Finally, when the region closes, we will again throw an exception out of
> HStore.removeCompactedFiles(), in this case causing a regionserver abort.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)