[
https://issues.apache.org/jira/browse/PHOENIX-2221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15040794#comment-15040794
]
James Taylor commented on PHOENIX-2221:
---------------------------------------
Thinking about this a bit more, implementing the enforcement of an upper bound
on the timestamp for a table wouldn't be too difficult. Here's how you'd do it:
- record the timestamp in the system catalog for the table row using the
INDEX_DISABLE_TIMESTAMP column
- enforce that the timestamp for the table doesn't move forward by modifying
MetaDataEndPointImpl.getTable() which is what is used to get the upper bound of
a scan for a given table. If the PTable looked up has a value for the
INDEX_DISABLE_TIMESTAMP, then you'd return that value instead of the current
time.
- when the index is finished being updated, set the value of
INDEX_DISABLE_TIMESTAMP for the physical table back to null.
You wouldn't need to set the status of the index at all - just keep it active.
Instead of blocking writes to the table based on the index status, block them
based on the table having a value for INDEX_DISABLE_TIMESTAMP.
Overall, I think this is a simpler solution.
> Option to make data regions not writable when index regions are not available
> -----------------------------------------------------------------------------
>
> Key: PHOENIX-2221
> URL: https://issues.apache.org/jira/browse/PHOENIX-2221
> Project: Phoenix
> Issue Type: Improvement
> Reporter: Devaraj Das
> Assignee: Alicia Ying Shu
> Fix For: 4.7.0
>
> Attachments: PHOENIX-2221-v1.patch, PHOENIX-2221-v2.patch,
> PHOENIX-2221-v3.patch, PHOENIX-2221.patch
>
>
> In one usecase, it was deemed better to not accept writes when the index
> regions are unavailable for any reason (as opposed to disabling the index and
> the queries doing bigger data-table scans).
> The idea is that the index regions are kept consistent with the data regions,
> and when a query runs against the index regions, one can be reasonably sure
> that the query ran with the most recent data in the data regions. When the
> index regions are unavailable, the writes to the data table are rejected.
> Read queries off of the index regions would have deterministic performance
> (and on the other hand if the index is disabled, then the read queries would
> have to go to the data regions until the indexes are rebuilt, and the queries
> would suffer).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)