Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Not A Bug
-
4.14.1
-
None
-
None
-
None
Description
During Partial Rebuild, If rebuilder get index failure (because of region move/split etc), it will call PhoenixIndexFailurePolicy.handleFailure . Here it checks if mutations are part of Index Rebuild or not .
if (!throwing) { SQLException sqlException = new SQLExceptionInfo.Builder(SQLExceptionCode.INDEX_WRITE_FAILURE) .setRootCause(cause).setMessage(cause.getLocalizedMessage()).build() .buildException(); IOException ioException = ServerUtil.wrapInDoNotRetryIOException(null, sqlException, timestamp); Mutation m = attempted.entries().iterator().next().getValue(); boolean isIndexRebuild = PhoenixIndexMetaData.isIndexRebuild(m.getAttributesMap()); // Always throw if rebuilding index since the rebuilder needs to know if it was successful if (throwIndexWriteFailure || isIndexRebuild) { throw ioException; } else { LOG.warn("Swallowing index write failure", ioException); } }
Here isIndexRebuild becomes false even though we have set attribute for REPLY_WRITE to
REPLAY_ONLY_INDEX_WRITES in UngroupedAggregateRegionObserver.rebuildIndices
... put.setAttribute(REPLAY_WRITES, REPLAY_ONLY_INDEX_WRITES); ...
Attachments
Attachments
Issue Links
- is related to
-
PHOENIX-5080 Index becomes Active during Partial Index Rebuilder if Index Failure happens
- Closed