[ 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)