code: def prep_jid(nocache=False, passed_jid=None):
      '''
      Return a job id and prepare the job id directory
      This is the function responsible for making sure jids don't collide (unless
      its passed a jid)
      So do what you have to do to make sure that stays the case
      '''
      if passed_jid is None:
          jid = salt.utils.jid.gen_jid(__opts__)
      else:
          jid = passed_jid
  
      cb_ = _get_connection()
  
      try:
          cb_.add(six.text_type(jid),
                 {'nocache': nocache},
                 ttl=_get_ttl(),
                 )
      except couchbase.exceptions.KeyExistsError:
          # TODO: some sort of sleep or something? Spinning is generally bad practice
          if passed_jid is None:
              return prep_jid(nocache=nocache)
  
      return jif prep_jid(nocache=False, passed_jid=None):
      '''
      Return a job id and prepare the job id directory
      This is the function responsible for making sure jids don't collide (unless
      its passed a jid)
      So do what you have to do to make sure that stays the case
      '''
      if passed_jid is None:
          jid = salt.utils.jid.gen_jid(__opts__)
      else:
          jid = passed_jid
  
      cb_ = _get_connection()
  
      try:
          cb_.add(six.text_type(jid),
                 {'nocache': nocache},
                 ttl=_get_ttl(),
                 )
      except couchbase.exceptions.KeyExistsError:
          # TODO: some sort of sleep or something? Spinning is generally bad practice
          if passed_jid is None:
              return prep_jid(nocache=nocache)
  
      return jid
docs: Return a job id and prepare the job id directory
      This is the function responsible for making sure jids don't collide (unless
      its passed a jid)
      So do what you have to do to make sure that stays the case