diff options
| author | Russell Bryant <rbryant@redhat.com> | 2013-03-05 10:55:18 -0500 |
|---|---|---|
| committer | Russell Bryant <rbryant@redhat.com> | 2013-03-05 10:57:55 -0500 |
| commit | 2f983793574de07269c4a79852d75a9059465ee0 (patch) | |
| tree | b3c007c3f5fc8d45e4e575a6d233e19bcdeffe92 /nova/console | |
| parent | ad57a303f1916d99f73eb8123f60c8a2fd1e6a78 (diff) | |
| download | nova-2f983793574de07269c4a79852d75a9059465ee0.tar.gz nova-2f983793574de07269c4a79852d75a9059465ee0.tar.xz nova-2f983793574de07269c4a79852d75a9059465ee0.zip | |
Fix issues with re-raising exceptions.
There is complication with re-raising exceptions and our usage of
eventlet. If the code in the exception handler accesses the db or rpc
in the exception handler, it will no longer be able to re-raise the
exception. Using excutils.save_and_reraise_exception() works aorund
this issue.
The most common error is calling LOG.error() or LOG.exception(), as it
is possible for these to go access rpc. There is an option to turn on
notifications for these errors.
Fix bug 845866.
Change-Id: Icfca2af63805711229249aa7abe60a938edd1b35
Diffstat (limited to 'nova/console')
| -rw-r--r-- | nova/console/xvp.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/nova/console/xvp.py b/nova/console/xvp.py index ba3daadba..1e9fbcb5d 100644 --- a/nova/console/xvp.py +++ b/nova/console/xvp.py @@ -26,6 +26,7 @@ from oslo.config import cfg from nova import context from nova import db from nova import exception +from nova.openstack.common import excutils from nova.openstack.common import log as logging from nova import paths from nova import utils @@ -119,8 +120,8 @@ class XVPConsoleProxy(object): with open(CONF.console_xvp_conf, 'w') as cfile: cfile.write(config) except IOError: - LOG.exception(_("Failed to write configuration file")) - raise + with excutils.save_and_reraise_exception(): + LOG.exception(_("Failed to write configuration file")) def _xvp_stop(self): LOG.debug(_('Stopping xvp')) |
