Manual tests on Zesty succeeded, regression tests running. ** Description changed:
[Impact] - * VMs start to fail depending on a race around spice port allocation + * VMs start to fail depending on a race around spice port allocation - * Solution is the Backport of an upstream fix that avoids a double - release on the ports + * Solution is the Backport of an upstream fix that avoids a double + release on the ports [Test Case] - * TBD + * Prepare a set of VMs using spice and start them concurrently. + $ uvt-simplestreams-libvirt --verbose sync --source http://cloud-images.ubuntu.com/daily arch=amd64 label=daily release=xenial + $ sed 's/vnc/spice/' /usr/share/uvtool/libvirt/template.xml > spice-template.xml + $ for idx in {1..20}; do uvt-kvm create --template spice-template.xml --password=ubuntu test-${idx} release=xenial arch=amd64 label=daily; done + $ for idx in {1..20}; do virsh shutdown test-${idx}; done + # wait until all are gone + $ for idx in {1..20}; do (virsh start test-${idx} &); done + $ for idx in {1..20}; do virsh domdisplay test-${idx} ; done | sort + + * expectation - all work, ports are used one by one + * current status - failing to intialize: + error: internal error: process exited while connecting to monitor: ((null):31733): Spice-Warning **: reds.c:2493:reds_init_socket: reds_init_socket: binding socket to 127.0.0.1:5901 failed + [Regression Potential] - * It is race after all, so we might miss some corner cases in the - testing, but reviewing the patch and given the verifications so far it - should be safe. From the patch the change is like: - Old: Spice-Init -> Fail -> Release [...] QemuStop -> Release - ^ - If new alloc in this time it was released unintentionally - New: Spice-Init -> Fail [...] QemuStop -> Release - This eliminates the race, but still releases the port as intended. + * It is race after all, so we might miss some corner cases in the + testing, but reviewing the patch and given the verifications so far it + should be safe. From the patch the change is like: + Old: Spice-Init -> Cleanup -> Release [...] QemuStop -> Release + ^ + If new alloc in this time it was released unintentionally + New: Spice-Init -> Fail [...] QemuStop -> Release + This eliminates the race, but still releases the port as intended. - * This change only affects users of spice ports. + * This change only affects users of spice ports. [Other Info] - - * n/a + + * n/a --- Using the UCA ocata release of libvirt we sporatically recieve this error message in nova-compute.log: 2017-06-12 14:32:54.359 19007 ERROR nova.compute.manager [instance: d1af2a13-0a53-4d9c-ada3-683e4973f28a] libvirtError: internal error: process exited while connecting to monitor: ((null):63256): Spice- Warning **: reds.c:2463:reds_init_socket: reds_init_socket: binding socket to 10.141.112.21:5900 failed Please backport the fix for the following bug into UCA ocata/pike releases: https://bugzilla.redhat.com/show_bug.cgi?id=1397440 The patch is documented here: https://www.spinics.net/linux/fedora/libvir/msg144093.html We've tested backporting this same fix using the ocata UCA libvirt 2.5.0-3ubuntu5~cloud0 source package and it fixes the problem for us. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1697729 Title: port allocator allocates the same SPICE port for multiple guests (race condition) To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-archive/+bug/1697729/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs