Preparing phoenix release 4.16.0RC0; tagging and updates to CHANGES.md and RELEASENOTES.md
diff --git a/CHANGES.md b/CHANGES.md
new file mode 100644
index 0000000..8199f6e
--- /dev/null
+++ b/CHANGES.md
@@ -0,0 +1,346 @@
+
+<!---
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+-->
+# PHOENIX Changelog
+
+## Release 4.16.0 - Unreleased (as of 2021-01-28)
+
+
+
+### IMPORTANT ISSUES:
+
+| JIRA | Summary | Priority | Component |
+|:---- |:---- | :--- |:---- |
+| [PHOENIX-5265](https://issues.apache.org/jira/browse/PHOENIX-5265) | [UMBRELLA] Phoenix Test should use object based Plan for result comparison instead of using hard-corded comparison |  Major | . |
+| [PHOENIX-4412](https://issues.apache.org/jira/browse/PHOENIX-4412) | Tephra transaction context visibility level returns null instead of SNAPSHOT\_ALL |  Critical | . |
+| [PHOENIX-5446](https://issues.apache.org/jira/browse/PHOENIX-5446) | Support Protobuf shaded clients (thin + thick) |  Major | . |
+| [PHOENIX-4866](https://issues.apache.org/jira/browse/PHOENIX-4866) | UDFs get error: org.apache.phoenix.schema.FunctionNotFoundException: ERROR 6001 (42F01): Function undefined |  Blocker | . |
+
+
+### NEW FEATURES:
+
+| JIRA | Summary | Priority | Component |
+|:---- |:---- | :--- |:---- |
+| [PHOENIX-6213](https://issues.apache.org/jira/browse/PHOENIX-6213) | Extend Cell Tags to Delete object. |  Major | . |
+| [PHOENIX-6186](https://issues.apache.org/jira/browse/PHOENIX-6186) | Store table metadata last modified timestamp in PTable / System.Catalog |  Major | . |
+| [PHOENIX-5628](https://issues.apache.org/jira/browse/PHOENIX-5628) | Phoenix Function to Return HBase Row Key of Column Cell |  Major | . |
+
+
+### IMPROVEMENTS:
+
+| JIRA | Summary | Priority | Component |
+|:---- |:---- | :--- |:---- |
+| [PHOENIX-6250](https://issues.apache.org/jira/browse/PHOENIX-6250) | Fix ViewMetadataIT test flapper |  Major | . |
+| [PHOENIX-6276](https://issues.apache.org/jira/browse/PHOENIX-6276) | Log when hconnection is getting closed in ConnectionQueryServicesImpl |  Major | core |
+| [PHOENIX-5841](https://issues.apache.org/jira/browse/PHOENIX-5841) | When data columns get TTLed, we need inline index validation to publish a metric for this |  Major | . |
+| [PHOENIX-6307](https://issues.apache.org/jira/browse/PHOENIX-6307) | Build and release official binary distributions with each HBase profile |  Major | core |
+| [PHOENIX-6311](https://issues.apache.org/jira/browse/PHOENIX-6311) | Using phoenix-level table exists check in ViewUtil.getSystemTableForChildLinks |  Major | . |
+| [PHOENIX-6211](https://issues.apache.org/jira/browse/PHOENIX-6211) | Paged scan filters |  Critical | . |
+| [PHOENIX-6275](https://issues.apache.org/jira/browse/PHOENIX-6275) | Handle JVM exit gracefully in unit tests |  Major | . |
+| [PHOENIX-6265](https://issues.apache.org/jira/browse/PHOENIX-6265) | Fix GlobalIndexOptimizationIT test flapper |  Major | . |
+| [PHOENIX-6255](https://issues.apache.org/jira/browse/PHOENIX-6255) | Fix IndexScrutinyIT test flapper |  Major | . |
+| [PHOENIX-6256](https://issues.apache.org/jira/browse/PHOENIX-6256) | Fix MaxConcurrentConnectionsIT test flapper |  Major | . |
+| [PHOENIX-6259](https://issues.apache.org/jira/browse/PHOENIX-6259) | Fix IndexExtendedIT test flapper |  Major | . |
+| [PHOENIX-6258](https://issues.apache.org/jira/browse/PHOENIX-6258) | Fix IndexScrutinyToolIT test flapper |  Major | . |
+| [PHOENIX-6252](https://issues.apache.org/jira/browse/PHOENIX-6252) | Fix BackwardCompatibilityIT test flapper |  Major | . |
+| [PHOENIX-6251](https://issues.apache.org/jira/browse/PHOENIX-6251) | Fix ConcurrentMutationsExtendedIT.testConcurrentUpsertsWithNoIndexedColumns timout issue |  Major | . |
+| [PHOENIX-6245](https://issues.apache.org/jira/browse/PHOENIX-6245) | Update tephra dependency version to 0.16.0 |  Major | core |
+| [PHOENIX-6082](https://issues.apache.org/jira/browse/PHOENIX-6082) | No need to do checkAndPut when altering properties for a table or view with column-encoding enabled |  Major | . |
+| [PHOENIX-6242](https://issues.apache.org/jira/browse/PHOENIX-6242) | Remove remaining  commons-logging references |  Minor | core |
+| [PHOENIX-6086](https://issues.apache.org/jira/browse/PHOENIX-6086) | Take a snapshot of all SYSTEM tables before attempting to upgrade them |  Critical | . |
+| [PHOENIX-6237](https://issues.apache.org/jira/browse/PHOENIX-6237) | Relocate javax. classes in phoenix-client |  Major | core |
+| [PHOENIX-6231](https://issues.apache.org/jira/browse/PHOENIX-6231) | Update Omid to 1.0.2 |  Major | core |
+| [PHOENIX-5895](https://issues.apache.org/jira/browse/PHOENIX-5895) | Leverage WALCellFilter in the SystemCatalogWALEntryFilter to replicate system catalog table |  Minor | core |
+| [PHOENIX-6155](https://issues.apache.org/jira/browse/PHOENIX-6155) | Prevent doing direct upserts into SYSTEM.TASK from the client |  Major | . |
+| [PHOENIX-6207](https://issues.apache.org/jira/browse/PHOENIX-6207) | Paged server side grouped aggregate operations |  Major | . |
+| [PHOENIX-5998](https://issues.apache.org/jira/browse/PHOENIX-5998) | Paged server side ungrouped aggregate operations |  Major | . |
+| [PHOENIX-6212](https://issues.apache.org/jira/browse/PHOENIX-6212) | Improve SystemCatalogIT.testSystemTableSplit() to ensure no splitting occurs when splitting is disabled |  Major | . |
+| [PHOENIX-6184](https://issues.apache.org/jira/browse/PHOENIX-6184) | Emit ageOfUnverifiedRow metric during read repairs |  Minor | core |
+| [PHOENIX-6209](https://issues.apache.org/jira/browse/PHOENIX-6209) | Remove unused estimateParallelLevel() |  Minor | core |
+| [PHOENIX-6208](https://issues.apache.org/jira/browse/PHOENIX-6208) | Backport the assembly changes in PHOENIX-6178 to 4.x |  Major | core |
+| [PHOENIX-6126](https://issues.apache.org/jira/browse/PHOENIX-6126) | All createViewAddChildLink requests will go to the same region of SYSTEM.CHILD\_LINK |  Minor | . |
+| [PHOENIX-6167](https://issues.apache.org/jira/browse/PHOENIX-6167) | Adding maxMutationCellSizeBytes config and exception |  Trivial | . |
+| [PHOENIX-6181](https://issues.apache.org/jira/browse/PHOENIX-6181) | IndexRepairRegionScanner to verify and repair every global index row |  Major | . |
+| [PHOENIX-6129](https://issues.apache.org/jira/browse/PHOENIX-6129) | Optimize tableExists() call while retrieving correct MUTEX table |  Major | . |
+| [PHOENIX-6172](https://issues.apache.org/jira/browse/PHOENIX-6172) | Updating VIEW\_INDEX\_ID column type and ts in Syscat with a 4.16 upgrade script |  Major | . |
+| [PHOENIX-6189](https://issues.apache.org/jira/browse/PHOENIX-6189) | DATA\_EXCEEDS\_MAX\_CAPACITY exception error string should contain column name instead of actual value |  Trivial | . |
+| [PHOENIX-6125](https://issues.apache.org/jira/browse/PHOENIX-6125) | Make sure SYSTEM.TASK does not split |  Major | . |
+| [PHOENIX-6151](https://issues.apache.org/jira/browse/PHOENIX-6151) | Switch phoenix-client to shade-by-default mode |  Major | core |
+| [PHOENIX-6185](https://issues.apache.org/jira/browse/PHOENIX-6185) | OPERATION\_TIMED\_OUT#newException method swallows the exception message and root cause exception. |  Major | core |
+| [PHOENIX-6173](https://issues.apache.org/jira/browse/PHOENIX-6173) | Archive test artifacts in Jenkins multibranch postcommit job |  Major | core |
+| [PHOENIX-6128](https://issues.apache.org/jira/browse/PHOENIX-6128) | Remove unused getAdmin() call inside CQSI.init() |  Minor | . |
+| [PHOENIX-5909](https://issues.apache.org/jira/browse/PHOENIX-5909) | Table and index-level metrics for indexing coprocs |  Major | . |
+| [PHOENIX-6112](https://issues.apache.org/jira/browse/PHOENIX-6112) | Coupling of two classes only use logger |  Minor | core |
+| [PHOENIX-5957](https://issues.apache.org/jira/browse/PHOENIX-5957) | Index rebuild should remove old index rows with higher timestamp |  Major | . |
+| [PHOENIX-5896](https://issues.apache.org/jira/browse/PHOENIX-5896) | Implement incremental rebuild along the failed regions in IndexTool |  Major | . |
+| [PHOENIX-6093](https://issues.apache.org/jira/browse/PHOENIX-6093) | adding hashcode to phoenix pherf Column class |  Minor | . |
+| [PHOENIX-6102](https://issues.apache.org/jira/browse/PHOENIX-6102) | Better isolation for CI jobs an ASF Jenkins |  Major | . |
+| [PHOENIX-6034](https://issues.apache.org/jira/browse/PHOENIX-6034) | Optimize InListIT |  Major | core |
+| [PHOENIX-6063](https://issues.apache.org/jira/browse/PHOENIX-6063) | Remove bugus jline and sqlline dependency from phoenix-core |  Major | core |
+| [PHOENIX-5928](https://issues.apache.org/jira/browse/PHOENIX-5928) | Index rebuilds without replaying data table mutations |  Major | . |
+| [PHOENIX-6037](https://issues.apache.org/jira/browse/PHOENIX-6037) | Change default HBase profile to 1.3 in 4.x |  Major | core |
+| [PHOENIX-5760](https://issues.apache.org/jira/browse/PHOENIX-5760) | Pherf Support Sequential Datatypes for INTEGER type fields and have fixed row distribution |  Minor | . |
+| [PHOENIX-5883](https://issues.apache.org/jira/browse/PHOENIX-5883) | Add HBase 1.6 compatibility module to 4.x branch |  Major | . |
+| [PHOENIX-5789](https://issues.apache.org/jira/browse/PHOENIX-5789) | try to standardize on a JSON library |  Minor | core |
+| [PHOENIX-5975](https://issues.apache.org/jira/browse/PHOENIX-5975) | Index rebuild/verification page size should be configurable from IndexTool |  Major | . |
+| [PHOENIX-5951](https://issues.apache.org/jira/browse/PHOENIX-5951) | IndexTool output logging for past-max-lookback rows should be configurable |  Major | . |
+| [PHOENIX-5897](https://issues.apache.org/jira/browse/PHOENIX-5897) | SingleKeyValueTuple.toString() returns unexpected result |  Minor | . |
+| [PHOENIX-5793](https://issues.apache.org/jira/browse/PHOENIX-5793) | Support parallel init and fast null return for SortMergeJoinPlan. |  Minor | . |
+| [PHOENIX-5956](https://issues.apache.org/jira/browse/PHOENIX-5956) | Optimize LeftSemiJoin For SortMergeJoin |  Major | . |
+| [PHOENIX-5875](https://issues.apache.org/jira/browse/PHOENIX-5875) | Optional logging for IndexTool verification |  Major | . |
+| [PHOENIX-5910](https://issues.apache.org/jira/browse/PHOENIX-5910) | IndexTool verification-only runs should have counters for unverified rows |  Major | . |
+| [PHOENIX-5931](https://issues.apache.org/jira/browse/PHOENIX-5931) | PhoenixIndexFailurePolicy throws NPE if cause of IOE is null |  Minor | . |
+| [PHOENIX-5256](https://issues.apache.org/jira/browse/PHOENIX-5256) | Remove queryserver related scripts/files as the former has its own repo |  Trivial | . |
+| [PHOENIX-5899](https://issues.apache.org/jira/browse/PHOENIX-5899) | Index writes and verifications should contain information of underlying cause of failure |  Major | . |
+| [PHOENIX-5892](https://issues.apache.org/jira/browse/PHOENIX-5892) | Add code coverage steps in build documentation |  Major | . |
+| [PHOENIX-5891](https://issues.apache.org/jira/browse/PHOENIX-5891) | Ensure that code coverage does not drop with subsequent commits |  Major | . |
+| [PHOENIX-5842](https://issues.apache.org/jira/browse/PHOENIX-5842) | Code Coverage tool for Phoenix |  Major | . |
+| [PHOENIX-5878](https://issues.apache.org/jira/browse/PHOENIX-5878) | IndexTool should not fail jobs when the only errors are due to rows out of MaxLookback |  Major | . |
+| [PHOENIX-5808](https://issues.apache.org/jira/browse/PHOENIX-5808) | Improve shaded artifact naming convetions |  Major | core |
+| [PHOENIX-4521](https://issues.apache.org/jira/browse/PHOENIX-4521) | Allow Pherf scenario to define per query max allowed query execution duration after which thread is interrupted |  Major | . |
+| [PHOENIX-5748](https://issues.apache.org/jira/browse/PHOENIX-5748) | Simplify index update generation code for consistent global indexes |  Major | . |
+| [PHOENIX-5794](https://issues.apache.org/jira/browse/PHOENIX-5794) | Create a threshold for non async index creation, that can be modified in configs |  Major | . |
+| [PHOENIX-5746](https://issues.apache.org/jira/browse/PHOENIX-5746) | Update release documentation to include versions information |  Major | . |
+| [PHOENIX-5734](https://issues.apache.org/jira/browse/PHOENIX-5734) | IndexScrutinyTool should not report rows beyond maxLookBack age |  Major | . |
+| [PHOENIX-5751](https://issues.apache.org/jira/browse/PHOENIX-5751) | Remove redundant IndexUtil#isGlobalIndexCheckEnabled() calls for immutable data tables |  Major | . |
+| [PHOENIX-5641](https://issues.apache.org/jira/browse/PHOENIX-5641) | Decouple phoenix-queryserver from phoenix-core |  Major | . |
+| [PHOENIX-5633](https://issues.apache.org/jira/browse/PHOENIX-5633) | Add table name info to scan logging |  Major | . |
+| [PHOENIX-5697](https://issues.apache.org/jira/browse/PHOENIX-5697) | Avoid resource leakage with try-with-resources |  Major | . |
+| [PHOENIX-5703](https://issues.apache.org/jira/browse/PHOENIX-5703) | Add MAVEN\_HOME toPATH in jenkins build |  Major | . |
+| [PHOENIX-5634](https://issues.apache.org/jira/browse/PHOENIX-5634) | Use 'phoenix.default.update.cache.frequency' from connection properties at query time |  Minor | . |
+| [PHOENIX-5645](https://issues.apache.org/jira/browse/PHOENIX-5645) | BaseScannerRegionObserver should prevent compaction from purging very recently deleted cells |  Major | . |
+| [PHOENIX-5674](https://issues.apache.org/jira/browse/PHOENIX-5674) | IndexTool to not write already correct index rows |  Major | . |
+| [PHOENIX-5454](https://issues.apache.org/jira/browse/PHOENIX-5454) | Phoenix scripts start foreground java processes as child processes |  Minor | . |
+| [PHOENIX-5630](https://issues.apache.org/jira/browse/PHOENIX-5630) | MAX\_MUTATION\_SIZE\_EXCEEDED and MAX\_MUTATION\_SIZE\_BYTES\_EXCEEDED SQLExceptions should print existing size |  Minor | . |
+| [PHOENIX-5646](https://issues.apache.org/jira/browse/PHOENIX-5646) | Correct and update the release documentation |  Major | . |
+| [PHOENIX-5614](https://issues.apache.org/jira/browse/PHOENIX-5614) | Remove unnecessary instances of ClassNotFoundException thrown stemming from various QueryUtil APIs |  Minor | . |
+
+
+### BUG FIXES:
+
+| JIRA | Summary | Priority | Component |
+|:---- |:---- | :--- |:---- |
+| [PHOENIX-6339](https://issues.apache.org/jira/browse/PHOENIX-6339) | Older client using aggregate queries shows incorrect results. |  Blocker | . |
+| [PHOENIX-6273](https://issues.apache.org/jira/browse/PHOENIX-6273) | Add support to handle MR Snapshot restore externally |  Major | core |
+| [PHOENIX-6319](https://issues.apache.org/jira/browse/PHOENIX-6319) | remove cp python logic from the release script |  Major | . |
+| [PHOENIX-6298](https://issues.apache.org/jira/browse/PHOENIX-6298) | Use timestamp of PENDING\_DISABLE\_COUNT to calculate elapse time for PENDING\_DISABLE state |  Major | . |
+| [PHOENIX-6148](https://issues.apache.org/jira/browse/PHOENIX-6148) | [SchemaExtractionTool]DDL parsing exception in Phoenix in view name |  Major | . |
+| [PHOENIX-6295](https://issues.apache.org/jira/browse/PHOENIX-6295) | Fix non-static inner classes for better memory management |  Major | . |
+| [PHOENIX-3499](https://issues.apache.org/jira/browse/PHOENIX-3499) | Enable null value for quote character for CSVBulkLoad tool |  Major | . |
+| [PHOENIX-3633](https://issues.apache.org/jira/browse/PHOENIX-3633) | null pointer exception when subsquery for not exists returns empty result set |  Major | . |
+| [PHOENIX-6293](https://issues.apache.org/jira/browse/PHOENIX-6293) | PHOENIX-6193 breaks projects depending on the phoenix-client artifact |  Blocker | core |
+| [PHOENIX-6296](https://issues.apache.org/jira/browse/PHOENIX-6296) | Synchronize @Parameters, @BeforeClass and @AfterClass methods take 2 |  Critical | core |
+| [PHOENIX-6286](https://issues.apache.org/jira/browse/PHOENIX-6286) | Extend syscat RegionSplitPolicies from the default Policy for the HBase branch |  Major | . |
+| [PHOENIX-6287](https://issues.apache.org/jira/browse/PHOENIX-6287) | Fix incorrect log  in ParallelIterators.submitWork |  Major | . |
+| [PHOENIX-6283](https://issues.apache.org/jira/browse/PHOENIX-6283) | MutableIndexExtendedIT#testCompactDisabledIndex consistently fails with HBase 2.3 |  Blocker | core |
+| [PHOENIX-6267](https://issues.apache.org/jira/browse/PHOENIX-6267) | View Index PK Fixed Width Field Truncation |  Blocker | . |
+| [PHOENIX-6274](https://issues.apache.org/jira/browse/PHOENIX-6274) | Flaky test TableSnapshotReadsMapReduceIT.testMapReduceSnapshotsMultiRegion |  Major | . |
+| [PHOENIX-6263](https://issues.apache.org/jira/browse/PHOENIX-6263) | Few Table references are leaked |  Major | . |
+| [PHOENIX-6218](https://issues.apache.org/jira/browse/PHOENIX-6218) | Rows deleted count for client side deletes is incorrect for immutable tables with indexes |  Major | . |
+| [PHOENIX-6058](https://issues.apache.org/jira/browse/PHOENIX-6058) | When maxLookback is not enabled, IndexTool should not do deep verification |  Blocker | . |
+| [PHOENIX-6241](https://issues.apache.org/jira/browse/PHOENIX-6241) | ViewIndexId sequences collide with ones created on the pre-4.15 version |  Blocker | . |
+| [PHOENIX-5921](https://issues.apache.org/jira/browse/PHOENIX-5921) | Phoenix Index verification logging Exception with huge huge row |  Minor | . |
+| [PHOENIX-5712](https://issues.apache.org/jira/browse/PHOENIX-5712) | Got SYSCAT  ILLEGAL\_DATA exception after created tenant index on view |  Blocker | . |
+| [PHOENIX-6232](https://issues.apache.org/jira/browse/PHOENIX-6232) | Correlated subquery should not push to RegionServer as the probe side of the Hash join |  Major | . |
+| [PHOENIX-6239](https://issues.apache.org/jira/browse/PHOENIX-6239) | NullPointerException when index table does not use COLUMN\_ENCODED\_BYTES |  Major | . |
+| [PHOENIX-5860](https://issues.apache.org/jira/browse/PHOENIX-5860) | Throw exception which region is closing or splitting when delete data |  Major | core |
+| [PHOENIX-5960](https://issues.apache.org/jira/browse/PHOENIX-5960) | Creating a view on a non-existent table throws the wrong exception |  Minor | . |
+| [PHOENIX-6223](https://issues.apache.org/jira/browse/PHOENIX-6223) | could not find or load main class sqline.SqLine |  Minor | . |
+| [PHOENIX-5920](https://issues.apache.org/jira/browse/PHOENIX-5920) | Skip SYSTEM TABLE checks while creating phoenix connection if client has set the DoNotUpgrade config |  Major | . |
+| [PHOENIX-6233](https://issues.apache.org/jira/browse/PHOENIX-6233) | QueryTimeoutIT fails sometimes. |  Minor | . |
+| [PHOENIX-6224](https://issues.apache.org/jira/browse/PHOENIX-6224) | Support  Correlated IN Subquery |  Major | . |
+| [PHOENIX-6230](https://issues.apache.org/jira/browse/PHOENIX-6230) | IT suite hangs on ViewConcurrencyAndFailureIT |  Critical | core |
+| [PHOENIX-6228](https://issues.apache.org/jira/browse/PHOENIX-6228) | Admin resources are not closed in some places |  Major | . |
+| [PHOENIX-6191](https://issues.apache.org/jira/browse/PHOENIX-6191) | Creating a view which has its own new columns should also do checkAndPut checks on SYSTEM.MUTEX |  Critical | . |
+| [PHOENIX-6221](https://issues.apache.org/jira/browse/PHOENIX-6221) | Getting CNF while creating transactional table with Omid |  Blocker | omid |
+| [PHOENIX-6123](https://issues.apache.org/jira/browse/PHOENIX-6123) | Old clients cannot query a view if the parent has an index |  Blocker | . |
+| [PHOENIX-5955](https://issues.apache.org/jira/browse/PHOENIX-5955) | OrphanViewToolIT is flapping |  Major | . |
+| [PHOENIX-5472](https://issues.apache.org/jira/browse/PHOENIX-5472) | Typos in the docs description |  Minor | . |
+| [PHOENIX-5669](https://issues.apache.org/jira/browse/PHOENIX-5669) | Remove hack for PHOENIX-3121 |  Major | . |
+| [PHOENIX-6203](https://issues.apache.org/jira/browse/PHOENIX-6203) | CQS.getTable(byte[] tableName) does not throw TNFE even if table doesn't exist |  Major | . |
+| [PHOENIX-5940](https://issues.apache.org/jira/browse/PHOENIX-5940) | Pre-4.15 client cannot connect to 4.15+ server after SYSTEM.CATALOG region has split |  Blocker | . |
+| [PHOENIX-6091](https://issues.apache.org/jira/browse/PHOENIX-6091) | Calling MetaDataProtocol.getVersion() on a 4.16 timestamp gives version as 4.15.x |  Minor | . |
+| [PHOENIX-6032](https://issues.apache.org/jira/browse/PHOENIX-6032) | When phoenix.allow.system.catalog.rollback=true, a view still sees data from a column that was dropped |  Blocker | . |
+| [PHOENIX-5210](https://issues.apache.org/jira/browse/PHOENIX-5210) | NullPointerException when alter options of a table that is appendOnlySchema |  Major | . |
+| [PHOENIX-6158](https://issues.apache.org/jira/browse/PHOENIX-6158) | create table/view should not update VIEW\_INDEX\_ID\_DATA\_TYPE column |  Major | . |
+| [PHOENIX-6179](https://issues.apache.org/jira/browse/PHOENIX-6179) | Relax the MaxLookBack age checks during an upgrade |  Critical | . |
+| [PHOENIX-6087](https://issues.apache.org/jira/browse/PHOENIX-6087) | Phoenix Connection leak in UpgradeUtil.addViewIndexToParentLinks() |  Major | . |
+| [PHOENIX-6030](https://issues.apache.org/jira/browse/PHOENIX-6030) | When phoenix.allow.system.catalog.rollback=true, a view still sees data for columns that were dropped from its parent view |  Blocker | . |
+| [PHOENIX-6002](https://issues.apache.org/jira/browse/PHOENIX-6002) | Fix connection leaks throughout instances where we use QueryUtil.getConnectionOnServer |  Major | . |
+| [PHOENIX-6124](https://issues.apache.org/jira/browse/PHOENIX-6124) | Block adding/dropping a column on a parent view for clients \<4.15 and for clients that have phoenix.allow.system.catalog.rollback=true |  Blocker | . |
+| [PHOENIX-6192](https://issues.apache.org/jira/browse/PHOENIX-6192) | UpgradeUtil.syncUpdateCacheFreqAllIndexes() does not use tenant-specific connection to resolve tenant views |  Major | . |
+| [PHOENIX-6197](https://issues.apache.org/jira/browse/PHOENIX-6197) | AggregateIT and StoreNullsIT hangs |  Blocker | core |
+| [PHOENIX-6142](https://issues.apache.org/jira/browse/PHOENIX-6142) | Make DDL operations resilient to orphan parent-\>child linking rows in SYSTEM.CHILD\_LINK |  Blocker | . |
+| [PHOENIX-6188](https://issues.apache.org/jira/browse/PHOENIX-6188) | Jenkins job history uses too much storage |  Blocker | connectors, core |
+| [PHOENIX-6193](https://issues.apache.org/jira/browse/PHOENIX-6193) | PHOENIX-6151 slows down shading |  Critical | core |
+| [PHOENIX-6194](https://issues.apache.org/jira/browse/PHOENIX-6194) | Build failure due to missing slf4j dependency in phoenix-tools |  Major | . |
+| [PHOENIX-5839](https://issues.apache.org/jira/browse/PHOENIX-5839) | CompatUtil#setStopRow semantics problem |  Major | core |
+| [PHOENIX-6169](https://issues.apache.org/jira/browse/PHOENIX-6169) | IT suite never finishes on 4.x with HBase 1.3 or 1.4 |  Blocker | core |
+| [PHOENIX-6159](https://issues.apache.org/jira/browse/PHOENIX-6159) | Phoenix-pherf writes the result file even disableRuntimeResult flag is true |  Major | . |
+| [PHOENIX-6153](https://issues.apache.org/jira/browse/PHOENIX-6153) | Table Map Reduce job after a Snapshot based job fails with CorruptedSnapshotException |  Major | core |
+| [PHOENIX-6168](https://issues.apache.org/jira/browse/PHOENIX-6168) | PHOENIX-6143 breaks tests on linux |  Major | core |
+| [PHOENIX-6122](https://issues.apache.org/jira/browse/PHOENIX-6122) | Upgrade jQuery to 3.5.1 |  Major | core |
+| [PHOENIX-6143](https://issues.apache.org/jira/browse/PHOENIX-6143) | Get Phoenix Tracing Webapp work |  Major | core |
+| [PHOENIX-6075](https://issues.apache.org/jira/browse/PHOENIX-6075) | DDLs issued via a tenant-specific connection do not write SYSTEM.MUTEX cells |  Blocker | . |
+| [PHOENIX-6136](https://issues.apache.org/jira/browse/PHOENIX-6136) | javax.servlet.UnavailableException thrown when using Spark connector |  Major | core, spark-connector |
+| [PHOENIX-6072](https://issues.apache.org/jira/browse/PHOENIX-6072) | SYSTEM.MUTEX not created with a TTL on a fresh cluster connected to by a 4.15+ client |  Blocker | . |
+| [PHOENIX-6130](https://issues.apache.org/jira/browse/PHOENIX-6130) | StatementContext.subqueryResults should be thread safe |  Major | . |
+| [PHOENIX-6069](https://issues.apache.org/jira/browse/PHOENIX-6069) | We should check that the parent table key is in the region in the MetaDataEndpointImpl.dropTable code |  Major | . |
+| [PHOENIX-5171](https://issues.apache.org/jira/browse/PHOENIX-5171) | SkipScan incorrectly filters composite primary key which the key range contains all values |  Blocker | . |
+| [PHOENIX-6115](https://issues.apache.org/jira/browse/PHOENIX-6115) | Avoid scanning prior row state for uncovered local indexes on immutable tables. |  Major | . |
+| [PHOENIX-6106](https://issues.apache.org/jira/browse/PHOENIX-6106) | Speed up ConcurrentMutationsExtendedIT |  Major | . |
+| [PHOENIX-5986](https://issues.apache.org/jira/browse/PHOENIX-5986) | DropTableWithViewsIT.testDropTableWithChildViews is flapping again |  Major | . |
+| [PHOENIX-6094](https://issues.apache.org/jira/browse/PHOENIX-6094) | Update jacoco plugin version to 0.8.5. |  Major | . |
+| [PHOENIX-6090](https://issues.apache.org/jira/browse/PHOENIX-6090) | Local indexes get out of sync after changes for global consistent indexes |  Blocker | . |
+| [PHOENIX-6073](https://issues.apache.org/jira/browse/PHOENIX-6073) | IndexTool IndexDisableLoggingType can't be set to NONE |  Minor | . |
+| [PHOENIX-6077](https://issues.apache.org/jira/browse/PHOENIX-6077) | PHOENIX-5946 breaks mvn verify |  Blocker | core |
+| [PHOENIX-5958](https://issues.apache.org/jira/browse/PHOENIX-5958) | Diverged view created via an older client still sees dropped column data |  Blocker | . |
+| [PHOENIX-5969](https://issues.apache.org/jira/browse/PHOENIX-5969) | Read repair reduces the number of rows returned for LIMIT queries |  Major | . |
+| [PHOENIX-6022](https://issues.apache.org/jira/browse/PHOENIX-6022) | RVC Offset does not handle trailing nulls properly |  Major | . |
+| [PHOENIX-6045](https://issues.apache.org/jira/browse/PHOENIX-6045) | Delete that should qualify for index path does not use index when multiple indexes are available. |  Major | . |
+| [PHOENIX-6023](https://issues.apache.org/jira/browse/PHOENIX-6023) | Wrong result when issuing query for an immutable table with multiple column families |  Major | . |
+| [PHOENIX-6013](https://issues.apache.org/jira/browse/PHOENIX-6013) | RVC Offset does not handle coerced literal nulls properly. |  Major | . |
+| [PHOENIX-6011](https://issues.apache.org/jira/browse/PHOENIX-6011) | ServerCacheClient throw NullPointerException |  Major | . |
+| [PHOENIX-6026](https://issues.apache.org/jira/browse/PHOENIX-6026) | Fix BackwardCompatibilityIT so it can run locally |  Major | . |
+| [PHOENIX-5976](https://issues.apache.org/jira/browse/PHOENIX-5976) | Cannot drop a column when the index view is involved |  Blocker | . |
+| [PHOENIX-6017](https://issues.apache.org/jira/browse/PHOENIX-6017) | Hadoop QA Precommit build keeps failing with release audit warning for phoenix-server/dependency-reduced-pom.xml |  Major | . |
+| [PHOENIX-5924](https://issues.apache.org/jira/browse/PHOENIX-5924) | RVC Offset does not handle variable length fields exclusive scan boundary correctly |  Major | . |
+| [PHOENIX-5981](https://issues.apache.org/jira/browse/PHOENIX-5981) | Wrong multiple counting of resultSetTimeMs and wallclockTimeMs in OverallQueryMetrics |  Major | . |
+| [PHOENIX-6000](https://issues.apache.org/jira/browse/PHOENIX-6000) | Client side DELETEs should use local indexes for filtering |  Major | . |
+| [PHOENIX-5984](https://issues.apache.org/jira/browse/PHOENIX-5984) | Query timeout counter is not updated in all timeouts cases |  Major | . |
+| [PHOENIX-5935](https://issues.apache.org/jira/browse/PHOENIX-5935) | Select with non primary keys and PHOENIX\_ROW\_TIMESTAMP() in where clause fails |  Major | . |
+| [PHOENIX-5967](https://issues.apache.org/jira/browse/PHOENIX-5967) | phoenix-client transitively pulling in phoenix-core |  Critical | . |
+| [PHOENIX-5996](https://issues.apache.org/jira/browse/PHOENIX-5996) | IndexRebuildRegionScanner.prepareIndexMutationsForRebuild may incorrectly delete index row when a delete and put mutation with the same timestamp |  Major | . |
+| [PHOENIX-6001](https://issues.apache.org/jira/browse/PHOENIX-6001) | Incremental rebuild/verification can result in missing rows and false positives |  Critical | . |
+| [PHOENIX-5997](https://issues.apache.org/jira/browse/PHOENIX-5997) | Phoenix Explain Plan for Deletes does not clearly differentiate between server side and client side paths. |  Minor | . |
+| [PHOENIX-5995](https://issues.apache.org/jira/browse/PHOENIX-5995) | Index Rebuild page size is not honored in case of point deletes |  Major | . |
+| [PHOENIX-5779](https://issues.apache.org/jira/browse/PHOENIX-5779) | SplitSystemCatalogIT tests fail with Multiple Regions error |  Major | . |
+| [PHOENIX-5937](https://issues.apache.org/jira/browse/PHOENIX-5937) | Order by on nullable column sometimes filters rows |  Major | core |
+| [PHOENIX-5898](https://issues.apache.org/jira/browse/PHOENIX-5898) | Phoenix function CURRENT\_TIME() returns wrong result when view indexes are used. |  Major | . |
+| [PHOENIX-5970](https://issues.apache.org/jira/browse/PHOENIX-5970) | ViewUtil.dropChildViews may cause HConnection leak which may cause ITtests hange |  Major | . |
+| [PHOENIX-5905](https://issues.apache.org/jira/browse/PHOENIX-5905) | Reset user to hbase by changing rpc context before getting user permissions on access controller service |  Major | . |
+| [PHOENIX-5902](https://issues.apache.org/jira/browse/PHOENIX-5902) | Document or fix new compat jar behavior. |  Blocker | . |
+| [PHOENIX-5942](https://issues.apache.org/jira/browse/PHOENIX-5942) | ParameterizedIndexUpgradeIT is too slow |  Minor | . |
+| [PHOENIX-5932](https://issues.apache.org/jira/browse/PHOENIX-5932) | View Index rebuild results in surplus rows from other view indexes |  Major | . |
+| [PHOENIX-5922](https://issues.apache.org/jira/browse/PHOENIX-5922) | IndexUpgradeTool should always re-enable tables on failure |  Major | . |
+| [PHOENIX-5656](https://issues.apache.org/jira/browse/PHOENIX-5656) | Make Phoenix scripts work with Python 3 |  Critical | . |
+| [PHOENIX-5929](https://issues.apache.org/jira/browse/PHOENIX-5929) | IndexToolForNonTxGlobalIndexIT.testDisableOutputLogging is flapping |  Major | . |
+| [PHOENIX-5884](https://issues.apache.org/jira/browse/PHOENIX-5884) | Join query return empty result when filters for both the tables are present |  Major | . |
+| [PHOENIX-5863](https://issues.apache.org/jira/browse/PHOENIX-5863) | Upsert into view against a table with index throws exception when 4.14.3 client connects to 4.16 server |  Blocker | . |
+| [PHOENIX-4753](https://issues.apache.org/jira/browse/PHOENIX-4753) | Remove the need for users to have Write access to the Phoenix SYSTEM STATS TABLE to drop tables |  Major | . |
+| [PHOENIX-5580](https://issues.apache.org/jira/browse/PHOENIX-5580) | Wrong values seen when updating a view for a table that has an index |  Major | . |
+| [PHOENIX-5864](https://issues.apache.org/jira/browse/PHOENIX-5864) | RuleGeneratorTest unit test seem to be failing |  Major | . |
+| [PHOENIX-5799](https://issues.apache.org/jira/browse/PHOENIX-5799) | Inline Index Verification Output API |  Major | . |
+| [PHOENIX-5810](https://issues.apache.org/jira/browse/PHOENIX-5810) | PhoenixMRJobSubmitter is not working on a cluster with a single yarn RM |  Major | . |
+| [PHOENIX-5802](https://issues.apache.org/jira/browse/PHOENIX-5802) | Connection leaks in UPSERT SELECT/DELETE paths due to MutatingParallelIteratorFactory iterator not being closed |  Major | . |
+| [PHOENIX-5801](https://issues.apache.org/jira/browse/PHOENIX-5801) | Connection leak when creating a view with a where condition |  Major | . |
+| [PHOENIX-5776](https://issues.apache.org/jira/browse/PHOENIX-5776) | Phoenix pherf unit tests failing |  Major | . |
+| [PHOENIX-5698](https://issues.apache.org/jira/browse/PHOENIX-5698) | Phoenix Query with RVC IN list expression generates wrong scan with non-pk ordered pks |  Major | . |
+| [PHOENIX-5797](https://issues.apache.org/jira/browse/PHOENIX-5797) | RVC Offset does not work with tenant views on global indexes |  Minor | . |
+| [PHOENIX-5790](https://issues.apache.org/jira/browse/PHOENIX-5790) | Add Apache license header to compatible\_client\_versions.json |  Minor | . |
+| [PHOENIX-5718](https://issues.apache.org/jira/browse/PHOENIX-5718) | GetTable builds a table excluding the given clientTimeStamp |  Major | . |
+| [PHOENIX-5785](https://issues.apache.org/jira/browse/PHOENIX-5785) | Remove TTL check in QueryCompiler when doing an SCN / Lookback query |  Major | . |
+| [PHOENIX-5673](https://issues.apache.org/jira/browse/PHOENIX-5673) | The mutation state is silently getting cleared on the execution of any DDL |  Critical | . |
+| [PHOENIX-5065](https://issues.apache.org/jira/browse/PHOENIX-5065) | Inconsistent treatment of NULL and empty string |  Major | . |
+| [PHOENIX-5753](https://issues.apache.org/jira/browse/PHOENIX-5753) | Fix erroneous query result when RVC is clipped with desc column |  Major | . |
+| [PHOENIX-5731](https://issues.apache.org/jira/browse/PHOENIX-5731) | Loading bulkload hfiles should not be blocked if the upsert select happening for differet table. |  Major | . |
+| [PHOENIX-5636](https://issues.apache.org/jira/browse/PHOENIX-5636) | Improve the error message when client connects to server with higher major version |  Minor | . |
+| [PHOENIX-5745](https://issues.apache.org/jira/browse/PHOENIX-5745) | Fix QA false negatives |  Major | . |
+| [PHOENIX-5737](https://issues.apache.org/jira/browse/PHOENIX-5737) | Hadoop QA run says no tests even though there are added IT tests |  Minor | . |
+| [PHOENIX-5537](https://issues.apache.org/jira/browse/PHOENIX-5537) | Phoenix-4701 made hard coupling between phoenix.log.level and getting request metrics. |  Minor | . |
+| [PHOENIX-5529](https://issues.apache.org/jira/browse/PHOENIX-5529) | Creating a grand-child view on a table with an index fails |  Major | . |
+| [PHOENIX-5695](https://issues.apache.org/jira/browse/PHOENIX-5695) | Phoenix website build.sh should return when child script has errors |  Major | . |
+| [PHOENIX-5724](https://issues.apache.org/jira/browse/PHOENIX-5724) | Use exec permission in Phoenix ACLs only when execute check enabled |  Major | . |
+| [PHOENIX-5691](https://issues.apache.org/jira/browse/PHOENIX-5691) | create index is failing when phoenix acls enabled and ranger is enabled |  Major | . |
+| [PHOENIX-5440](https://issues.apache.org/jira/browse/PHOENIX-5440) | multiple warnings when building phoenix |  Minor | . |
+| [PHOENIX-5704](https://issues.apache.org/jira/browse/PHOENIX-5704) | Covered column updates are not generated for previously deleted data table row |  Critical | . |
+| [PHOENIX-5512](https://issues.apache.org/jira/browse/PHOENIX-5512) | IndexTool returns error after rebuilding a DISABLED index |  Major | . |
+| [PHOENIX-5677](https://issues.apache.org/jira/browse/PHOENIX-5677) | Replace System.currentTimeMillis with EnvironmentEdgeManager in non-test code |  Major | . |
+| [PHOENIX-5692](https://issues.apache.org/jira/browse/PHOENIX-5692) | SCN verification breaks with non-default column families |  Major | . |
+| [PHOENIX-5676](https://issues.apache.org/jira/browse/PHOENIX-5676) | Inline-verification from IndexTool does not handle TTL/row-expiry |  Major | . |
+| [PHOENIX-5654](https://issues.apache.org/jira/browse/PHOENIX-5654) | String values (ALWAYS and NEVER) don't work for connection level config phoenix.default.update.cache.frequency |  Major | . |
+| [PHOENIX-5650](https://issues.apache.org/jira/browse/PHOENIX-5650) | IndexUpgradeTool does not rebuild view indexes |  Major | . |
+| [PHOENIX-5655](https://issues.apache.org/jira/browse/PHOENIX-5655) | ServerCache using table map is not correctly removed |  Major | . |
+| [PHOENIX-5096](https://issues.apache.org/jira/browse/PHOENIX-5096) | Local index region pruning is not working as expected. |  Major | . |
+| [PHOENIX-5637](https://issues.apache.org/jira/browse/PHOENIX-5637) | Queries with SCN return expired rows |  Major | . |
+| [PHOENIX-5640](https://issues.apache.org/jira/browse/PHOENIX-5640) | Pending disable count should not be increased for rebuild write failures |  Major | . |
+| [PHOENIX-4824](https://issues.apache.org/jira/browse/PHOENIX-4824) | Update BRANCH\_NAMES in dev/test-patch.properties |  Major | . |
+
+
+### TESTS:
+
+| JIRA | Summary | Priority | Component |
+|:---- |:---- | :--- |:---- |
+| [PHOENIX-6300](https://issues.apache.org/jira/browse/PHOENIX-6300) | Fix PartialIndexRebuilderIT.testIndexWriteFailureDisablingIndex test flapper |  Major | . |
+| [PHOENIX-6302](https://issues.apache.org/jira/browse/PHOENIX-6302) | Fix ConcurrentUpsertsWithoutIndexedColsIT flapper |  Major | . |
+| [PHOENIX-6297](https://issues.apache.org/jira/browse/PHOENIX-6297) | Fix IndexMetadataIT.testAsyncRebuildAll test flapper |  Major | . |
+| [PHOENIX-6301](https://issues.apache.org/jira/browse/PHOENIX-6301) | Fix BackwardCompatibilityIT.testSystemTaskCreationWithIndexAsyncRebuild test flapper |  Major | . |
+| [PHOENIX-6289](https://issues.apache.org/jira/browse/PHOENIX-6289) | Flaky test UpsertSelectIT.testUpsertSelectWithNoIndex |  Major | . |
+| [PHOENIX-6284](https://issues.apache.org/jira/browse/PHOENIX-6284) | Flaky test UpgradeIT.testConcurrentUpgradeThrowsUpgradeInProgressException |  Major | . |
+| [PHOENIX-6183](https://issues.apache.org/jira/browse/PHOENIX-6183) | Page size tests are not propagating test override values to server |  Major | . |
+| [PHOENIX-6246](https://issues.apache.org/jira/browse/PHOENIX-6246) | Flaky test PointInTimeQueryIT |  Major | . |
+| [PHOENIX-5973](https://issues.apache.org/jira/browse/PHOENIX-5973) | IndexToolForNonTxGlobalIndexIT - Stabilize and speed up |  Major | . |
+| [PHOENIX-5607](https://issues.apache.org/jira/browse/PHOENIX-5607) | Client-server backward compatibility tests |  Blocker | . |
+| [PHOENIX-5616](https://issues.apache.org/jira/browse/PHOENIX-5616) | Speed up ParameterizedIndexUpgradeToolIT |  Minor | . |
+| [PHOENIX-5617](https://issues.apache.org/jira/browse/PHOENIX-5617) | Allow using the server side JDBC client in Phoenix Sandbox. |  Major | . |
+
+
+### SUB-TASKS:
+
+| JIRA | Summary | Priority | Component |
+|:---- |:---- | :--- |:---- |
+| [PHOENIX-6219](https://issues.apache.org/jira/browse/PHOENIX-6219) | GlobalIndexChecker should work for index:SINGLE\_CELL\_ARRAY\_WITH\_OFFSETS and data:ONE\_CELL\_PER\_COLUMN |  Major | . |
+| [PHOENIX-6292](https://issues.apache.org/jira/browse/PHOENIX-6292) | Extend explain plan object based comparison to majority remaining tests |  Major | . |
+| [PHOENIX-5435](https://issues.apache.org/jira/browse/PHOENIX-5435) | Annotate HBase WALs with Phoenix Metadata |  Major | . |
+| [PHOENIX-6269](https://issues.apache.org/jira/browse/PHOENIX-6269) | Extend explain plan object based comparison to some more tests |  Major | . |
+| [PHOENIX-5592](https://issues.apache.org/jira/browse/PHOENIX-5592) | MapReduce job to asynchronously delete rows where the VIEW\_TTL has expired. |  Major | . |
+| [PHOENIX-5728](https://issues.apache.org/jira/browse/PHOENIX-5728) | ExplainPlan with plan as attributes object, use it for BaseStatsCollectorIT |  Major | . |
+| [PHOENIX-5601](https://issues.apache.org/jira/browse/PHOENIX-5601) | PHOENIX-5601 Add a new coprocessor for PHOENIX\_TTL - PhoenixTTLRegionObserver |  Major | . |
+| [PHOENIX-6171](https://issues.apache.org/jira/browse/PHOENIX-6171) | Child views should not be allowed to override the parent view PHOENIX\_TTL attribute. |  Major | . |
+| [PHOENIX-6170](https://issues.apache.org/jira/browse/PHOENIX-6170) | PHOENIX\_TTL spec should be in seconds instead of milliseconds |  Major | . |
+| [PHOENIX-6101](https://issues.apache.org/jira/browse/PHOENIX-6101) | Avoid duplicate work between local and global indexes |  Major | . |
+| [PHOENIX-6097](https://issues.apache.org/jira/browse/PHOENIX-6097) | Improve LOCAL index consistency tests |  Minor | . |
+| [PHOENIX-5933](https://issues.apache.org/jira/browse/PHOENIX-5933) | Rename VIEW\_TTL property to be PHOENIX\_TTL |  Major | . |
+| [PHOENIX-5317](https://issues.apache.org/jira/browse/PHOENIX-5317) | Upserting rows into child views with pk fails when the base view has an index on it. |  Major | . |
+| [PHOENIX-5678](https://issues.apache.org/jira/browse/PHOENIX-5678) | Cleanup anonymous inner classes used for BaseMutationPlan |  Major | . |
+| [PHOENIX-5501](https://issues.apache.org/jira/browse/PHOENIX-5501) | Add support for VIEW\_TTL table property during DDL |  Major | . |
+
+
+### OTHER:
+
+| JIRA | Summary | Priority | Component |
+|:---- |:---- | :--- |:---- |
+| [PHOENIX-6147](https://issues.apache.org/jira/browse/PHOENIX-6147) | Copy Github PR discussions to JIRA |  Major | . |
+| [PHOENIX-6107](https://issues.apache.org/jira/browse/PHOENIX-6107) | Discuss speed up of BaseQueryIT |  Major | . |
+| [PHOENIX-6065](https://issues.apache.org/jira/browse/PHOENIX-6065) | Add OWASP dependency check, and update the flagged direct dependencies |  Major | connectors, core, queryserver |
+| [PHOENIX-6309](https://issues.apache.org/jira/browse/PHOENIX-6309) | Use maven enforcer to ban imports |  Major | . |
+| [PHOENIX-6282](https://issues.apache.org/jira/browse/PHOENIX-6282) | Generate PB files inline with build and remove checked in files |  Major | . |
+| [PHOENIX-6261](https://issues.apache.org/jira/browse/PHOENIX-6261) | Reorganise project structure to make mvn versions:set work |  Major | connectors, core |
+| [PHOENIX-6137](https://issues.apache.org/jira/browse/PHOENIX-6137) | Update Omid to 1.0.2 and Tephra to 0.16 in 4.x |  Major | core |
+| [PHOENIX-6196](https://issues.apache.org/jira/browse/PHOENIX-6196) | Update phoenix.mutate.maxSizeBytes to accept long values |  Major | . |
+| [PHOENIX-6146](https://issues.apache.org/jira/browse/PHOENIX-6146) | Run precommit checks on github PRs |  Major | core |
+| [PHOENIX-5032](https://issues.apache.org/jira/browse/PHOENIX-5032) | add Apache Yetus to Phoenix |  Major | . |
+| [PHOENIX-5962](https://issues.apache.org/jira/browse/PHOENIX-5962) | Stabilize builds |  Major | . |
+| [PHOENIX-5818](https://issues.apache.org/jira/browse/PHOENIX-5818) | Add documentation for query timeoutDuration attribute in Pherf scenarios |  Minor | . |
+| [PHOENIX-5825](https://issues.apache.org/jira/browse/PHOENIX-5825) | Remove PhoenixCanaryTool and CanaryTestResult from phoenix repo |  Major | core, queryserver |
+| [PHOENIX-5822](https://issues.apache.org/jira/browse/PHOENIX-5822) | Move Python driver to queryserver repo |  Major | core, queryserver |
+| [PHOENIX-5762](https://issues.apache.org/jira/browse/PHOENIX-5762) | Update jackson |  Major | . |
+| [PHOENIX-5767](https://issues.apache.org/jira/browse/PHOENIX-5767) | Add 4.x branch to the precommit script configuration |  Blocker | . |
+| [PHOENIX-5721](https://issues.apache.org/jira/browse/PHOENIX-5721) | Unify 4.x branches |  Major | . |
+
+
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
new file mode 100644
index 0000000..865196d
--- /dev/null
+++ b/RELEASENOTES.md
@@ -0,0 +1,125 @@
+
+<!---
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+-->
+# PHOENIX  4.16.0 Release Notes
+
+These release notes cover new developer and user-facing incompatibilities, important issues, features, and major improvements.
+
+
+---
+
+* [PHOENIX-6273](https://issues.apache.org/jira/browse/PHOENIX-6273) | *Major* | **Add support to handle MR Snapshot restore externally**
+
+Adds mapreduce configuration param "phoenix.mapreduce.external.snapshot.restore" which when set to true indicates that snapshot-based MapReduce jobs shouldn't try to restore the snapshot themselves, but assume an external application has already done so.
+
+
+---
+
+* [PHOENIX-6307](https://issues.apache.org/jira/browse/PHOENIX-6307) | *Major* | **Build and release official binary distributions with each HBase profile**
+
+The phoenix-client and phoenix-server JARs have been renamed to include the supported HBase version.
+
+Instead of phoenix-client-\<phoenix.version\>.jar, the client is now phoenix-client-hbase-\<hbase-major.minor\>-\<phoenix.version\>.jar
+I.e. The Phoenix 4.16 client for Hbase 1.5 is now called phoenix-client-hbase-1.5-5.1.0.jar
+
+The maven coordinates also have also changed to "org.apache.phoenix:phoenix-client-hbase-\<hbase-major.minor\>:\<phoenix.version\>".
+I.e the Phoenix 4.15.0 client for Hbase 1.5 is  "org.apache.phoenix:phoenix-client:4.15.0-HBase-1.5", but the phoenix client for Phoenix 4.16 is "org.apache.phoenix:phoenix-client-hbase-1.5:4.16.0"
+
+
+---
+
+* [PHOENIX-5265](https://issues.apache.org/jira/browse/PHOENIX-5265) | *Major* | **[UMBRELLA] Phoenix Test should use object based Plan for result comparison instead of using hard-corded comparison**
+
+New API for Explain plan queries that can be used for comparison of individual plan attributes.
+
+
+---
+
+* [PHOENIX-6282](https://issues.apache.org/jira/browse/PHOENIX-6282) | *Major* | **Generate PB files inline with build and remove checked in files**
+
+We no longer have generated protobuf Java files available in source code. These files are expected to be generated inline with mvn build. We have also used an optimization with the plugin to ensure protoc is not invoked with mvn build if no .proto file is updated between two consecutive builds.
+
+
+---
+
+* [PHOENIX-6086](https://issues.apache.org/jira/browse/PHOENIX-6086) | *Critical* | **Take a snapshot of all SYSTEM tables before attempting to upgrade them**
+
+While upgrading System tables, all system tables where we perform some significant DDL operations, we start taking snapshots of them:
+ 
+1. SYSTEM.CATALOG (was already covered before this Jira)
+2. SYSTEM.CHILD\_LINK
+3. SYSTEM.SEQUENCE
+4. SYSTEM.STATS
+5. SYSTEM.TASK
+
+If the upgrade doesn't complete successfully, we should get warning log providing all snapshots taken so far, which can be used to restore some snapshots if required.
+
+
+A sample Warning log:
+
+Failed upgrading System tables. Snapshots for system tables created so far: {SYSTEM:STATS=SNAPSHOT\_SYSTEM.STATS\_4.15.x\_TO\_4.16.0\_20201202114411, SYSTEM:CATALOG=SNAPSHOT\_SYSTEM.CATALOG\_4.15.x\_TO\_4.16.0\_20201202114258, SYSTEM:CHILD\_LINK=SNAPSHOT\_SYSTEM.CHILD\_LINK\_4.15.x\_TO\_4.16.0\_20201202114405, SYSTEM:SEQUENCE=SNAPSHOT\_SYSTEM.SEQUENCE\_4.15.x\_TO\_4.16.0\_20201202114407, SYSTEM:TASK=SNAPSHOT\_SYSTEM.TASK\_4.15.x\_TO\_4.16.0\_20201202114413}
+
+
+---
+
+* [PHOENIX-4412](https://issues.apache.org/jira/browse/PHOENIX-4412) | *Critical* | **Tephra transaction context visibility level returns null instead of SNAPSHOT\_ALL**
+
+**WARNING: No release note provided for this change.**
+
+
+---
+
+* [PHOENIX-6155](https://issues.apache.org/jira/browse/PHOENIX-6155) | *Major* | **Prevent doing direct upserts into SYSTEM.TASK from the client**
+
+A new coprocessor endpoint to avoid direct upserts into SYSTEM.TASK from the client.
+
+
+---
+
+* [PHOENIX-6186](https://issues.apache.org/jira/browse/PHOENIX-6186) | *Major* | **Store table metadata last modified timestamp in PTable / System.Catalog**
+
+Introduces a new field in System.Catalog, LAST\_DDL\_TIMESTAMP, which is the epoch timestamp at which a table or view is created, or last had a column added or dropped. Child views inherit the max ddl timestamp of their ancestors.
+
+
+---
+
+* [PHOENIX-6125](https://issues.apache.org/jira/browse/PHOENIX-6125) | *Major* | **Make sure SYSTEM.TASK does not split**
+
+We have new split policy introduced for SYSTEM.TASK which for now is just extending DisabledRegionSplitPolicy. As part of an upgrade to 4.16/5.1, updating split policy will be taken care of unless it was already updated manually.
+
+Hence, before 4.16/5.1 upgrade, if operator has already manually updated split policy of SYSTEM.TASK, an exception will be thrown during upgrade to 4.16/5.1 which would mandate an operator intervention to perform:
+
+1. Merging SYSTEM.TASK regions into one single region (if multiple regions were already available before 4.16/5.1 upgrade)
+2. Remove split policy of the table manually.
+
+
+---
+
+* [PHOENIX-5446](https://issues.apache.org/jira/browse/PHOENIX-5446) | *Major* | **Support Protobuf shaded clients (thin + thick)**
+
+**WARNING: No release note provided for this change.**
+
+
+---
+
+* [PHOENIX-4866](https://issues.apache.org/jira/browse/PHOENIX-4866) | *Blocker* | **UDFs get error: org.apache.phoenix.schema.FunctionNotFoundException: ERROR 6001 (42F01): Function undefined**
+
+**WARNING: No release note provided for this change.**
+
+
+
diff --git a/phoenix-assembly/pom.xml b/phoenix-assembly/pom.xml
index ed07631..880f56e 100644
--- a/phoenix-assembly/pom.xml
+++ b/phoenix-assembly/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.phoenix</groupId>
     <artifactId>phoenix</artifactId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
   <artifactId>phoenix-assembly</artifactId>
   <name>Phoenix Assembly</name>
diff --git a/phoenix-client-parent/phoenix-client-embedded/pom.xml b/phoenix-client-parent/phoenix-client-embedded/pom.xml
index d175704..e68d7de 100644
--- a/phoenix-client-parent/phoenix-client-embedded/pom.xml
+++ b/phoenix-client-parent/phoenix-client-embedded/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.phoenix</groupId>
     <artifactId>phoenix-client-parent</artifactId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
 
   <artifactId>phoenix-client-embedded-${hbase.suffix}</artifactId>
diff --git a/phoenix-client-parent/phoenix-client/pom.xml b/phoenix-client-parent/phoenix-client/pom.xml
index a5ed9bb..1738a63 100644
--- a/phoenix-client-parent/phoenix-client/pom.xml
+++ b/phoenix-client-parent/phoenix-client/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.phoenix</groupId>
     <artifactId>phoenix-client-parent</artifactId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
 
   <artifactId>phoenix-client-${hbase.suffix}</artifactId>
diff --git a/phoenix-client-parent/pom.xml b/phoenix-client-parent/pom.xml
index d54201b..7db233c 100644
--- a/phoenix-client-parent/pom.xml
+++ b/phoenix-client-parent/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.phoenix</groupId>
     <artifactId>phoenix</artifactId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
   <artifactId>phoenix-client-parent</artifactId>
   <name>Phoenix Client Parent</name>
diff --git a/phoenix-core/pom.xml b/phoenix-core/pom.xml
index 5120edd..1472c8e 100644
--- a/phoenix-core/pom.xml
+++ b/phoenix-core/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.phoenix</groupId>
     <artifactId>phoenix</artifactId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
   <artifactId>phoenix-core</artifactId>
   <name>Phoenix Core</name>
diff --git a/phoenix-hbase-compat-1.3.0/pom.xml b/phoenix-hbase-compat-1.3.0/pom.xml
index faf351d..471606b 100644
--- a/phoenix-hbase-compat-1.3.0/pom.xml
+++ b/phoenix-hbase-compat-1.3.0/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>phoenix</artifactId>
     <groupId>org.apache.phoenix</groupId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
 
   <artifactId>phoenix-hbase-compat-1.3.0</artifactId>
diff --git a/phoenix-hbase-compat-1.4.0/pom.xml b/phoenix-hbase-compat-1.4.0/pom.xml
index 45c038f..d67d468 100644
--- a/phoenix-hbase-compat-1.4.0/pom.xml
+++ b/phoenix-hbase-compat-1.4.0/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>phoenix</artifactId>
     <groupId>org.apache.phoenix</groupId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
 
   <artifactId>phoenix-hbase-compat-1.4.0</artifactId>
diff --git a/phoenix-hbase-compat-1.5.0/pom.xml b/phoenix-hbase-compat-1.5.0/pom.xml
index 79e5310..511562c 100644
--- a/phoenix-hbase-compat-1.5.0/pom.xml
+++ b/phoenix-hbase-compat-1.5.0/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>phoenix</artifactId>
     <groupId>org.apache.phoenix</groupId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
 
   <artifactId>phoenix-hbase-compat-1.5.0</artifactId>
diff --git a/phoenix-pherf/pom.xml b/phoenix-pherf/pom.xml
index 2afb780..184cc8d 100644
--- a/phoenix-pherf/pom.xml
+++ b/phoenix-pherf/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.phoenix</groupId>
 		<artifactId>phoenix</artifactId>
-		<version>4.16.0-SNAPSHOT</version>
+		<version>4.16.0</version>
 	</parent>
 
 	<artifactId>phoenix-pherf</artifactId>
diff --git a/phoenix-server/pom.xml b/phoenix-server/pom.xml
index 69e593f..c5267d7 100644
--- a/phoenix-server/pom.xml
+++ b/phoenix-server/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.phoenix</groupId>
     <artifactId>phoenix</artifactId>
-    <version>4.16.0-SNAPSHOT</version>
+    <version>4.16.0</version>
   </parent>
 
   <artifactId>phoenix-server-${hbase.suffix}</artifactId>
diff --git a/phoenix-tools/pom.xml b/phoenix-tools/pom.xml
index 7afb95e..e60ecc4 100644
--- a/phoenix-tools/pom.xml
+++ b/phoenix-tools/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>phoenix</artifactId>
         <groupId>org.apache.phoenix</groupId>
-        <version>4.16.0-SNAPSHOT</version>
+        <version>4.16.0</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/phoenix-tracing-webapp/pom.xml b/phoenix-tracing-webapp/pom.xml
index 6f854fa..3ee1df9 100755
--- a/phoenix-tracing-webapp/pom.xml
+++ b/phoenix-tracing-webapp/pom.xml
@@ -22,7 +22,7 @@
     <parent>
       <groupId>org.apache.phoenix</groupId>
       <artifactId>phoenix</artifactId>
-      <version>4.16.0-SNAPSHOT</version>
+      <version>4.16.0</version>
     </parent>
 
     <artifactId>phoenix-tracing-webapp</artifactId>
diff --git a/pom.xml b/pom.xml
index ec5b011..6ee85bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.phoenix</groupId>
   <artifactId>phoenix</artifactId>
-  <version>4.16.0-SNAPSHOT</version>
+  <version>4.16.0</version>
   <packaging>pom</packaging>
   <name>Apache Phoenix</name>
   <description>A SQL layer over HBase</description>