"Daniel P. Berrange" <berrange(a)redhat.com> writes:
On Fri, Mar 17, 2017 at 02:07:11PM +0100, Milan Zamazal wrote:
> "Daniel P. Berrange" <berrange(a)redhat.com> writes:
>
> > On Fri, Mar 17, 2017 at 11:55:13AM +0100, Milan Zamazal wrote:
> >> Hi, we experienced a strange, non-reproducible error after a successful
> >> migration to another host. When we called virDomainDestroyFlags with
> >> VIR_DOMAIN_DESTROY_GRACEFUL flag after the migration on the source host,
> >> we got VIR_ERR_OPERATION_INVALID (code 55) error. The same with
> >> repeated virDomainDestroyFlags calls. Normally, we would expect either
> >> success or VIR_ERR_NO_DOMAIN error. `virsh list' didn't show the
VM.
> >
> > What about 'virsh list --all' - i expect you have an inactive guest
> > present, as calling destory on an inactive guest triggers OPERATION_INVALID
>
> I see. It's interesting, since we use transient domains. Are there
> known circumstances when OPERATION_INVALID could be returned for a
> transient domain? Can we assume that we never receive that error when
> trying to destroy a running domain?
Cleanup & destruction of domains is an area where there is relatively
high level of concurrency in libvirt. So it is conceivable that you
would see OPERATION_INVALID for a transient guest if libvirt is part
way through cleaning it up - it shouldn't be in that state for very
long though
We had the state returning OPERATION_INVALID for "infinite" time. That
could be caused by some bug or maybe problems with storage or whatever,
we don't know.
You'll never see OPERATION_INVALID if the guest is truely running
- it
will either be shutoff, or in the process of becoming shutoff very soon.
OK, thank you for explanation and clarification.
Regards,
Milan