On Thu, 6 Jan 2022, Raphael Norwitz wrote:
Today if virConnectOpenAuth fails,
qemuMigrationSrcPerformPeer2Peer()
returns VIR_ERR_OPERATION_FAILED. This change switches that error code
to VIR_ERR_NO_CONNECT, which is more accurate.
Hmm, I am not sure if this would be the right thing.
virConnectOpenInternal() fails under many conditions, two of which
actiually qualifies for VIR_ERR_NO_CONNECT. This error symbolizes "no
connection driver available" which to me has a much narrower scope.
virConnectOpenInternal() has other failure codepaths, for example
VIR_ERR_CONFIG_UNSUPPORTED. Catching all those failures as
VIR_ERR_OPERATION_FAILED that has a wider scope seems to be correct thing
to do in the existing code.
YMMV.
This should help libvirt consumers more intellegently retry migrations
on intermittent connection failures.
CC: Bhuvnesh Jain <bhuvnesh.jain(a)nutanix.com>
Suggested-by: John Levon <john.levon(a)nutanix.com>
Signed-off-by: Raphael Norwitz <raphael.norwitz(a)nutanix.com>
---
src/qemu/qemu_migration.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index b9d7d582f5..f7ced209a4 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -5145,7 +5145,7 @@ qemuMigrationSrcPerformPeer2Peer(virQEMUDriver *driver,
goto cleanup;
if (dconn == NULL) {
- virReportError(VIR_ERR_OPERATION_FAILED,
+ virReportError(VIR_ERR_NO_CONNECT,
_("Failed to connect to remote libvirt URI %s: %s"),
dconnuri, virGetLastErrorMessage());
return -1;
--
2.20.1