swift/swift
Brian Cline 7568ea5dd9 Prevent down nodes failing PUTs with non-ascii obj names
On an object PUT with a non-ascii name, if we hit some kind of
exception speaking to only one object-server of the N we try to
connect to, we try to log it -- but this causes an exception when
interpolating the UTF-8 encoded path iff the message template is
unicode.

Since this is essentially an exception within an exception handler,
this fails the entire request with a 500 error -- even though the
other nodes may have been just fine. This occurs before it attempts
a handoff node.

The simplest way to reproduce this is by running func tests against
a small cluster where one of the object nodes is not running

N.B. The locale of the node does not matter because the message
template is interpolated with node/device data from the Ring which is
always unicode because of json.

This includes an update to the FakeRing used by unittest
infrastructure to ensure that the FakeRing devices make a round-trip
through json to ensure consistent typing with real Rings.

Change-Id: Icb7284eb5abc9869c1620ee6366817112d8e5587
Closes-bug: #1597210
2016-07-05 16:33:15 -07:00
..
account Catch AttributeError less often 2016-06-14 16:10:16 -07:00
cli swift-ring-builder --yes option 2016-05-31 17:11:13 +02:00
common Remove white space between print and () 2016-07-05 16:42:00 +08:00
container Catch AttributeError less often 2016-06-14 16:10:16 -07:00
locale Imported Translations from Zanata 2016-06-03 06:49:09 +00:00
obj Merge "pickle_async_update should create tmp_dir" 2016-07-05 18:40:08 +00:00
proxy Prevent down nodes failing PUTs with non-ascii obj names 2016-07-05 16:33:15 -07:00
__init__.py Make pbr a build-time only dependency 2013-10-29 12:29:49 -07:00