)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"41f7ca070c3d6371e20268738a2a2dbe6e963876","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"94152dc0_3ee1c9c2","updated":"2022-01-28 16:41:22.000000000","message":"Looks good to me, I\u0027m in favor of raising the error.","commit_id":"1e0cd90191663c100c165d4c6a2b1ca796b5af25"}],"keystone/identity/backends/ldap/common.py":[{"author":{"_account_id":25613,"name":"Keigo Noha","email":"knoha@redhat.com","username":"knoha"},"change_message_id":"75f3681991724c9e66401a4af816d3679297c5e0","unresolved":true,"context_lines":[{"line_number":1405,"context_line":"                except IndexError:"},{"line_number":1406,"context_line":"                    value \u003d None"},{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"                # NOTE(xek): Some LDAP servers return bytes data type"},{"line_number":1409,"context_line":"                # We convert it to string here, so that it is consistent with"},{"line_number":1410,"context_line":"                # the other (SQL) backends."},{"line_number":1411,"context_line":"                # Bytes data type caused issues in the past, because it could"},{"line_number":1412,"context_line":"                # be cached and then passed into str() method to be used as"},{"line_number":1413,"context_line":"                # LDAP filters, which results in an unexpected b\u0027...\u0027 prefix."},{"line_number":1414,"context_line":"                if isinstance(value, bytes):"},{"line_number":1415,"context_line":"                    value \u003d value.decode(\u0027utf-8\u0027)"},{"line_number":1416,"context_line":"                obj[k] \u003d value"}],"source_content_type":"text/x-python","patch_set":1,"id":"62db6618_78c61f03","line":1413,"range":{"start_line":1408,"start_character":15,"end_line":1413,"end_character":77},"updated":"2021-11-30 00:46:08.000000000","message":"AFAIK, python-ldap causes bytes data type in return value. Please refer to https://www.python-ldap.org/en/python-ldap-3.3.0/bytes_mode.html","commit_id":"a8d78e82d72b16b092229757889bb43eade3dd36"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"f91b7445e3dfcdb63e49620b2c004f71f43aa838","unresolved":true,"context_lines":[{"line_number":1412,"context_line":"                # be cached and then passed into str() method to be used as"},{"line_number":1413,"context_line":"                # LDAP filters, which results in an unexpected b\u0027...\u0027 prefix."},{"line_number":1414,"context_line":"                if isinstance(value, bytes):"},{"line_number":1415,"context_line":"                    value \u003d value.decode(\u0027utf-8\u0027)"},{"line_number":1416,"context_line":"                obj[k] \u003d value"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":1,"id":"4920f810_307cf391","line":1415,"range":{"start_line":1415,"start_character":34,"end_line":1415,"end_character":40},"updated":"2021-12-08 16:11:31.000000000","message":"This decode may fail and raise an Error.  I think we may need to wrap this in try/except.","commit_id":"a8d78e82d72b16b092229757889bb43eade3dd36"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"320289584448f8e8ad28c1e7aafb0070df471960","unresolved":false,"context_lines":[{"line_number":1412,"context_line":"                # be cached and then passed into str() method to be used as"},{"line_number":1413,"context_line":"                # LDAP filters, which results in an unexpected b\u0027...\u0027 prefix."},{"line_number":1414,"context_line":"                if isinstance(value, bytes):"},{"line_number":1415,"context_line":"                    value \u003d value.decode(\u0027utf-8\u0027)"},{"line_number":1416,"context_line":"                obj[k] \u003d value"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":1,"id":"c90dfcf3_e10a8b0c","line":1415,"range":{"start_line":1415,"start_character":34,"end_line":1415,"end_character":40},"in_reply_to":"4920f810_307cf391","updated":"2022-01-18 08:56:09.000000000","message":"I did a \u0027backslashreplace\u0027, since I think this will cause less issues and also enable the user to figure things out more easily if it will manifest itself an an issue.","commit_id":"a8d78e82d72b16b092229757889bb43eade3dd36"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"7ed02781a3d1601a49d7da567df3a0b14a23c708","unresolved":true,"context_lines":[{"line_number":1412,"context_line":"                # be cached and then passed into str() method to be used as"},{"line_number":1413,"context_line":"                # LDAP filters, which results in an unexpected b\u0027...\u0027 prefix."},{"line_number":1414,"context_line":"                if isinstance(value, bytes):"},{"line_number":1415,"context_line":"                    value \u003d value.decode(\u0027utf-8\u0027, \u0027backslashreplace\u0027)"},{"line_number":1416,"context_line":"                obj[k] \u003d value"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":2,"id":"a35596b0_8aa476ff","line":1415,"range":{"start_line":1415,"start_character":50,"end_line":1415,"end_character":68},"updated":"2022-01-21 16:40:56.000000000","message":"It may be better to bail here and raise the error after logging it.","commit_id":"db1cd9eef45a2418d2da58e66bd80e170ebb2d04"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"17deeb92ff5c311ae18c99d1458a18cb6c50252e","unresolved":false,"context_lines":[{"line_number":1412,"context_line":"                # be cached and then passed into str() method to be used as"},{"line_number":1413,"context_line":"                # LDAP filters, which results in an unexpected b\u0027...\u0027 prefix."},{"line_number":1414,"context_line":"                if isinstance(value, bytes):"},{"line_number":1415,"context_line":"                    value \u003d value.decode(\u0027utf-8\u0027, \u0027backslashreplace\u0027)"},{"line_number":1416,"context_line":"                obj[k] \u003d value"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff7d0eae_525d2e7e","line":1415,"range":{"start_line":1415,"start_character":50,"end_line":1415,"end_character":68},"in_reply_to":"a35596b0_8aa476ff","updated":"2022-01-28 15:16:57.000000000","message":"Done","commit_id":"db1cd9eef45a2418d2da58e66bd80e170ebb2d04"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9ae1e4e7b4880db3a2d07d5d8d31e352532c1921","unresolved":true,"context_lines":[{"line_number":1417,"context_line":"                    except UnicodeDecodeError:"},{"line_number":1418,"context_line":"                        LOG.error(\"Error decoding value %r (object id %r).\","},{"line_number":1419,"context_line":"                                  value, res[0])"},{"line_number":1420,"context_line":"                        raise"},{"line_number":1421,"context_line":"                obj[k] \u003d value"},{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":3,"id":"397f3915_996b5eb3","line":1420,"range":{"start_line":1420,"start_character":24,"end_line":1420,"end_character":29},"updated":"2022-01-28 16:41:13.000000000","message":"This deviates from the original behavior but it\u0027s important to point out that there\u0027s some issue here that was silently failing before. Some operators may need to fix their data.","commit_id":"1e0cd90191663c100c165d4c6a2b1ca796b5af25"}]}
