I'm having trouble duplicating this bug for replicated objects.
In my tests the handling of the object name and metadata in the object server is being treated consistently as utf-8 encoded bytes - not unicode strings.
object-6010: STDOUT: 'Content-Type': 'application/octet-stream' object-6010: STDOUT: 'ETag': 'd41d8cd98f00b204e9800998ecf8427e' object-6010: STDOUT: 'X-Object-Meta-Mtime': '1490985870.469097' object-6010: STDOUT: 'X-Object-Meta-\xe2\x98\x83': '\xe2\x98\x83' object-6010: STDOUT: 'X-Timestamp': '1490987405.84984'
On master, the EC reconstructor seems to blow up in an entirely different spot:
object-6030: STDERR: Traceback (most recent call last): object-6030: STDERR: File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 457, in fire_timers object-6030: STDERR: timer() object-6030: STDERR: File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/timer.py", line 58, in __call__ object-6030: STDERR: cb(*args, **kw) object-6030: STDERR: File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 214, in main object-6030: STDERR: result = function(*args, **kwargs) object-6030: STDERR: File "/vagrant/swift/swift/common/utils.py", line 2726, in _run_func object-6030: STDERR: self._responses.put(func(*args, **kwargs)) object-6030: STDERR: File "/vagrant/swift/swift/obj/reconstructor.py", line 231, in _get_response object-6030: STDERR: full_path = _full_path(node, part, path, policy) object-6030: STDERR: File "/vagrant/swift/swift/obj/reconstructor.py", line 90, in _full_path object-6030: STDERR: 'policy': policy, object-6030: STDERR: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 20: ordinal not in range(128)
I'm creating objects from the command line using u'\N{SNOWMAN}' in the name & metadata
swift upload test ☃ -H 'x-object-meta-☃: ☃'
I'm having trouble duplicating this bug for replicated objects.
In my tests the handling of the object name and metadata in the object server is being treated consistently as utf-8 encoded bytes - not unicode strings.
object-6010: STDOUT: 'Content-Type': 'application/ octet-stream' 04e9800998ecf84 27e' Meta-Mtime' : '1490985870.469097' Meta-\xe2\ x98\x83' : '\xe2\x98\x83'
object-6010: STDOUT: 'ETag': 'd41d8cd98f00b2
object-6010: STDOUT: 'X-Object-
object-6010: STDOUT: 'X-Object-
object-6010: STDOUT: 'X-Timestamp': '1490987405.84984'
On master, the EC reconstructor seems to blow up in an entirely different spot:
object-6030: STDERR: Traceback (most recent call last): lib/python2. 7/dist- packages/ eventlet/ hubs/hub. py", line 457, in fire_timers lib/python2. 7/dist- packages/ eventlet/ hubs/timer. py", line 58, in __call__ lib/python2. 7/dist- packages/ eventlet/ greenthread. py", line 214, in main swift/swift/ common/ utils.py" , line 2726, in _run_func .put(func( *args, **kwargs)) swift/swift/ obj/reconstruct or.py", line 231, in _get_response swift/swift/ obj/reconstruct or.py", line 90, in _full_path
object-6030: STDERR: File "/usr/local/
object-6030: STDERR: timer()
object-6030: STDERR: File "/usr/local/
object-6030: STDERR: cb(*args, **kw)
object-6030: STDERR: File "/usr/local/
object-6030: STDERR: result = function(*args, **kwargs)
object-6030: STDERR: File "/vagrant/
object-6030: STDERR: self._responses
object-6030: STDERR: File "/vagrant/
object-6030: STDERR: full_path = _full_path(node, part, path, policy)
object-6030: STDERR: File "/vagrant/
object-6030: STDERR: 'policy': policy,
object-6030: STDERR: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 20: ordinal not in range(128)
I'm creating objects from the command line using u'\N{SNOWMAN}' in the name & metadata
swift upload test ☃ -H 'x-object-meta-☃: ☃'