Merge "Log unhandled exceptions in worker" into stable/ocata

This commit is contained in:
Jenkins 2017-08-18 07:13:22 +00:00 committed by Gerrit Code Review
commit 6dbc4802aa
1 changed files with 16 additions and 0 deletions

View File

@ -14,9 +14,11 @@
# limitations under the License.
import eventlet.queue
import functools
from oslo_log import log as logging
import oslo_messaging
from oslo_utils import excutils
from oslo_utils import uuidutils
from osprofiler import profiler
@ -38,6 +40,18 @@ LOG = logging.getLogger(__name__)
CANCEL_RETRIES = 3
def log_exceptions(func):
@functools.wraps(func)
def exception_wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception:
with excutils.save_and_reraise_exception():
LOG.exception('Unhandled exception in %s', func.__name__)
return exception_wrapper
@profiler.trace_cls("rpc")
class WorkerService(object):
"""Service that has 'worker' actor in convergence.
@ -150,6 +164,7 @@ class WorkerService(object):
stack)
@context.request_context
@log_exceptions
def check_resource(self, cnxt, resource_id, current_traversal, data,
is_update, adopt_stack_data):
"""Process a node in the dependency graph.
@ -183,6 +198,7 @@ class WorkerService(object):
stack.id, msg_queue)
@context.request_context
@log_exceptions
def cancel_check_resource(self, cnxt, stack_id):
"""Cancel check_resource for given stack.