You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by an...@apache.org on 2019/03/12 00:09:44 UTC

[phoenix] branch master updated: PHOENIX-5178 SYSTEM schema is not getting cached at MetaData server

This is an automated email from the ASF dual-hosted git repository.

ankit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/master by this push:
     new 5d66774  PHOENIX-5178 SYSTEM schema is not getting cached at MetaData server
5d66774 is described below

commit 5d66774fe886cdc9cf060276a367559cf908c091
Author: Ankit Singhal <an...@gmail.com>
AuthorDate: Mon Mar 11 17:09:36 2019 -0700

    PHOENIX-5178 SYSTEM schema is not getting cached at MetaData server
---
 .../phoenix/end2end/SystemTablePermissionsIT.java  | 43 ++++++++++++++++++++++
 .../phoenix/coprocessor/MetaDataEndpointImpl.java  |  2 +-
 2 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemTablePermissionsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemTablePermissionsIT.java
index 0788ed7..6da970b 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemTablePermissionsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemTablePermissionsIT.java
@@ -17,12 +17,23 @@
 package org.apache.phoenix.end2end;
 
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.security.PrivilegedExceptionAction;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
 import java.util.Collections;
+import java.util.Properties;
 import java.util.Set;
 
 import org.apache.hadoop.hbase.security.access.Permission.Action;
+import org.apache.phoenix.coprocessor.MetaDataProtocol;
+import org.apache.phoenix.jdbc.PhoenixConnection;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.schema.NewerSchemaAlreadyExistsException;
+import org.apache.phoenix.schema.NewerTableAlreadyExistsException;
+import org.apache.phoenix.util.PhoenixRuntime;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -84,5 +95,37 @@ public class SystemTablePermissionsIT extends BasePermissionsIT {
 
         // Make sure that the unprivileged user can now read the table
         verifyAllowed(readTable(TABLE_NAME), regularUser1);
+        //This verification is added to test PHOENIX-5178
+        superUser1.runAs(new PrivilegedExceptionAction<Void>() {
+            @Override public Void run() throws Exception {
+                try {
+                    if (isNamespaceMapped) {
+                        grantPermissions(regularUser1.getShortName(),"SYSTEM", Action.ADMIN);
+                    }
+                    return null;
+                } catch (Throwable e) {
+                    throw new Exception(e);
+                }
+
+            }
+        });
+        if(isNamespaceMapped) {
+            verifyAllowed(new AccessTestAction() {
+                @Override public Object run() throws Exception {
+                    Properties props = new Properties();
+                    props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.toString(isNamespaceMapped));
+                    props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP));
+                    //Impersonate meta connection
+                    try (Connection metaConnection = DriverManager.getConnection(getUrl(), props);
+                        Statement stmt = metaConnection.createStatement()) {
+                        stmt.executeUpdate("CREATE SCHEMA IF NOT EXISTS SYSTEM");
+                    }catch(NewerSchemaAlreadyExistsException e){
+
+                    }
+                    return null;
+                }
+            }, regularUser1);
+        }
     }
+
 }
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
index 0b95b26..06d36d9 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
@@ -1088,7 +1088,7 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements RegionCopr
             keyRanges.add(PVarbinary.INSTANCE.getKeyRange(key, true, stopKey, false));
         }
         Scan scan = new Scan();
-        scan.setTimeRange(MIN_TABLE_TIMESTAMP, clientTimeStamp);
+        scan.setTimeRange(MIN_TABLE_TIMESTAMP, clientTimeStamp + 1);
         ScanRanges scanRanges = ScanRanges.createPointLookup(keyRanges);
         scanRanges.initializeScan(scan);
         scan.setFilter(scanRanges.getSkipScanFilter());