{"push_id":751516381,"size":12,"distinct_size":12,"ref":"refs/heads/master","head":"acdb72bfac29607247402e71b031697476c7c137","before":"feb01439cffe3234cff2afc8ed5d48dad044adc9","commits":[{"sha":"2a875644ccb4071758234a2a9837fdb6b4ad915e","author":{"email":"b7a5da1e6209f9510c07a03f0423c37727add225@redhat.com","name":"Matthew Booth"},"message":"Implement compare-and-swap for instance update\n\nThis patch reworks nova.db.sqlalchemy.api._instance_update to remove a\nrace condition that exists in a critical section of code that\nretrieves the instance record from the database, does some checks of\nboth the new values and existing values of instance fields, and then\ntries to update the database with the new values.\n\nWe update the value using update_on_match, which does an optimistic,\natomic, lock-free, compare-and-swap on the object. If the update\nfails, we do some additional checks to determine the specific error,\nwhich maintains the previous behaviour.\n\n_instance_update() is simplified by having it return only the updated\ninstance_ref. instance_update_and_get_original() is updated to fetch\nthe old value itself before calling _instance_update().\n\nThis patch was originally submitted as change\nI9cd0f4b620e639b238555983bf6d58deafbaefeb, but that was reverted. The\noriginal version was optimistic about not racing in\ninstance_update_and_get_original between fetching an instance and\nupdating it, in which case it raised a different exception to the\nprevious behaviour. In practice we were hit that race frequently in\nthe gate, and the unexpectedly different exception was causing gate\nfailures. This new version adds a retry in this case, and raises the\nexpected exception. The frequency of hitting that race highlights the\nimportance of this patch, as it is otherwise unhandled.\n\nThis new version also updates the exception hierarchy so that all\nexceptions raised by _instance_update inherit from a single exception:\nInstanceUpdateConflict. UnexpectedVMStateError is removed, as it had no\nusers. An InstanceUpdateConflict is now raised instead.\n\nThe new code trivially allows the caller to check any property when\nupdating an instance, not just the two prescribed. This new version\nenables this by allowing the 'expected' dict to be passed in, as well\nas maintaining the behaviour of pulling expected values from the\nupdate dict. This has numerous potential applications, for example\natomically changing the host of an instance during evacuation.\n\nThe new version adds numerous additional tests.\n\nCloses-bug: #1297375\nChange-Id: I293da6f320dd8f3474ce2a9c907298e1fb348181","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/2a875644ccb4071758234a2a9837fdb6b4ad915e"},{"sha":"b54e20d473ede1ea7ddc0fadb5361f0e06c15310","author":{"email":"a81537bf82e97ed1d98b9ccd99dfb90ac6844c4c@in.ibm.com","name":"Sudipta Biswas"},"message":"cleanup NovaObjectDictCompat from virt_cpu_topology\n\ncleanup subclassing on NovaObjectDictCompat and fix subsequent\ntests and code associated with nova/objects/virt_cpu_topology.py\n\nDue to the exhaustive nature of changes, the cleanup is done\none object at a time.\n\nThis is the fourth patch of the series.\nThere shall be more patches to follow for other objects.\n\nRelated to blueprint liberty-objects\n\nChange-Id: I6c4ed28faf0bccf169faec295b410e764f70db5c","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/b54e20d473ede1ea7ddc0fadb5361f0e06c15310"},{"sha":"fb3713ae0ebbe030586c00b4d17bff371215e831","author":{"email":"50c461d782bf45c44b515a61b2705ea60d47d0cd@redhat.com","name":"Vikhyat Umrao"},"message":"RBD: Reading rbd_default_features from ceph.conf\n\nThis patch enables reading rbd_default_features from ceph.conf for rbd\nfeatures configuration, falling back to layering if nothing is found.\n\nCloses-Bug: #1480129\n\nChange-Id: I639f06d6375201bdf5d469953bd80644ef433c87","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/fb3713ae0ebbe030586c00b4d17bff371215e831"},{"sha":"a59f22d27819bc02d548b92198243e20bb2e0014","author":{"email":"0d061f323c4dff40bc25a2af968bdfe5a2a42ff0@hotmail.com","name":"Feodor Tersin"},"message":"Honour nullability constraints of Glance schema in ImageMeta\n\nCurrently ImageMeta object doesn't allow Null values in fields, which\nare nullable in Glance DB schema.\n\nBy this reason since that Iac034d864cd0265759aaa7c8049fafa276763cc0 is\nmerged, Nova fails to boot from any volume-backed image.\n\nThis patch makes ImageMeta class to accept Null values to these fields,\nbut converts Null to default empty values for backward compatibility.\n\nCloses-Bug: #1481220\nCloses-Bug: #1479869\nChange-Id: I770d394f65e5be6a5f8f36c673806f91509e0abe","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/a59f22d27819bc02d548b92198243e20bb2e0014"},{"sha":"e7396e7c6601cd9ab2aaddf82311353a5b4fefe3","author":{"email":"bb938cf255e055ff3507f2627d214e8e62118fcf@redhat.com","name":"Daniel P. Berrange"},"message":"libvirt: don't open connection in driver constructor\n\nCalling host.has_min_version triggers opening of a new\nlibvirt connection. This should not ever be done in the\nconstructor of LibvirtDriver class, as the 'host_init'\nmethod must be allowed to run first during normal Nova\ncompute service startup.\n\nThis mistake was introduced in\n\n  commit 9a09674220a071e51fdca7911b52c0027c01ff64\n  Author: Vladik Romanovsky <vromanso@redhat.com>\n  Date:   Wed Oct 15 14:42:37 2014 -0400\n\n    libvirt: enable virtio-net multiqueue\n\nand is thought to also be causing instability in the\nunit tests in the gate.\n\nAvoid the problem by passing the Host object instance\ninto the VIF driver get_config method, instead of\ntrying to pass a flag into its constructor.\n\nCloses-Bug: #1482230\nChange-Id: Ic940d6ffc5b7d664540363b8bcbea23c7bc7d9dd","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/e7396e7c6601cd9ab2aaddf82311353a5b4fefe3"},{"sha":"dbadd79f7552f664edecbb83a81693c2e4b0e76d","author":{"email":"d4c18b9bf0d02d39870d2018c8e6be2027c92b74@us.ibm.com","name":"Ryan Rossiter"},"message":"Fix test_relationships() for subobject versions\n\ntest_relationships() should be testing the versions of subobjects held\nin obj_relationships to the current versions of the subobjects. A static\ntree was used to maintain the current versions before, and that static\ntree was checked against the current version of subobjects. This is now\nchanged over to have a tree with the current version of the subobjects,\nand a tree with the version held in the most recent entry in\nobj_relationships within the object.\n\nBecause some versioning got stale, objects needed\nto be updated to contain the correct versions of subobjects.\n\nCloses-Bug: #1471978\n\nChange-Id: I99f720725c9a3e7902de39e9aee533caa2c73847","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/dbadd79f7552f664edecbb83a81693c2e4b0e76d"},{"sha":"0e100060290649b832ad97dfd648a6fe491f92a7","author":{"email":"d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","name":"Jenkins"},"message":"Merge \"RBD: Reading rbd_default_features from ceph.conf\"","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/0e100060290649b832ad97dfd648a6fe491f92a7"},{"sha":"bccd17846176646e1503259c4a08e73fa72a4528","author":{"email":"d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","name":"Jenkins"},"message":"Merge \"libvirt: don't open connection in driver constructor\"","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/bccd17846176646e1503259c4a08e73fa72a4528"},{"sha":"6e5cc92c41ba3946577200d1f1cb23214ac464ab","author":{"email":"d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","name":"Jenkins"},"message":"Merge \"cleanup NovaObjectDictCompat from virt_cpu_topology\"","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/6e5cc92c41ba3946577200d1f1cb23214ac464ab"},{"sha":"c8b5054f7f98e212f23fba2928b1f7502884b89f","author":{"email":"d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","name":"Jenkins"},"message":"Merge \"Fix test_relationships() for subobject versions\"","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/c8b5054f7f98e212f23fba2928b1f7502884b89f"},{"sha":"a553075c29cff6f595f2a13c2ac102a1b931992a","author":{"email":"d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","name":"Jenkins"},"message":"Merge \"Honour nullability constraints of Glance schema in ImageMeta\"","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/a553075c29cff6f595f2a13c2ac102a1b931992a"},{"sha":"acdb72bfac29607247402e71b031697476c7c137","author":{"email":"d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","name":"Jenkins"},"message":"Merge \"Implement compare-and-swap for instance update\"","distinct":true,"url":"https://api.github.com/repos/bigswitch/nova/commits/acdb72bfac29607247402e71b031697476c7c137"}]}