[
https://issues.apache.org/jira/browse/PHOENIX-2520?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James Taylor reassigned PHOENIX-2520:
-------------------------------------
Assignee: James Taylor
> Create DDL property for metadata update frequency
> -------------------------------------------------
>
> Key: PHOENIX-2520
> URL: https://issues.apache.org/jira/browse/PHOENIX-2520
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: James Taylor
> Fix For: 4.7.0
>
> Attachments: PHOENIX-2520_wip.patch, preferMetaCache.patch
>
>
> On the client-side, Phoenix pings the server when a query is compiled to
> confirm that the client has the most up-to-date metadata for the table being
> queried. For some tables that are known to not change, this RPC is wasteful.
> We can allow a property such as {{UPDATE_METADATA_CACHE_FREQUENCY_MS}} to be
> specified a time to wait before checking with the server to see if the
> metadata has changed. This could be specified in the CREATE TABLE call and
> stored in the SYSTEM.CATALOG table header row. By default the value could be
> 0 which would keep the current behavior. Tables that never change could use
> Long.MAX_VALUE. Potentially we could allow 'ALWAYS' and 'NEVER' values for
> convenience.
> Proposed implementation:
> - add {{public long getAge()}} method to {{PTableRef}}.
> - when setting lastAccessTime, also store System.currentMillis() to new
> {{setAccessTime}} private member variable
> - the getAge() would return {{System.currentMillis() - setAccessTime}}
> - code in MetaDataClient would prevent call to server if age <
> {{UPDATE_METADATA_CACHE_FREQUENCY_MS}}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)