code: @Override
      protected void recoverOperation(DataFrameRecord<Operation> dataFrameRecord, OperationMetadataUpdater metadataUpdater) throws DataCorruptionException {
          if (this.callbacks.beginRecoverOperation != null) {
              Callbacks.invokeSafely(this.callbacks.beginRecoverOperation, dataFrameRecord.getItem(), dataFrameRecord.getFrameEntries(), null);
          }
  
          try {
              super.recoverOperation(dataFrameRecord, metadataUpdater);
          } catch (Throwable ex) {
              if (this.callbacks.operationFailed != null) {
                  Callbacks.invokeSafely(this.callbacks.operationFailed, dataFrameRecord.getItem(), ex, null);
              }
  
              throw ex;
          }
  
          if (this.callbacks.operationSuccess != null) {
              Callbacks.invokeSafely(this.callbacks.operationSuccess, dataFrameRecord.getItem(), null);
          }
      }
docs: region RecoveryProcessor Overrides