Github user ankitsinghal commented on the issue: https://github.com/apache/phoenix/pull/295 bq. As of now, when the server gets connected to for the first time i.e. no SYSTEM tables exist, we call ensureSystemTablesMigratedToSystemNamespace, but this just creates the HBase SYSTEM namespace and returns without migrating tables since they haven't been created yet. However, later on when we do create other SYSTEM tables, we aren't migrating them to the SYSTEM namespace right away. As per the current implementation, if there is namespace mapping enabled and no SYSTEM table exists then CREATE TABLE should automatically create SYSTEM tables in SYSTEM namespace. There should not be a need of migrating them. It used to work like this, is it not the case now? bq. Now, as per the current design, whenever a second client with NS-mapping enabled connects to the server, we will migrate these SYSTEM tables to the SYSTEM namespace when ensureSystemTablesMigratedToSystemNamespace is called within init (with my PR, this will be called inside ensureTableCreated when the table is SYSTEM.CATALOG and NS-mapping is enabled, instead of in init). My question is, shouldn't we map SYSTEM tables to the SYSTEM namespace immediately after creating them? First connection will be useless, if as per the new design, SYSTEM tables are not getting created in the correct namespace.
---