hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "nkeywal (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-5573) Replace client ZooKeeper watchers by simple ZooKeeper reads
Date Tue, 20 Mar 2012 20:41:52 GMT

    [ https://issues.apache.org/jira/browse/HBASE-5573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13233721#comment-13233721

nkeywal commented on HBASE-5573:

Patch to get a first feedback. 

Unfortunately, it's more a hack than anything else, because I'am trying to keep the existing
code & interface and not rewriting everything.

Today HBase considers any ZK client as a client that will watch the values, and does not distinguish
simple readers vs. watchers. To change this, I:
- Split ZooKeeperWatcher in two classes, one ZooKeeperWatcher with the same responsibilities
as today, and another, ZooKeeperHBaseNodes, that contains the hbase znode definition. ZooKeeperWatcher
extends ZooKeeperHBaseNodes.
- In ZKUtils, depending if a watch is involved or not, changed the expected type from ZooKeeperWatcher
to ZooKeeperHBaseNodes. 

That's not a hack yet. The issues are:
- The client is supposed to wait if the root location znode is not yet created in ZK. I don't
think that the trunk implementation actually works. But it's done with a watcher. As we don't
want a watcher, I changed it to a loop.

- As HConnectionImplementation now uses a simple connection and not a Watcher, the deprecated
interface (that returns a ZooKeeperWatcher) cannot reuse the internal connection to ZK, but
must be duplicated.

- In trunk, the current dependencies are:
 - RecovableZooKeeper depends(contains) on ZooKeeper
 - ZooKeeper depends(contains) on ZooKeeperWatcher
 - ZooKeeperWatcher depends(contains) RecovableZooKeeper
 - ZKUtils depends(uses) RecovableZooKeeper and ZooKeeperWatcher

That makes it difficult to reuse any part of code without having a ZooKeeperWatcher. To be
able to reuse it, what's happening when using a ZooKeeperHBaseNodes is that the underlying
ZooKeeperWatcher is actually null.

I still have to do a lot of renaming if we go for this approach.

I had some failure that could be unrelated, but I haven't looked at them yet:
> Replace client ZooKeeper watchers by simple ZooKeeper reads
> -----------------------------------------------------------
>                 Key: HBASE-5573
>                 URL: https://issues.apache.org/jira/browse/HBASE-5573
>             Project: HBase
>          Issue Type: Improvement
>          Components: client, zookeeper
>    Affects Versions: 0.96.0
>            Reporter: nkeywal
>            Assignee: nkeywal
>            Priority: Minor
> Some code in the package needs to read data in ZK. This could be done by a simple read,
but is actually implemented with a watcher. This holds ZK resources.
> Fixing this could also be an opportunity to remove the need for the client to provide
the master address and port.

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


View raw message