Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5765D9608 for ; Thu, 11 Dec 2014 07:03:13 +0000 (UTC) Received: (qmail 50739 invoked by uid 500); 11 Dec 2014 07:03:13 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 50613 invoked by uid 500); 11 Dec 2014 07:03:13 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 50334 invoked by uid 99); 11 Dec 2014 07:03:13 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Dec 2014 07:03:13 +0000 Date: Thu, 11 Dec 2014 07:03:12 +0000 (UTC) From: "Jerry He (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-12644) Visibility Labels: issue with storing super users in labels table MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-12644?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14242242#comment-14242242 ] Jerry He commented on HBASE-12644: ---------------------------------- The race condition seems to be here: In ZKVisibilityLabelWatcher.writeToZookeeper() {code} ZKUtil.createWithParents(watcher, znode); ZKUtil.updateExistingNodeData(watcher, znode, data, -1); {code} Note that these are two separate calls. If the node does not exist (for example, user_auths node is getting created for the first time), the two calls will trigger two events: nodeCreated, and nodeDataChanged. On the receiving side, {code} public void nodeCreated(String path) { if (path.equals(labelZnode) || path.equals(userAuthsZnode)) { try { ZKUtil.watchAndCheckExists(watcher, path); } catch (KeeperException ke) { LOG.error("Error setting watcher on node " + path, ke); // only option is to abort watcher.abort("Zookeeper error obtaining label node children", ke); } } {code} If the nodeDataChanged event come in before the ZKUtil.watchAndCheckExists() when the first event is still being processed, then the second event is lost by this receiver. I am seeing even after the setAuths() is done, the scan still lacks the auth. It did not happen before in the tests is because we create the 'user_auths' node when adding the system and super user auths. Now with this patch, the creation of the node is postponed. > Visibility Labels: issue with storing super users in labels table > ----------------------------------------------------------------- > > Key: HBASE-12644 > URL: https://issues.apache.org/jira/browse/HBASE-12644 > Project: HBase > Issue Type: Bug > Components: security > Affects Versions: 0.98.8, 0.99.2 > Reporter: Jerry He > Assignee: Jerry He > Fix For: 1.0.0, 0.98.10 > > Attachments: HBASE-12644-master-v2.patch, HBASE-12644-master.patch > > > Super users have all the permissions for ACL and Visibility labels. > They are defined in hbase-site.xml. > Currently in VisibilityController, we persist super user with their system permission in hbase:labels. > This makes change in super user difficult. > There are two issues: > In the current DefaultVisibilityLabelServiceImpl.addSystemLabel, we only add super user when we initially create the 'system' label. > No additional update after that even if super user changed. See code for details. > > Additionally, there is no mechanism to remove any super user from the labels table. > > We probably should not persist super users in the labels table. > They are in hbase-site.xml and can just stay in labelsCache and used from labelsCache after retrieval by Visibility Controller. -- This message was sent by Atlassian JIRA (v6.3.4#6332)