On Mon, Aug 17, 2015 at 08:39:29PM +0200, Michal Privoznik wrote:
On 15.08.2015 16:26, Martin Kletzander wrote:
> On Fri, Aug 14, 2015 at 03:40:16PM +0200, Michal Privoznik wrote:
>> So, domain renaming works like this: new domain name is added
>> into the list of domain objects. Then, domain definition is
>> updated. After that, old domain name is removed from the domain
>> object list. Now, if the very firs step fails for some reason, no
>
> Well, the problem here is that the first step can fail for 2 reasons.
> One of them is that the domain already exists, the second one is an
> OOM error. What's even worse is that the OOM error gets reported, but
> the duplicate key error doesn't.
>
> There should be either a hint for the user that domain with such name
> already exists or that should be checked right before. The second
> variant would not be race-free, but there would be only a small window
> of opportunity left. The con would be that you won't report "already
> exists" error when there's an OOM error already. Checking for that
> error seems too weird, it would be more worth fixing the has table
> implementation we have :)
Hm.. I agree that the partial error reporting is bad and definitely
calls for fixing. But I think it's gonna be tricky. I mean, we can't
emit a generic enough error message. "Duplicate key $key" would not be
much helpful for users since hash tables are used not only in
virDomainObjList. But maybe it would be better than nothing.
As a separate patch, we can reject the same name. Okay.
Yeah, it's enough for me to add a check for same name and that it
doesn't already exists.
Michal