)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36300,"name":"Juan Pedro Torres Muñoz","display_name":"JuanPTM","email":"juan.torres-munoz@univention.de","username":"jtorres95"},"change_message_id":"c7e89ec04d58ddc21b570e0549d80be6187b64ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"806f3cf7_de6951a7","updated":"2023-10-02 12:13:18.000000000","message":"recheck","commit_id":"d8255ad531fa26efbcb66c19ea37ea4864d44df6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"c35a1e42d5492dfae76ef76cd2a877b5090fc296","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"8c7209ec_34bf89fe","updated":"2023-11-17 14:54:10.000000000","message":"There is a real issue with cache invalidation in the added code.\n\nOtherwise I would be happy if we can get it in.\nI am a bit missing here doc changes or any reference to the spec/blueprint/decision/etc","commit_id":"b65f8527e6286515858ec2a1615a7789f37a1fcd"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d599e1f9fcd15a0b7096c43465b6b98a38bebe3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"f441b543_da4d2782","updated":"2023-11-26 10:52:29.000000000","message":"This also needs unit tests. Unit tests will not let this get broken in the future and will let reviewers better understand, how the behavior looks like with the change","commit_id":"fcd8dfc0af0e7a4b275096c64bd4367d707de5b4"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"b05568a2416d203029912008eaee05102e51194c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"3bea2072_11425e9d","updated":"2023-12-14 11:54:36.000000000","message":"Thanks Juan, \nIf you wish, I can address this use case together with https://review.opendev.org/c/openstack/keystone/+/739966. \n\nLet me know what you guys prefer.","commit_id":"348046ebc0bf76a50ad28bb3986e6a1281505d1d"}],"keystone/identity/core.py":[{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"c35a1e42d5492dfae76ef76cd2a877b5090fc296","unresolved":true,"context_lines":[{"line_number":1216,"context_line":"        self.get_user_by_name.invalidate(self, user_old[\u0027name\u0027],"},{"line_number":1217,"context_line":"                                         user_old[\u0027domain_id\u0027])"},{"line_number":1218,"context_line":"        for fed_user in fed_users:"},{"line_number":1219,"context_line":"            self._shadow_federated_user.invalidate("},{"line_number":1220,"context_line":"                self, fed_user[\u0027idp_id\u0027], fed_user[\u0027protocol_id\u0027],"},{"line_number":1221,"context_line":"                fed_user[\u0027unique_id\u0027], fed_user[\u0027display_name\u0027],"},{"line_number":1222,"context_line":"                user_old.get(\u0027extra\u0027, {}).get(\u0027email\u0027))"}],"source_content_type":"text/x-python","patch_set":25,"id":"5a859efb_6006df1e","line":1219,"updated":"2023-11-17 14:54:10.000000000","message":"Here is cache invalidation of the shadow user happening. And since a new method parameter added cache is being invalidated for the wrong entry (with missing new parameter). So basically from the protocol pov the shadow_federated_user function is invoked with:\nORG_IDP:saml2:tim%40example.com:tbo:None:None\nand the cache is invalidated with:\nORG_IDP:saml2:tim%40example.com:tbo:None\n\nAdding \",None\" to the invalidate invocation helps fixing the test, but is it the right way if domain is coming as parameter? I guess you need to find exactly the parameter the shadow was invoked with initially.\n\nThe same is happening in federation/core.py so don\u0027t forget to fix it there as well","commit_id":"b65f8527e6286515858ec2a1615a7789f37a1fcd"},{"author":{"_account_id":36300,"name":"Juan Pedro Torres Muñoz","display_name":"JuanPTM","email":"juan.torres-munoz@univention.de","username":"jtorres95"},"change_message_id":"9b8aafc248767356020f5ef1bebbd37207080c2b","unresolved":true,"context_lines":[{"line_number":1216,"context_line":"        self.get_user_by_name.invalidate(self, user_old[\u0027name\u0027],"},{"line_number":1217,"context_line":"                                         user_old[\u0027domain_id\u0027])"},{"line_number":1218,"context_line":"        for fed_user in fed_users:"},{"line_number":1219,"context_line":"            self._shadow_federated_user.invalidate("},{"line_number":1220,"context_line":"                self, fed_user[\u0027idp_id\u0027], fed_user[\u0027protocol_id\u0027],"},{"line_number":1221,"context_line":"                fed_user[\u0027unique_id\u0027], fed_user[\u0027display_name\u0027],"},{"line_number":1222,"context_line":"                user_old.get(\u0027extra\u0027, {}).get(\u0027email\u0027))"}],"source_content_type":"text/x-python","patch_set":25,"id":"f9076f03_223b387f","line":1219,"in_reply_to":"5a859efb_6006df1e","updated":"2023-11-28 14:18:47.000000000","message":"After looking around I\u0027ve been thinking to store the ´domain_id´ value into the shadow users. This made me modify the federated user table in the database. That will create the necesity for a migration script ? Should I continue with this approach ?","commit_id":"b65f8527e6286515858ec2a1615a7789f37a1fcd"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"c35a1e42d5492dfae76ef76cd2a877b5090fc296","unresolved":true,"context_lines":[{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"    @MEMOIZE"},{"line_number":1486,"context_line":"    def _shadow_federated_user(self, idp_id, protocol_id, unique_id,"},{"line_number":1487,"context_line":"                               display_name, email\u003dNone, domain_name\u003dNone):"},{"line_number":1488,"context_line":"        user_dict \u003d {}"},{"line_number":1489,"context_line":"        res_api \u003d PROVIDERS.resource_api"},{"line_number":1490,"context_line":"        fed_api \u003d PROVIDERS.federation_api"}],"source_content_type":"text/x-python","patch_set":25,"id":"6c74f158_4a226354","line":1487,"updated":"2023-11-17 14:54:10.000000000","message":"This is the beginning of the failure reason (new parameter added)","commit_id":"b65f8527e6286515858ec2a1615a7789f37a1fcd"},{"author":{"_account_id":36300,"name":"Juan Pedro Torres Muñoz","display_name":"JuanPTM","email":"juan.torres-munoz@univention.de","username":"jtorres95"},"change_message_id":"7578703801d932ce17dae6b5d97fc3044d1c7c0a","unresolved":false,"context_lines":[{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"    @MEMOIZE"},{"line_number":1486,"context_line":"    def _shadow_federated_user(self, idp_id, protocol_id, unique_id,"},{"line_number":1487,"context_line":"                               display_name, email\u003dNone, domain_name\u003dNone):"},{"line_number":1488,"context_line":"        user_dict \u003d {}"},{"line_number":1489,"context_line":"        res_api \u003d PROVIDERS.resource_api"},{"line_number":1490,"context_line":"        fed_api \u003d PROVIDERS.federation_api"}],"source_content_type":"text/x-python","patch_set":25,"id":"73648764_cb8b6470","line":1487,"in_reply_to":"6c74f158_4a226354","updated":"2023-11-28 14:19:11.000000000","message":"Acknowledged","commit_id":"b65f8527e6286515858ec2a1615a7789f37a1fcd"}]}
