docstr: Interface to take care of job failure in case of possible retries
  
  :param rid: Resource ID
  :type rid: int
  :param jid: Job ID
  :type jid: int
docstr_tok: ["Interface","to","take","care","of","job","failure","in","case","of","possible","retries",":","param","rid",":","Resource","ID",":","type","rid",":","int",":","param","jid",":","Job","ID",":","type","jid",":","int"]
code: def job_failed(self, rid, jid):
      """
      Interface to take care of job failure in case of possible retries
  
      :param rid: Resource ID
      :type rid: int
      :param jid: Job ID
      :type jid: int
      """
      self.free_used_resource(rid)
      self.end_job_attempt(jid)
  
imports: import abc
  import logging
label_desc: Use image node_id 20 for calling the AbstractConnector obj's underlying member method code with example usage: obj.job_failed(rid, jid) without return types