Chinmay Kulkarni created PHOENIX-5496:
-----------------------------------------

             Summary: Ensure that we handle all server-side mutation codes on 
the client
                 Key: PHOENIX-5496
                 URL: https://issues.apache.org/jira/browse/PHOENIX-5496
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.15.0, 5.1.0
            Reporter: Chinmay Kulkarni
             Fix For: 4.15.1, 5.1.1


There are many instances throughout wherein we set a certain error mutation 
code in the RPC callback, however we do not handle these mutation codes on the 
client.

For example: 

If the metadata rows for a tableKey are no longer in that SYSCAT region, 
checkTableKeyInRegion() fails, the metadata for this table is not written to 
SYSCAT and [the TABLE_NOT_IN_REGION mutation code is 
set|https://github.com/apache/phoenix/blob/11997d48d1957cf613526f01c5ccbe2812cf095d/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java#L1785-L1790].

This is handled for 1 retry inside 
[CQSI.metaDataCoprocessorExec|https://github.com/apache/phoenix/blob/11997d48d1957cf613526f01c5ccbe2812cf095d/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L1568-L1570],
 but if this happens again, it is returned back to the client where it goes to 
the default case and succeeds.

Apart from the fact that partial metadata updates are possible leading to 
orphan metadata rows in system tables, this also wrongly returns success for 
clients even though there is no record of that table/view being created inside 
Phoenix's system tables.



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

Reply via email to