)]}'
{"neutron/db/l3_agentschedulers_db.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6c45caaf68349d0b5de571e63a966b94d27cf82c","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        if not router_ids:"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":"        query \u003d context.session.query(RouterL3AgentBinding)"},{"line_number":332,"context_line":"        query \u003d query.options(joinedload(RouterL3AgentBinding.l3_agent))"},{"line_number":333,"context_line":"        query \u003d query.options(orm.contains_eager("},{"line_number":334,"context_line":"                              RouterL3AgentBinding.l3_agent))"},{"line_number":335,"context_line":"        query \u003d query.join(RouterL3AgentBinding.l3_agent)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_310fb189","line":332,"updated":"2015-01-27 12:07:35.000000000","message":"is that really what you want to use both joinedload and contains_eager and then another join on line 335 ? \nSomething more simple should work, consider replacing lines 332-335 with:\n\nquery \u003d query.join(RouterL3AgentBinding.l3_agent)\nquery \u003d query.options(orm.contains_eager(RouterL3AgentBinding.l3_agent))","commit_id":"35fec2508ef4a2237d7e22e125f2c0343e5b2937"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6f9ea8faa19f763a35f0781fcde107ee5bb3e068","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        if not router_ids:"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":"        query \u003d context.session.query(RouterL3AgentBinding)"},{"line_number":332,"context_line":"        query \u003d query.options(joinedload(RouterL3AgentBinding.l3_agent))"},{"line_number":333,"context_line":"        query \u003d query.options(orm.contains_eager("},{"line_number":334,"context_line":"                              RouterL3AgentBinding.l3_agent))"},{"line_number":335,"context_line":"        query \u003d query.join(RouterL3AgentBinding.l3_agent)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_7e0aabd3","line":332,"in_reply_to":"1a930d6b_310fb189","updated":"2015-01-28 03:00:06.000000000","message":"Done","commit_id":"35fec2508ef4a2237d7e22e125f2c0343e5b2937"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"54e374569628c6c026cb8ca874e4c6425634cb05","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        if not router_ids:"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":"        query \u003d context.session.query(RouterL3AgentBinding)"},{"line_number":332,"context_line":"        query \u003d query.options(joinedload(RouterL3AgentBinding.l3_agent))"},{"line_number":333,"context_line":"        query \u003d query.options(orm.contains_eager("},{"line_number":334,"context_line":"                              RouterL3AgentBinding.l3_agent))"},{"line_number":335,"context_line":"        query \u003d query.join(RouterL3AgentBinding.l3_agent)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_76abb589","line":332,"in_reply_to":"1a930d6b_310fb189","updated":"2015-01-28 01:34:02.000000000","message":"i\u0027ll investigate.","commit_id":"35fec2508ef4a2237d7e22e125f2c0343e5b2937"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"bedd90825a93b76487a7d661fb840ff3541e42cd","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        if not router_ids:"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":"        query \u003d context.session.query(RouterL3AgentBinding)"},{"line_number":332,"context_line":"        query \u003d query.options(orm.contains_eager("},{"line_number":333,"context_line":"                              RouterL3AgentBinding.l3_agent))"},{"line_number":334,"context_line":"        query \u003d query.join(RouterL3AgentBinding.l3_agent)"},{"line_number":335,"context_line":"        if len(router_ids) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_3a13bf67","line":332,"updated":"2015-01-28 17:07:33.000000000","message":"nit: usually the \u0027join\u0027 comes before setting the \u0027options\u0027 at least that\u0027s my impression. Any special reason why you reverted that?","commit_id":"a235a3faac60df3c5b3cc49931b751ccd0a5ccf6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9d1420247555639f53dc9021784b0a0f1b41d700","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        if not router_ids:"},{"line_number":330,"context_line":"            return []"},{"line_number":331,"context_line":"        query \u003d context.session.query(RouterL3AgentBinding)"},{"line_number":332,"context_line":"        query \u003d query.options(orm.contains_eager("},{"line_number":333,"context_line":"                              RouterL3AgentBinding.l3_agent))"},{"line_number":334,"context_line":"        query \u003d query.join(RouterL3AgentBinding.l3_agent)"},{"line_number":335,"context_line":"        if len(router_ids) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_690d5390","line":332,"in_reply_to":"fa81d914_3a13bf67","updated":"2015-01-29 05:26:51.000000000","message":"my impression after reading sqlalchemy docs happened to be different from yours. :-)\n\neither orders produce the same result as far as i tested.","commit_id":"a235a3faac60df3c5b3cc49931b751ccd0a5ccf6"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"7e5f74cee2bd7fde103d8f7debf9ced79a769955","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        query \u003d context.session.query(RouterL3AgentBinding)"},{"line_number":312,"context_line":"        query \u003d query.options(orm.contains_eager("},{"line_number":313,"context_line":"                              RouterL3AgentBinding.l3_agent))"},{"line_number":314,"context_line":"        query \u003d query.join(RouterL3AgentBinding.l3_agent)"},{"line_number":315,"context_line":"        if len(router_ids) \u003e 1:"},{"line_number":316,"context_line":"            query \u003d query.filter("},{"line_number":317,"context_line":"                RouterL3AgentBinding.router_id.in_(router_ids))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6ced46_62f0d891","line":314,"updated":"2015-03-25 13:18:23.000000000","message":"you are replacing a LEFT join with an INNER join.\nSince the goal of this method is to return l3 agents, it\u0027s fine to use an INNER join. If there\u0027s no matching agent for a given router the row will not be returned.\n\nActually, it\u0027s a rather decent thing to do!","commit_id":"5a480be4a806e9f9b6e87f217a43fcc5fd8553dc"}],"neutron/scheduler/l3_agent_scheduler.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6c45caaf68349d0b5de571e63a966b94d27cf82c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]])"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_fad343d2","line":68,"updated":"2015-01-27 12:07:35.000000000","message":"how is this change related? With this modification you removed the filter for admin_state_up\u003dTrue","commit_id":"35fec2508ef4a2237d7e22e125f2c0343e5b2937"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"54e374569628c6c026cb8ca874e4c6425634cb05","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]])"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_965d89ec","line":68,"in_reply_to":"1a930d6b_fad343d2","updated":"2015-01-28 01:34:02.000000000","message":"this code was relying on the broken implementation of get_l3_agents_hosting_routers, which is now fixed.","commit_id":"35fec2508ef4a2237d7e22e125f2c0343e5b2937"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"bedd90825a93b76487a7d661fb840ff3541e42cd","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]])"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_ba816f91","line":68,"updated":"2015-01-28 17:07:33.000000000","message":"I still don\u0027t understand why you removed admin_state_up\u003dTrue . Bear with me.\nWith admin_state_up\u003dTrue , we filter all the agents that are up. If you take that away then in l3_agent_scheduler.py line 341\n\nif admin_state_up is not None:\n\nwill return False and the following lines won\u0027t be executed:\n\nquery \u003d (query.filter(agents_db.Agent.admin_state_up \u003d\u003d \n   admin_state_up))\n\nso why are we removing this filter? What am I missing?","commit_id":"a235a3faac60df3c5b3cc49931b751ccd0a5ccf6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3692ba965f7f85e1362cc91e1df568ac8d5a2b8","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]])"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_640b832a","line":68,"in_reply_to":"fa81d914_20728549","updated":"2015-01-30 06:18:44.000000000","message":"i mistakenly replied non-inline.  the following is a copy of it.\n\nit should not filter with admin_state_up because\n* it\u0027s consistent with get_unscheduled_routers\n* there are UTs which ensures the behaviour","commit_id":"a235a3faac60df3c5b3cc49931b751ccd0a5ccf6"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"e0960ada0b963632d25d981b4d7502142d59bbf4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]])"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_63160757","line":68,"in_reply_to":"fa81d914_640b832a","updated":"2015-01-30 17:08:16.000000000","message":"OK, it\u0027s just weird to take into consideration a router that has admin state down.","commit_id":"a235a3faac60df3c5b3cc49931b751ccd0a5ccf6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9d1420247555639f53dc9021784b0a0f1b41d700","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]])"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_e9e5c3a8","line":68,"in_reply_to":"fa81d914_ba816f91","updated":"2015-01-29 05:26:51.000000000","message":"this code was relying on the fact that admin_state_up\u003dTrue filter doesn\u0027t work.\nnow, as the filter was fixed, this code can\u0027t rely on the breakage anymore.","commit_id":"a235a3faac60df3c5b3cc49931b751ccd0a5ccf6"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"dc1600bdf7919b6aa86cf76b4f920ac4430ebe97","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]])"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_20728549","line":68,"in_reply_to":"fa81d914_e9e5c3a8","updated":"2015-01-29 10:23:09.000000000","message":"what do you mean? This method shouldn\u0027t filter for agents with admin_state_up\u003dTrue ? why? Why did you have to remove it, what was happening?","commit_id":"a235a3faac60df3c5b3cc49931b751ccd0a5ccf6"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"e611c36adf0018bd4f930d0f08c09f8912c5cf2d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]], admin_state_up\u003dTrue)"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6ced46_8a3098e9","side":"PARENT","line":68,"updated":"2015-03-25 06:31:23.000000000","message":"why removing it? Now it will default to None","commit_id":"c699515a19185274338a2b39a5db45b37893e405"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"c2a528d0ec20b34ac1e2d8b985698550a008ede8","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]], admin_state_up\u003dTrue)"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6ced46_8a5ed810","side":"PARENT","line":68,"in_reply_to":"1a6ced46_8a3098e9","updated":"2015-03-25 06:33:43.000000000","message":"because this code relies upon the broken behaviour.\nit should not filter with admin_state_up because.\n\n* it\u0027s consistent with get_unscheduled_routers\n* there are UTs which ensures the behaviour","commit_id":"c699515a19185274338a2b39a5db45b37893e405"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"4d0b5b2bf71793e54b0bb37137315fdaebbcca45","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        unscheduled_routers \u003d []"},{"line_number":66,"context_line":"        for router in routers:"},{"line_number":67,"context_line":"            l3_agents \u003d plugin.get_l3_agents_hosting_routers("},{"line_number":68,"context_line":"                context, [router[\u0027id\u0027]], admin_state_up\u003dTrue)"},{"line_number":69,"context_line":"            if l3_agents:"},{"line_number":70,"context_line":"                LOG.debug(\u0027Router %(router_id)s has already been \u0027"},{"line_number":71,"context_line":"                          \u0027hosted by L3 agent %(agent_id)s\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6ced46_ea3cace4","side":"PARENT","line":68,"in_reply_to":"1a6ced46_8a5ed810","updated":"2015-03-25 07:10:30.000000000","message":"Ok, that makes sense","commit_id":"c699515a19185274338a2b39a5db45b37893e405"}]}
