[Bug 1348244] Re: debug log messages need to be unicode

Liang Chen liang.chen at canonical.com
Tue Jun 16 19:08:04 UTC 2015


Hi Chris,

Thanks for looking at the patch. I will contact James Page to review
wait-syslog-on-startup.patch, and update the corresponding bugs that are
referenced in the changelog.

Thanks,
Liang

** Description changed:

  [Impact]
  
   * Nova services fail to start because they cannot connect to rsyslog
  
  [Test Case]
  
   * Set user_syslog to True in nova.conf, stop rsyslog service and
  restart nova services.
  
  [Regression Potential]
  
-  * None
+  * The following patches from 1385295 and 1399088 that address the    
+    regression introduced in this bug's fix are also included.
+    fix-syslog-logging.patch (LP: #1385295)
+    move-syslog-instantiation.patch (LP: #1399088)
  
- When nova services log to syslog, they should wait for syslog to start
- prior to the nova-* services start.
  
+ When nova services log to syslog, they should wait for syslog to start prior to the nova-* services start.
  
  Debug logs should be:
  
      LOG.debug("message")  should be LOG.debug(u"message")
  
  Before the translation of debug log messages was removed, the
  translation was returning unicode.   Now that they are no longer
  translated they need to be explicitly marked as unicode.
  
  This was confirmed by discussion with dhellman.   See
  2014-07-23T13:48:23 in this log http://eavesdrop.openstack.org/irclogs
  /%23openstack-oslo/%23openstack-oslo.2014-07-23.log
  
  The problem was discovered when an exception was used as replacement
  text in a debug log message:
  
         LOG.debug("Failed to mount image %(ex)s)", {'ex': e})
  
  In particular it was discovered as part of enabling lazy translation,
  where the exception message is replaced with an object that does not
  support str().   Note that this would also fail without lazy enabled, if
  a translation for the exception message was provided that was unicode.
  
  Example trace:
  
   Traceback (most recent call last):
    File "nova/tests/virt/disk/test_api.py", line 78, in test_can_resize_need_fs_type_specified
      self.assertFalse(api.is_image_partitionless(imgfile, use_cow=True))
    File "nova/virt/disk/api.py", line 208, in is_image_partitionless
      fs.setup()
    File "nova/virt/disk/vfs/localfs.py", line 80, in setup
      LOG.debug("Failed to mount image %(ex)s)", {'ex': e})
    File "/usr/lib/python2.7/logging/__init__.py", line 1412, in debug
      self.logger.debug(msg, *args, **kwargs)
    File "/usr/lib/python2.7/logging/__init__.py", line 1128, in debug
      self._log(DEBUG, msg, args, **kwargs)
    File "/usr/lib/python2.7/logging/__init__.py", line 1258, in _log
      self.handle(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 1268, in handle
      self.callHandlers(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 1308, in callHandlers
      hdlr.handle(record)
    File "nova/test.py", line 212, in handle
      self.format(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 723, in format
      return fmt.format(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 464, in format
      record.message = record.getMessage()
    File "/usr/lib/python2.7/logging/__init__.py", line 328, in getMessage
      msg = msg % self.args
    File "/opt/stack/nova/.tox/py27/local/lib/python2.7/site-packages/oslo/i18n/_message.py", line 167, in __str__
      raise UnicodeError(msg)
  UnicodeError: Message objects do not support str() because they may contain non-ascii characters. Please use unicode() or translate() instead.
  ======================================================================
  FAIL: nova.tests.virt.disk.test_api.APITestCase.test_resize2fs_e2fsck_fails
  tags: worker-3

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1348244

Title:
  debug log messages need to be unicode

Status in Cinder:
  Fix Released
Status in OpenStack Compute (Nova):
  Fix Released
Status in The Oslo library incubator:
  Fix Released
Status in cinder package in Ubuntu:
  Fix Released
Status in nova package in Ubuntu:
  Fix Released
Status in cinder source package in Trusty:
  New
Status in nova source package in Trusty:
  New

Bug description:
  [Impact]

   * Nova services fail to start because they cannot connect to rsyslog

  [Test Case]

   * Set user_syslog to True in nova.conf, stop rsyslog service and
  restart nova services.

  [Regression Potential]

   * The following patches from 1385295 and 1399088 that address the    
     regression introduced in this bug's fix are also included.
     fix-syslog-logging.patch (LP: #1385295)
     move-syslog-instantiation.patch (LP: #1399088)

  
  When nova services log to syslog, they should wait for syslog to start prior to the nova-* services start.

  Debug logs should be:

      LOG.debug("message")  should be LOG.debug(u"message")

  Before the translation of debug log messages was removed, the
  translation was returning unicode.   Now that they are no longer
  translated they need to be explicitly marked as unicode.

  This was confirmed by discussion with dhellman.   See
  2014-07-23T13:48:23 in this log http://eavesdrop.openstack.org/irclogs
  /%23openstack-oslo/%23openstack-oslo.2014-07-23.log

  The problem was discovered when an exception was used as replacement
  text in a debug log message:

         LOG.debug("Failed to mount image %(ex)s)", {'ex': e})

  In particular it was discovered as part of enabling lazy translation,
  where the exception message is replaced with an object that does not
  support str().   Note that this would also fail without lazy enabled,
  if a translation for the exception message was provided that was
  unicode.

  Example trace:

   Traceback (most recent call last):
    File "nova/tests/virt/disk/test_api.py", line 78, in test_can_resize_need_fs_type_specified
      self.assertFalse(api.is_image_partitionless(imgfile, use_cow=True))
    File "nova/virt/disk/api.py", line 208, in is_image_partitionless
      fs.setup()
    File "nova/virt/disk/vfs/localfs.py", line 80, in setup
      LOG.debug("Failed to mount image %(ex)s)", {'ex': e})
    File "/usr/lib/python2.7/logging/__init__.py", line 1412, in debug
      self.logger.debug(msg, *args, **kwargs)
    File "/usr/lib/python2.7/logging/__init__.py", line 1128, in debug
      self._log(DEBUG, msg, args, **kwargs)
    File "/usr/lib/python2.7/logging/__init__.py", line 1258, in _log
      self.handle(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 1268, in handle
      self.callHandlers(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 1308, in callHandlers
      hdlr.handle(record)
    File "nova/test.py", line 212, in handle
      self.format(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 723, in format
      return fmt.format(record)
    File "/usr/lib/python2.7/logging/__init__.py", line 464, in format
      record.message = record.getMessage()
    File "/usr/lib/python2.7/logging/__init__.py", line 328, in getMessage
      msg = msg % self.args
    File "/opt/stack/nova/.tox/py27/local/lib/python2.7/site-packages/oslo/i18n/_message.py", line 167, in __str__
      raise UnicodeError(msg)
  UnicodeError: Message objects do not support str() because they may contain non-ascii characters. Please use unicode() or translate() instead.
  ======================================================================
  FAIL: nova.tests.virt.disk.test_api.APITestCase.test_resize2fs_e2fsck_fails
  tags: worker-3

To manage notifications about this bug go to:
https://bugs.launchpad.net/cinder/+bug/1348244/+subscriptions



More information about the Ubuntu-sponsors mailing list