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

Thomas D'Silva commented on PHOENIX-1812:
-----------------------------------------

I added a new method getTable(PTableKey key, long txnReadPointer) that takes 
the txnReadPointer. 
I also modified PhoenixConnection.getTable to use the txnReadPointer of the 
current txn if there is one.
I didn't have to use a separate map. 
I haven't committed this yet, I have attached a patch with my changes.

{code}
public PTable getTable(PTableKey key) throws TableNotFoundException {
        Transaction transaction = mutationState.getTransaction();
        long txnReadPointer = transaction == null ? HConstants.LATEST_TIMESTAMP 
: transaction.getReadPointer();
        return metaData.getTable(key, txnReadPointer);
    }
{code}

> Only sync table metadata when necessary
> ---------------------------------------
>
>                 Key: PHOENIX-1812
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1812
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: James Taylor
>            Assignee: Thomas D'Silva
>         Attachments: PHOENIX-1812.patch
>
>
> With transactions, we hold the timestamp at the point when the transaction 
> was opened. We can prevent the MetaDataEndpoint getTable RPC in 
> MetaDataClient.updateCache() to check that the client has the latest table if 
> we've already checked at the current transaction ID timestamp. We can keep 
> track of which tables we've already updated in PhoenixConnection.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to