You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@phoenix.apache.org by "Hadoop QA (Jira)" <ji...@apache.org> on 2020/06/02 23:21:00 UTC

[jira] [Commented] (PHOENIX-5920) Skip SYSTEM TABLE checks while creating phoenix connection if client has set the DoNotUpgrade config

    [ https://issues.apache.org/jira/browse/PHOENIX-5920?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17124458#comment-17124458 ] 

Hadoop QA commented on PHOENIX-5920:
------------------------------------

{color:red}-1 overall{color}.  Here are the results of testing the latest attachment 
  http://issues.apache.org/jira/secure/attachment/13004648/PHOENIX-5920.v2.patch
  against master branch at commit 02047c0a25e9375b43679c690d45d51a4ba8ba2d.
  ATTACHMENT ID: 13004648

    {color:green}+1 @author{color}.  The patch does not contain any @author tags.

    {color:green}+1 tests included{color}.  The patch appears to include 1 new or modified tests.

    {color:green}+1 javac{color}.  The applied patch does not increase the total number of javac compiler warnings.

    {color:red}-1 release audit{color}.  The applied patch generated 1 release audit warnings (more than the master's current 0 warnings).

    {color:red}-1 lineLengths{color}.  The patch introduces the following lines longer than 100:
    +        try (Connection con1 = DriverManager.getConnection(getJdbcUrl(), propsDoNotUpgradePropSet)) {
+            String ddl = "CREATE TABLE " + tableName + " (PK1 VARCHAR not null, PK2 VARCHAR not null, "
+                                    .setSchemaName(SchemaUtil.getSchemaNameFromFullName(physicalTableName))
+                                    .setTableName(SchemaUtil.getTableNameFromFullName(physicalTableName)).build().buildException();
+                                    .setSchemaName(SchemaUtil.getSchemaNameFromFullName(physicalTableName))
+                                    .setTableName(SchemaUtil.getTableNameFromFullName(physicalTableName)).build().buildException();
+                                .setSchemaName(SchemaUtil.getSchemaNameFromFullName(physicalTableName))
+                                .setTableName(SchemaUtil.getTableNameFromFullName(physicalTableName)).build().buildException();

     {color:red}-1 core tests{color}.  The patch failed these unit tests:
     ./phoenix-core/target/failsafe-reports/TEST-org.apache.phoenix.end2end.AlterMultiTenantTableWithViewsIT
./phoenix-core/target/failsafe-reports/TEST-org.apache.phoenix.end2end.PermissionNSDisabledIT

Test results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/3921//testReport/
Code Coverage results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/3921//artifact/phoenix-core/target/site/jacoco/index.html
Release audit warnings: https://builds.apache.org/job/PreCommit-PHOENIX-Build/3921//artifact/patchprocess/patchReleaseAuditWarnings.txt
Console output: https://builds.apache.org/job/PreCommit-PHOENIX-Build/3921//console

This message is automatically generated.

> Skip SYSTEM TABLE checks while creating phoenix connection if client has set the DoNotUpgrade config
> ----------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-5920
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5920
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 5.0.0, 4.15.0, 4.14.3
>            Reporter: Neha Gupta
>            Assignee: Neha Gupta
>            Priority: Major
>             Fix For: 5.1.0, 4.16.0
>
>         Attachments: PHOENIX-5920.patch, PHOENIX-5920.v1.patch, PHOENIX-5920.v2.patch
>
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> Phoenix checks upgrade path even if client has set "DoNotUpgrade" config. When HMaster failover happens and Phoenix client creating phoenix connection, we get exception "org.apache.hadoop.hbase.PleaseHoldException: Master is initializing" because phoenix calls HBase admin apis to check if SYSTEM tables are in place and does not require an upgrade.  [CQSI.init()|https://github.com/apache/phoenix/blob/aad583670ea821286ab5e2460ce0ab7255d474c4/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L3169] initiates creating systems table and [CQSI.ensureTableCreated|https://github.com/apache/phoenix/blob/aad583670ea821286ab5e2460ce0ab7255d474c4/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L1246] is checking if SYTEM table requires upgrade and calls hbaseAdminApis to perform this operation which fails if HMaster is not running. Can we honor the "DoNotUpgrade" config by client(By making an assumption that SYSTEM table is already up-to-date and phoenix client shouldn't perform any upgrades) and skip this upgrade checks ?
> EnsureTableCreated performs bunch of client-server compatibility checks like:
> 1.SYSTEM.CATALOG exists and its timestamp < MIN_SYSTEM_TABLE_TIMESTAMP
> 2.SYSTEM.CATALOG exists, but client and server-side namespace mapping is enabled so we need to migrate SYSTEM tables to the SYSTEM namespace
> 3.When an end-user uses the vanilla PhoenixDriver to create a connection and a requirement for upgrade is detected. In this case, the user should get a connection on which they are only able to run "EXECUTE UPGRADE".



--
This message was sent by Atlassian Jira
(v8.3.4#803005)