[ https://issues.apache.org/jira/browse/PHOENIX-2221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14949791#comment-14949791 ]
Rajeshbabu Chintaguntla commented on PHOENIX-2221: -------------------------------------------------- Minor comments: We need not change this code any way if we don't configure anything setting PhoenixIndexFailurePolicy as default. {noformat} - // Install handler that will attempt to disable the index first before killing the region - // server - conf.setIfUnset(IndexWriter.INDEX_FAILURE_POLICY_CONF_KEY, - PhoenixIndexFailurePolicy.class.getName()); + String readable = conf.get(QueryServices.INDEX_RECOVERY_FAILURE_POLICY_KEY); + boolean indexReadable = readable != null && readable.equals(ReadableIndexFailurePolicy.class.getName()); + if (indexReadable) { + conf.setIfUnset(IndexWriter.INDEX_FAILURE_POLICY_CONF_KEY, + ReadableIndexFailurePolicy.class.getName()); + } else { + // Install handler that will attempt to disable the index first before killing the region + // server + conf.setIfUnset(IndexWriter.INDEX_FAILURE_POLICY_CONF_KEY, + PhoenixIndexFailurePolicy.class.getName()); + } {noformat} In ReadableIndexFailurePolicy we need not check for the failure policy because it's any way ReadableIndexFailurePolicy so directly pass readable state bytes without any checks. {noformat} + String readable = env.getConfiguration().get(QueryServices.INDEX_RECOVERY_FAILURE_POLICY_KEY); + boolean blockWrite = readable !=null && readable.equals(ReadableIndexFailurePolicy.class.getName()); + byte[] indexState = blockWrite? PIndexState.READABLE.getSerializedBytes() : PIndexState.DISABLE.getSerializedBytes(); {noformat} > 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 > Attachments: PHOENIX-2221-v1.patch, PHOENIX-2221-v2.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)