Revision 6760e4ed lib/jqueue.py

b/lib/jqueue.py
676 676
      return constants.JOB_NOTCHANGED
677 677

  
678 678

  
679
def _EncodeOpError(err):
680
  """Encodes an error which occurred while processing an opcode.
681

  
682
  """
683
  if isinstance(err, errors.GenericError):
684
    to_encode = err
685
  else:
686
    to_encode = errors.OpExecError(str(err))
687

  
688
  return errors.EncodeException(to_encode)
689

  
690

  
679 691
class _JobQueueWorker(workerpool.BaseWorker):
680 692
  """The actual job workers.
681 693

  
......
764 776
              try:
765 777
                logging.debug("Opcode %s/%s failed", idx + 1, count)
766 778
                op.status = constants.OP_STATUS_ERROR
767
                if isinstance(err, errors.GenericError):
768
                  to_encode = err
769
                else:
770
                  to_encode = errors.OpExecError(str(err))
771
                op.result = errors.EncodeException(to_encode)
779
                op.result = _EncodeOpError(err)
772 780
                op.end_timestamp = TimeStampNow()
773 781
                logging.info("Op %s/%s: Error in opcode %s: %s",
774 782
                             idx + 1, count, op_summary, err)
775 783

  
776 784
                to_encode = errors.OpExecError("Preceding opcode failed")
777 785
                job.MarkUnfinishedOps(constants.OP_STATUS_ERROR,
778
                                      errors.EncodeException(to_encode))
786
                                      _EncodeOpError(to_encode))
779 787

  
780 788
                # Consistency check
781 789
                assert compat.all(i.status == constants.OP_STATUS_SUCCESS

Also available in: Unified diff