You need to sign in or sign up before continuing.
  • M
    virDomainObjListAddLocked: Produce better error message than 'Duplicate key' · a5c71129
    Michal Privoznik 提交于
    If there are two concurrent threads, one of which is removing a
    domain from the list and the other is trying to add it back they
    may serialize in the following order:
    
    1) vm->removing is set and @vm is unlocked.
    2) The tread that's trying to add the domain onto the list locks
       the list and tries to find, if the domain already exists.
    3) Our lookup functions say it doesn't, so the thread proceeds to
       virHashAddEntry() which fails with 'Duplicate key' error.
    
    This is obviously not helpful error message at all.
    
    The problem lies in our lookup functions
    (virDomainObjListFindByUUIDLocked() and
    virDomainObjListFindByNameLocked()) which return NULL even if the
    object is still on the list. They do this so that the object is
    not mistakenly looked up by some driver. The fix consists of
    moving 'removing' check one level up and thus allowing
    virDomainObjListAddLocked() to produce meaningful error message.
    Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
    Reviewed-by: NCole Robinson <crobinso@redhat.com>
    a5c71129
virdomainobjlist.c 29.8 KB