[
https://issues.apache.org/jira/browse/HBASE-8310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13663779#comment-13663779
]
Jerry He commented on HBASE-8310:
---------------------------------
[~mbertozzi]
Thanks for your comment. I totally agree with you.
Sorry I mis-communicated badly with the stmt you quoted.
Yes, the "reject snapshot" exception is thrown in prepareToTakeSnapshot() by
checking the the snapshotHandler. But in this particular case at the moment:
1) The current snapshot A is blocked on table lock in snapshotTable(). Its
snapshotHandler is not put into the map yet.
2) The next snapshot B comes in and calls prepareToTakeSnapshot(). It will pass
thru without being rejected since there is no current snapshotHandler in the
map yet.
3) snapshot B can not enter snapshotTable() since it is synchronized.
4) snapshot A can not leave snapshotTable() because it is blocked on table lock.
5) Effectively snapshot B is prevented from going in by the table lock block.
But you are right. I don't think the patch solves the problem, which is to let
snapshot B get "Reject snapshot" exception in prepareToTakeSnapshot().
> HBase snapshot timeout default values and TableLockManger timeout
> -----------------------------------------------------------------
>
> Key: HBASE-8310
> URL: https://issues.apache.org/jira/browse/HBASE-8310
> Project: HBase
> Issue Type: Bug
> Components: snapshots
> Affects Versions: 0.95.0
> Reporter: Jerry He
> Assignee: Jerry He
> Priority: Minor
> Fix For: 0.98.0, 0.95.2, 0.94.9
>
> Attachments: trunk.patch
>
>
> There are a few timeout values and defaults being used by HBase snapshot.
> DEFAULT_MAX_WAIT_TIME (60000 milli sec, 1 min) for client response
> TIMEOUT_MILLIS_DEFAULT (60000 milli sec, 1 min) for Procedure timeout
> SNAPSHOT_TIMEOUT_MILLIS_DEFAULT (60000 milli sec, 1 min) for region server
> subprocedure
> There is also other timeout involved, for example,
> DEFAULT_TABLE_WRITE_LOCK_TIMEOUT_MS (10 mins) for
> TakeSnapshotHandler#prepare()
> We could have this case:
> The user issues a sync snapshot request, waits for 1 min, and gets an
> exception.
> In the meantime the snapshot handler is blocked on the table lock, and the
> snapshot may continue to finish after 10 mins.
> But the user will probably re-issue the snapshot request during the 10 mins.
> This is a little confusing and messy when this happens.
> To be more reasonable, we should either increase the DEFAULT_MAX_WAIT_TIME or
> decrease the table lock waiting time.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira