From 1c061402a22e409bd83d4922af90ee7718a9b901 Mon Sep 17 00:00:00 2001 From: Philipp Marek Date: Tue, 10 Feb 2015 10:07:53 +0100 Subject: [PATCH] DRBD: Use correct function object after DBus disconnect. When the DRBDmanage daemon gets restarted in some way, the DBus object used is no longer valid. But it's not enough to get a new object; the function got invalid, too, so it has to be fetched anew. Closes-Bug: #1420171 Change-Id: Ie4734d8e3a183957c1f9421a5794f9ef962650b7 --- cinder/volume/drivers/drbdmanagedrv.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cinder/volume/drivers/drbdmanagedrv.py b/cinder/volume/drivers/drbdmanagedrv.py index b1b67396d..e6ee690a3 100644 --- a/cinder/volume/drivers/drbdmanagedrv.py +++ b/cinder/volume/drivers/drbdmanagedrv.py @@ -113,12 +113,13 @@ class DrbdManageDriver(driver.VolumeDriver): try once to reconnect. """ try: - return apply(fn, args) + return fn(*args) except dbus.DBusException as e: LOG.warn(_LW("got disconnected; trying to reconnect. (%s)") % six.text_type(e)) self.dbus_connect() - return apply(fn, args) + # Old function object is invalid, get new one. + return getattr(self.odm, fn._method_name)(*args) def do_setup(self, context): """Any initialization the volume driver does while starting.""" -- 2.45.2