[
https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14043896#comment-14043896
]
bharath v commented on HBASE-11405:
-----------------------------------
- Thanks for the +1s. I was thinking of writing a patch which creates an
ephemeral znode /hbase/hbck-in-progress while starting hbck and deletes it
while exiting. If a new hbck instance sees already existing znode, it aborts.
However [~mbertozzi] says it is not a good approach to directly deal with ZK
connections as the internal implementations might change breaking this feature
and also since we are trying to remove ZK dependency (via other JIRAs) on
HBase, implementations like this might make that transition difficult. So, In
future when we have a lock() based system, each hbck should probably request a
lock from master and the other hbcks should wait on it.
- Feel free to suggest any other approaches you have in mind.
> Multiple invocations of hbck in parallel disables balancer permanently
> -----------------------------------------------------------------------
>
> Key: HBASE-11405
> URL: https://issues.apache.org/jira/browse/HBASE-11405
> Project: HBase
> Issue Type: Bug
> Components: Balancer, hbck
> Affects Versions: 0.99.0
> Reporter: bharath v
>
> This is because of the following piece of code in hbck
> {code:borderStyle=solid}
> boolean oldBalancer = admin.setBalancerRunning(false, true);
> try {
> onlineConsistencyRepair();
> }
> finally {
> admin.setBalancerRunning(oldBalancer, false);
> }
> {code}
> Newer invocations set oldBalancer to false as it was disabled by previous
> invocations and this disables balancer permanently unless its manually turned
> on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2
> different sessions and you can see that balancer is set to false in the
> HMaster logs.
--
This message was sent by Atlassian JIRA
(v6.2#6252)