[
https://issues.apache.org/jira/browse/HBASE-5494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13268102#comment-13268102
]
stack commented on HBASE-5494:
------------------------------
bq. I think it makes sense to have a separate JIRA (or perhaps another patch
for the same JIRA?) to address this...
Yes. Would be a separate JIRA. I'm just trying to have it so it is a
continuation of the work done here rather than a different table locking
facility that runs beside this one because we need read/writes and that there
can be multiple read locks outstanding at anyone time; one per region currently
splitting/merging.
On region-level locks, we do not need this I'd say (Already, region changes go
via zk and there'll be failed transitions if concurrent operators try
manipulate a single region given we usually check znode sequence id before we
go forward moving a region to a new state).
You thought this overkill for your case?
http://zookeeper.apache.org/doc/r3.1.2/recipes.html#Shared+Locks That is fine.
Do you think we could backfill it later underneath the patch attached here?
On the lock being left in place on master crash, whats wrong w/ that? Thats
sort of what we want I'd say. Or more, what we really want is that when the
new master comes up, he finishes off what the previous master was at. To that
end, should lock and unlock be public apis on the master at all, but rather
just internal primitives used by the master doing disable/enable? If you
disable a table, the first think you do is obtain a lock and then when done,
you let it go on completion. A new master that comes up after a previous
master has crashed and sees a table in disabling state should go ahead and
complete the disable moving the table state to disabled and when done, then it
undoes the unlock to finish the schema change transaction; you'd have to let
the second master be able to undo the lock (Over in accumulo they have a system
where they allow describing a macro change in terms of distinct steps; the
steps are posted to zk and then acted on. We don't have to be that smart just
yet... we can hardcode disable/enable for now).
Good stuff Alex.
> Introduce a zk hosted table-wide read/write lock so only one table operation
> at a time
> --------------------------------------------------------------------------------------
>
> Key: HBASE-5494
> URL: https://issues.apache.org/jira/browse/HBASE-5494
> Project: HBase
> Issue Type: Improvement
> Reporter: stack
> Attachments: D2997.3.patch, D2997.4.patch
>
>
> I saw this facility over in the accumulo code base.
> Currently we just try to sort out the mess when splits come in during an
> online schema edit; somehow we figure we can figure all possible region
> transition combinations and make the right call.
> We could try and narrow the number of combinations by taking out a zk table
> lock when doing table operations.
> For example, on split or merge, we could take a read-only lock meaning the
> table can't be disabled while these are running.
> We could then take a write only lock if we want to ensure the table doesn't
> change while disabling or enabling process is happening.
> Shouldn't be too hard to add.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira