[
https://issues.apache.org/jira/browse/HBASE-17852?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Rodionov updated HBASE-17852:
--------------------------------------
Description:
Design approach rollback-via-snapshot implemented in this ticket:
# Before backup create/delete/merge starts we take a snapshot of the backup
meta-table (backup system table). This procedure is lightweight because meta
table is small, usually should fit a single region.
# When operation fails on a server side, we handle this failure by cleaning up
partial data in backup destination, followed by restoring backup meta-table
from a snapshot.
# When operation fails on a client side (abnormal termination, for example),
next time user will try create/merge/delete he(she) will see error message,
that system is in inconsistent state and repair is required, he(she) will need
to run backup repair tool.
# To avoid multiple writers to the backup system table (backup client and
BackupObserver's) we introduce small table ONLY to keep listing of bulk loaded
files. All backup observers will work only with this new tables. The reason: in
case of a failure during backup create/delete/merge/restore, when system
performs automatic rollback, some data written by backup observers during
failed operation may be lost. This is what we try to avoid.
# The consistency of a data (when bulk load fails, for example) in a second
table is not important, even if we have some partial data because of a way
system works. When bulk load fails, the second table will still have some
partial list of a bulk loaded files, but these files have not been loaded into
a system and hence, our custom HFile cleaner plugin will never try to clean
then them.
was:
Design approach rollback-via-snapshot implemented in this ticket:
# Before backup create/delete/merge starts we take a snapshot of the backup
meta-table (backup system table).
# When operation fails on a server side, we handle this failure by cleaning up
partial data in backup destination, followed by restoring backup meta-table
from a snapshot.
# To avoid multiple writers to the backup system table (backup client and
BackupObserver's) we introduce small table ONLY to keep listing of bulk loaded
files. All backup observers will work only with this new tables. The reason: in
case of a failure during backup create/delete/merge/restore
> Add Fault tolerance to HBASE-14417 (Support bulk loaded files in incremental
> backup)
> ------------------------------------------------------------------------------------
>
> Key: HBASE-17852
> URL: https://issues.apache.org/jira/browse/HBASE-17852
> Project: HBase
> Issue Type: Sub-task
> Reporter: Vladimir Rodionov
> Assignee: Vladimir Rodionov
> Fix For: 2.0.0-beta-1
>
> Attachments: HBASE-17852-v1.patch, HBASE-17852-v2.patch,
> HBASE-17852-v3.patch, HBASE-17852-v4.patch, HBASE-17852-v5.patch,
> HBASE-17852-v6.patch
>
>
> Design approach rollback-via-snapshot implemented in this ticket:
> # Before backup create/delete/merge starts we take a snapshot of the backup
> meta-table (backup system table). This procedure is lightweight because meta
> table is small, usually should fit a single region.
> # When operation fails on a server side, we handle this failure by cleaning
> up partial data in backup destination, followed by restoring backup
> meta-table from a snapshot.
> # When operation fails on a client side (abnormal termination, for example),
> next time user will try create/merge/delete he(she) will see error message,
> that system is in inconsistent state and repair is required, he(she) will
> need to run backup repair tool.
> # To avoid multiple writers to the backup system table (backup client and
> BackupObserver's) we introduce small table ONLY to keep listing of bulk
> loaded files. All backup observers will work only with this new tables. The
> reason: in case of a failure during backup create/delete/merge/restore, when
> system performs automatic rollback, some data written by backup observers
> during failed operation may be lost. This is what we try to avoid.
> # The consistency of a data (when bulk load fails, for example) in a second
> table is not important, even if we have some partial data because of a way
> system works. When bulk load fails, the second table will still have some
> partial list of a bulk loaded files, but these files have not been loaded
> into a system and hence, our custom HFile cleaner plugin will never try to
> clean then them.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)