[
https://issues.apache.org/jira/browse/PHOENIX-5269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16861742#comment-16861742
]
Kiran Kumar Maturi commented on PHOENIX-5269:
---------------------------------------------
[~tdsilva] I need some help for the master patch. tests are failing as the
zookeeper watcher is not being initialized.
PhoenixMetaDataControllerEnvironment in master branch implements
CoprocessorEnvironment [github
link|[https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/PhoenixMetaDataCoprocessorHost.java#L135]]
{code:java}
public static class PhoenixMetaDataControllerEnvironment extends
BaseEnvironment<PhoenixCoprocessor>
implements CoprocessorEnvironment<PhoenixCoprocessor> {
{code}
For 4.x-HBase-1.5 branch PhoenixMetaDataControllerEnvironment implements
RegionCoprocessorEnvironment [github
link|[https://github.com/apache/phoenix/blob/4.x-HBase-1.5/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/PhoenixMetaDataCoprocessorHost.java#L117]]
which provided the RegionServerServices to get the zookeeper
{code:java}
public static class PhoenixMetaDataControllerEnvironment extends
CoprocessorHost.Environment
implements RegionCoprocessorEnvironment {{code}
For the master branch PhoenixMetaDataControllerEnvironment provides an instance
of RegionCoprocessorHost
{code:java}
PhoenixMetaDataControllerEnvironment.getCoprocessorHost(){code}
I am not sure if
CoprocessorHost#[checkAndLoadInstance|https://hbase.apache.org/2.0/devapidocs/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#checkAndGetInstance-java.lang.Class-]()
can be used to get an instance of HasRegionServices/RegionServerServices to
get the zookeeper. please suggest
[~apurtell] [~lhofhansl]
> PhoenixAccessController should use AccessChecker instead of
> AccessControlClient for permission checks
> -----------------------------------------------------------------------------------------------------
>
> Key: PHOENIX-5269
> URL: https://issues.apache.org/jira/browse/PHOENIX-5269
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.14.1, 4.14.2
> Reporter: Andrew Purtell
> Assignee: Kiran Kumar Maturi
> Priority: Critical
> Fix For: 4.15.0, 4.14.2
>
> Attachments: PHOENIX-5269-4.14-HBase-1.4.patch,
> PHOENIX-5269-4.14-HBase-1.4.v1.patch, PHOENIX-5269-4.14-HBase-1.4.v2.patch,
> PHOENIX-5269.4.14-HBase-1.4.v3.patch, PHOENIX-5269.4.14-HBase-1.4.v4.patch,
> PHOENIX-5269.4.x-HBase-1.4.v1.patch, PHOENIX-5269.4.x-HBase-1.5.v1.patch,
> PHOENIX-5269.master.v1.patch
>
>
> PhoenixAccessController should use AccessChecker instead of
> AccessControlClient for permission checks.
> In HBase, every RegionServer's AccessController maintains a local cache of
> permissions. At startup time they are initialized from the ACL table.
> Whenever the ACL table is changed (via grant or revoke) the AC on the ACL
> table "broadcasts" the change via zookeeper, which updates the cache. This is
> performed and managed by TableAuthManager but is exposed as API by
> AccessChecker. AccessChecker is the result of a refactor that was committed
> as far back as branch-1.4 I believe.
> Phoenix implements its own access controller and is using the client API
> AccessControlClient instead. AccessControlClient does not cache nor use the
> ZK-based cache update mechanism, because it is designed for client side use.
> The use of AccessControlClient instead of AccessChecker is not scalable.
> Every permissions check will trigger a remote RPC to the ACL table, which is
> generally going to be a single region hosted on a single RegionServer.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)