switch (logRecord.getNewOp()) { case AbstractIndexModificationOperationCallback.INSERT_BYTE: indexAccessor.forceDelete(logRecord.getNewValue()); break; case AbstractIndexModificationOperationCallback.DELETE_BYTE:
private static void redo(ILogRecord logRecord, IDatasetLifecycleManager datasetLifecycleManager) { try { int datasetId = logRecord.getDatasetId(); long resourceId = logRecord.getResourceId(); ILSMIndex index = (ILSMIndex) datasetLifecycleManager.getIndex(datasetId, resourceId); ILSMIndexAccessor indexAccessor = index.createAccessor(NoOpIndexAccessParameters.INSTANCE); ILSMIndexOperationContext opCtx = indexAccessor.getOpContext(); opCtx.setFilterSkip(true); opCtx.setRecovery(true); if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.INSERT_BYTE) { indexAccessor.forceInsert(logRecord.getNewValue()); } else if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.DELETE_BYTE) { indexAccessor.forceDelete(logRecord.getNewValue()); } else if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.UPSERT_BYTE) { // redo, upsert the new value indexAccessor.forceUpsert(logRecord.getNewValue()); } else if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.FILTER_BYTE) { opCtx.setFilterSkip(false); indexAccessor.updateFilter(logRecord.getNewValue()); } else { throw new IllegalStateException("Unsupported OperationType: " + logRecord.getNewOp()); } } catch (Exception e) { throw new IllegalStateException("Failed to redo", e); } }
lsmAccessor.delete(tuple); } else { lsmAccessor.forceDelete(tuple);
break; case DELETE: indexAccessor.forceDelete(tuple); break; case UPSERT:
lsmAccessor.forceDelete(prevValueTuple);