The first bad commit is:

commit 9ab451edfb2ba860223364f01a8c408954b26e53
Author: Jiří Župka <[email protected]>
Date:   Thu Aug 29 10:11:05 2013 +0200

    virt: propcan change __slots__ listing to avoid waste a memory.

    class X:
       __slots__ = ['a', 'b']

    class Y(X):
       __slots__ = X.__slots__ + ['c']

    Double declaring of slots causes a waste of memory
    and aims to bad manners to slots.

    Signed-off-by: Jiří Župka <[email protected]>

But this one makes all tests fail with:

18:38:20 ERROR| AttributeError: 'QemuIface' object has no attribute '__all_slots'
18:38:20 ERROR|
18:38:20 ERROR| FAIL migrate.default.tcp -> AttributeError: 'QemuIface' object has no attribute '__all_slots'

So it's unclear whether it is the real culprit. The next one:

commit 1f4eb712ab5fee9f4889f0763513bfbcded9ee63
Author: Chris Evich <[email protected]>
Date:   Thu Sep 5 10:14:23 2013 +0200

    virt: Replace class method with class attribute

    There are very few places that need to re-calculate all ancestor
    __slots__ values. It's more efficient to just store them as
    an instance attribute, set from __new__().  I also updated
    all users dependent on the old __slots__ behavior to use
    the new __all_slots__ attribute instead.

    Signed-off-by: Chris Evich <[email protected]>

Is the first one that manifests the subtle problem: During migration, vms start to reboot in the middle of the migration process, even when they are not supposed to, leading to this, very well hidden error:

2013-10-03 19:32:11: [ 1.087980] EXT4-fs (vda1): INFO: recovery required on readonly filesystem 2013-10-03 19:32:11: [ 1.091435] EXT4-fs (vda1): write access will be enabled during recovery
2013-10-03 19:32:11: [    1.115648] EXT4-fs (vda1): recovery complete
2013-10-03 19:32:11: [ 1.118456] EXT4-fs (vda1): mounted filesystem with ordered data mode. Opts: (null) 2013-10-03 19:32:11: [ 1.150995] dracut: Checking ext4: /dev/disk/by-uuid/4f667772-b82e-47a0-9c3b-e913b681a3e2 2013-10-03 19:32:11: [ 1.154789] dracut: issuing e2fsck -a /dev/disk/by-uuid/4f667772-b82e-47a0-9c3b-e913b681a3e2 2013-10-03 19:32:11: [ 1.164073] dracut: /dev/disk/by-uuid/4f667772-b82e-47a0-9c3b-e913b681a3e2: clean, 19033/655360 files, 225107/2621184 blocks 2013-10-03 19:32:11: [ 1.170866] dracut: Remounting /dev/disk/by-uuid/4f667772-b82e-47a0-9c3b-e913b681a3e2 with -o ro

On our local testing, this often doesn't lead to corruption, but over the course of a ton of migrations it starts to introduce real qcow2 image corruption, and that's the gist of all the problems I saw on regression testing (and maybe the responsible for the JeOS troubles I was seeing early on Monday/Tuesday).

So, I'm taking all the propcan related commits from next, and Jiri and Chris need to work on a new branch with all the changes, fix and send them as a coherent pull request later at their convenience. The list of commits pulled off are:

pick 1a9bf39 virt: propcan clean some old style construction.
pick 9ab451e virt: propcan change __slots__ listing to avoid waste a memory.
pick 1f4eb71 virt: Replace class method with class attribute
pick fda1bd4 virt: Make special methods in propcan special
pick 777d9b4 virt: Propcan additional fixes

Phew, that one was hard to find!

Cheers,

Lucas

_______________________________________________
Virt-test-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-test-devel

Reply via email to