andymccurdy/redis-py — pull request #564 by hendrik-cliqz (2014-12-04 09:08:22+00:00)
Title: Fix UnicodeDecodeError in annotate_excpetion

Hi,

this fixes a somewhat special problem: We are using lua scripts in redis in combination with pipelining and msgpack (using python 2.x).

In case of an error redis-py tries to build a proper error message using the annotate_exception method. When building the message it converts everything to unicode. The problem: This can fail as one or more parts might not be proper unicode. In our case this is due to using msgpack. That means that building the exception causes an exception (UnicodeEncodeError), hiding the original redis error.

The change I propose is to relax the unicode conversion by using a safe approach to convert the string. That fixes the UnicodeEncodeError which in turn gives me the real error message and the right exception (ResponseError).

Please have a look at the unit test, which shall document it better than my explanation above.

I tested both python2 and python3 (as you will see, there is basically no change for python3)

Hendrik