Opportunistic locking may fail due to lack of resources on the nodes for which locks could be obtained. In this case, internally retry, asking for all the locks.
The first few patches just make sure that we use the OpPrereqError exception in the way it is specified (human-readable error message, error code). Unfortunately, we don't have a type checker to enforce this, so it wasn't noticed earlier. Klaus Aehlig (14): Add missing ecode Add missing ecode Add missing ecode Add missing error code Add missing error code Add missing error codes Explicitly log failed opportunistic locking Extend the callback interface by NotifyRetry Reset op status to wating on NotifyRetry Add new GenericErrror OpRetryNotSupportedError Extend base LU by PrepareRetry Make mcpu handle retry requests internally Allow internal retries in LUInstanceCreate Document changes to opportunistic locking in NEWS NEWS | 14 ++++++++++++++ lib/cmdlib/base.py | 12 ++++++++++++ lib/cmdlib/cluster.py | 24 +++++++++++++++--------- lib/cmdlib/common.py | 5 +++-- lib/cmdlib/instance.py | 14 +++++++++++++- lib/cmdlib/instance_utils.py | 2 +- lib/cmdlib/node.py | 2 +- lib/errors.py | 6 ++++++ lib/jqueue/__init__.py | 11 +++++++++++ lib/mcpu.py | 20 ++++++++++++++++++++ 10 files changed, 96 insertions(+), 14 deletions(-) -- 2.1.0.rc2.206.gedb03e5
