[
https://issues.apache.org/jira/browse/PHOENIX-6142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17204983#comment-17204983
]
Istvan Toth commented on PHOENIX-6142:
--------------------------------------
However, on 4.x both methods seem to fail currently, as mvn verify on 4.x with
HBase 1.3 and 1.4 (precommit uses 1.3) always hangs and times out, and Yetus
gets killed before it could post back the results either to Jira or the GitHub
PR.
Fixing the 4.x test suite to at least not hang should really be a priority.
> Make DDL operations resilient to orphan parent->child linking rows in
> SYSTEM.CHILD_LINK
> ---------------------------------------------------------------------------------------
>
> Key: PHOENIX-6142
> URL: https://issues.apache.org/jira/browse/PHOENIX-6142
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 5.0.0, 4.15.0
> Reporter: Chinmay Kulkarni
> Assignee: Chinmay Kulkarni
> Priority: Blocker
> Fix For: 5.1.0, 4.16.0
>
> Attachments: PHOENIX-6142-4.x-v1.patch, PHOENIX-6142.4.x.v2.patch
>
>
> We are targeting PHOENIX-6141 for 4.17. Until we have it, we should aim at
> making DDL operations resilient to orphan parent->child linking rows. DDL
> operations identified which can fail due to orphan rows are:
> # Any ALTER TABLE ADD/DROP/SET calls on the base table T will fail if there
> are orphan links from T to some already dropped view. This happens because
> the call to
> [MetaDataEndpointImpl.findAllChildViews()|https://github.com/apache/phoenix/blob/fece8e69b9c03c80db7a0801d99e5de31fe15ffa/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java#L2142]
> from
> [MetaDataEndpointImpl.mutateColumn()|https://github.com/apache/phoenix/blob/fece8e69b9c03c80db7a0801d99e5de31fe15ffa/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java#L259]
> fails with a TableNotFoundException.
> # Any DROP TABLE/VIEW call without CASCADE will fail even though there are
> actually no child views since the orphan rows wrongly indicate that there are
> child views.
> # During the upgrade path for UpgradeUtil.syncUpdateCacheFreqAllIndexes(),
> we will just ignore any orphan views (for ex, see
> [this|https://github.com/apache/phoenix/blob/fece8e69b9c03c80db7a0801d99e5de31fe15ffa/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java#L1368-L1374]),
> but the call to UpgradeUtil.upgradeTable() will fail with a
> TableNotFoundException for each orphan view.
> # During a CREATE TABLE/VIEW, we try to drop any views from the previous life
> of that table/view, however we might end up dropping a legitimate view (with
> the same name) which is on another table/view because of this.
> Before dropping any views that we see from a parent->child link, we need to
> ensure that the view is in fact a child view of the same table/view we think
> it is an orphan of.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)