{"push_id":869492396,"size":2,"distinct_size":2,"ref":"refs/heads/master","head":"9dbbc1f2435e64bd1e4411ef75ec082ba8290fe7","before":"623a064d050b4a065cce98eacc5220bf689d4352","commits":[{"sha":"00d07f5205c758757bb854372c5576e62a5f57d6","author":{"email":"b7a5da1e6209f9510c07a03f0423c37727add225@redhat.com","name":"Matthew Booth"},"message":"Robustify locking in MessageHandlingServer\n\nThis change formalises locking in MessageHandlingServer, which closes\nseveral bugs:\n\n* It adds locking for internal state when using the blocking executor,\n  which closes a number of races.\n* It does not hold a lock while executing server functions,\n  which removes a potential cause of deadlock if the server does its\n  own locking.\n* It fixes a regression introduced in change\n  gI3cfbe1bf02d451e379b1dcc23dacb0139c03be76. If multiple threads\n  called wait() simultaneously, only 1 of them would wait and the\n  others would return immediately, despite message handling not having\n  completed.  With this change only 1 will call the underlying wait,\n  but all will wait on its completion.\n\nAdditionally, it introduces some new functionality:\n\n* It allows the user to make calls in any order and it will ensure,\n  with locking, that these will be reordered appropriately.\n* The caller can pass a `timeout` argument to any server method, which\n  will cause it to raise an exception if it waits too long.\n* The caller can pass a `log_after` argument to any server method,\n  which will cause it to raise a log message if it waits too long. It\n  can also be used to disable logging when waiting is intentional.\n\nWe remove DummyCondition as it no longer has any users.\n\nThis change was originally committed as change\nI9d516b208446963dcd80b75e2d5a2cecb1187efa, but was reverted as it\ncaused a hang in a Nova test. This was caused by the locking behaviour\nfor handling restarting a previously stopped server. The original\npatch caused the state to 'wrap' immediately after the user called\nwait(). This caused a hang in tests which redundantly called stop()\nand wait() multiple times. This new patch only wraps when the user\ncalls start() again. Callers who do not restart a server will\ntherefore not be affected by the wrapping behaviour. Callers who do\nrestart a server will be no worse than before. We add a deprecation\nwarning on restart, as this operation is inherently racy with this api\nand there is a simple, safe alternative.\n\nThis new version has been successfully tested against the unit and\nfunctional tests of nova, cinder, glance, and ceilometer.\n\nChange-Id: Ic79f87e7b069c1f62d6121486fd6cafd732fdde7","distinct":true,"url":"https://api.github.com/repos/openstack/oslo.messaging/commits/00d07f5205c758757bb854372c5576e62a5f57d6"},{"sha":"9dbbc1f2435e64bd1e4411ef75ec082ba8290fe7","author":{"email":"d95b56ce41a2e1ac4cecdd398defd7414407cc08@review.openstack.org","name":"Jenkins"},"message":"Merge \"Robustify locking in MessageHandlingServer\"","distinct":true,"url":"https://api.github.com/repos/openstack/oslo.messaging/commits/9dbbc1f2435e64bd1e4411ef75ec082ba8290fe7"}]}