code: func (locker *ConsulLocker) UnlockUpload(id string) error {
  	locker.mutex.Lock()
  	defer locker.mutex.Unlock()
  
  	// Complain if no lock has been found. This can only happen if LockUpload
  	// has not been invoked before or UnlockUpload multiple times.
  	lock, ok := locker.locks[id]
  	if !ok {
  		return consul.ErrLockNotHeld
  	}
  
  	defer delete(locker.locks, id)
  
  	return lock.Unlock()
  }
docs: // UnlockUpload releases a lock.