)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"6f1019ef5e485e6809f8e5b20ca6cea672870224","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By querying all devices at once, the RPC is 10~15% faster."},{"line_number":10,"context_line":"This causes more code and probably is only useful for agent start-up"},{"line_number":11,"context_line":"times, so the benefit needs to be compared with the cost."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic27b9411809fbbe42dbd56cb7dc0c053b9367fa2"},{"line_number":14,"context_line":"Related-bug: 1430999"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7aa08908_5d645248","line":11,"updated":"2016-06-10 06:53:13.000000000","message":"There is some visible improvement on agent restart.  See my comment on https://review.openstack.org/#/c/277279/ for numbers.","commit_id":"0287179a4d58c77dbf7112e7ae613c684b806a8e"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"409e9b4c063c2b459b575bed07771002db85b16c","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"        self.notify_security_groups_member_updated(context, port)"},{"line_number":1450,"context_line":""},{"line_number":1451,"context_line":"    def get_bound_port_context(self, plugin_context, port_id, host\u003dNone,"},{"line_number":1452,"context_line":"                               cached_networks\u003dNone):"},{"line_number":1453,"context_line":"        session \u003d plugin_context.session"},{"line_number":1454,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":1455,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_bed75cec","line":1452,"updated":"2016-02-25 05:35:35.000000000","message":"why don\u0027t you make this a wrapper of get_bound_ports_context?","commit_id":"ec7a0baa1cae8dceadae329b96af096664bdf61e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"49dcdc4fefa82f3949a7ee71cd96057403eef4d9","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"        self.notify_security_groups_member_updated(context, port)"},{"line_number":1450,"context_line":""},{"line_number":1451,"context_line":"    def get_bound_port_context(self, plugin_context, port_id, host\u003dNone,"},{"line_number":1452,"context_line":"                               cached_networks\u003dNone):"},{"line_number":1453,"context_line":"        session \u003d plugin_context.session"},{"line_number":1454,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":1455,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_e83c6431","line":1452,"in_reply_to":"bae84128_bed75cec","updated":"2016-04-18 06:13:41.000000000","message":"Done","commit_id":"ec7a0baa1cae8dceadae329b96af096664bdf61e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"409e9b4c063c2b459b575bed07771002db85b16c","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"                filter_stmt.append(models_v2.Port.id.startswith(port_id))"},{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"            ports_db \u003d (session.query(models_v2.Port)."},{"line_number":1514,"context_line":"                       filter(or_(*filter_stmt)).all())"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"            keylens \u003d set(map(len, port_ids))"},{"line_number":1517,"context_line":"            if len(keylens) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_beee3cb2","line":1514,"updated":"2016-02-25 05:35:35.000000000","message":"why to be different from get_bound_port_context wrt eagerloads?","commit_id":"ec7a0baa1cae8dceadae329b96af096664bdf61e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"45b92d754428b734bac2a635be04136020fd8aed","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"                filter_stmt.append(models_v2.Port.id.startswith(port_id))"},{"line_number":1512,"context_line":""},{"line_number":1513,"context_line":"            ports_db \u003d (session.query(models_v2.Port)."},{"line_number":1514,"context_line":"                       filter(or_(*filter_stmt)).all())"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"            keylens \u003d set(map(len, port_ids))"},{"line_number":1517,"context_line":"            if len(keylens) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_1ebbe876","line":1514,"in_reply_to":"bae84128_beee3cb2","updated":"2016-02-25 05:49:37.000000000","message":"There seems to be no performance gain when eager loading is disabled.  Also, profiling data suggests significant amount of time is spent in _make_port_dict with the original code, which is probably due to ORM relationship loading.","commit_id":"ec7a0baa1cae8dceadae329b96af096664bdf61e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cfae80e45ab007310a984657131ce30cffdb306d","unresolved":false,"context_lines":[{"line_number":1531,"context_line":"                if port_id[:keylen] not in port_db_dict:"},{"line_number":1532,"context_line":"                    LOG.debug(\"No ports have port_id starting with %s\","},{"line_number":1533,"context_line":"                              port_id)"},{"line_number":1534,"context_line":"                    port_ctxt_list.append(None)"},{"line_number":1535,"context_line":"                    continue"},{"line_number":1536,"context_line":""},{"line_number":1537,"context_line":"                port_db \u003d port_db_dict[port_id[:keylen]]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_1a08ba90","line":1534,"updated":"2016-03-09 08:57:41.000000000","message":"why do you need this line?","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"f54362acba4ff1744027469acb4299c5fac5abae","unresolved":false,"context_lines":[{"line_number":1531,"context_line":"                if port_id[:keylen] not in port_db_dict:"},{"line_number":1532,"context_line":"                    LOG.debug(\"No ports have port_id starting with %s\","},{"line_number":1533,"context_line":"                              port_id)"},{"line_number":1534,"context_line":"                    port_ctxt_list.append(None)"},{"line_number":1535,"context_line":"                    continue"},{"line_number":1536,"context_line":""},{"line_number":1537,"context_line":"                port_db \u003d port_db_dict[port_id[:keylen]]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_b5bbe571","line":1534,"in_reply_to":"5aef4532_1a08ba90","updated":"2016-04-18 06:13:13.000000000","message":"This is needed as a place holder.","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0353c36b9dffe54c5c7647665157709f85f86d52","unresolved":false,"context_lines":[{"line_number":1459,"context_line":"        return pc[0]"},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"    def get_bound_ports_context(self, plugin_context, port_ids, host\u003dNone,"},{"line_number":1462,"context_line":"                               cached_networks\u003dNone):"},{"line_number":1463,"context_line":"        if not len(port_ids):"},{"line_number":1464,"context_line":"            return []"},{"line_number":1465,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_5d08c32d","line":1462,"updated":"2016-05-08 02:53:13.000000000","message":"please fix alignment here","commit_id":"67b2bc958d41ccc03230c50cbd6a7f1cf52518d8"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"82919328643633d06eeec49ffb793b96216b32ff","unresolved":false,"context_lines":[{"line_number":1459,"context_line":"        return pc[0]"},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"    def get_bound_ports_context(self, plugin_context, port_ids, host\u003dNone,"},{"line_number":1462,"context_line":"                               cached_networks\u003dNone):"},{"line_number":1463,"context_line":"        if not len(port_ids):"},{"line_number":1464,"context_line":"            return []"},{"line_number":1465,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_b334894a","line":1462,"in_reply_to":"dab17558_5d08c32d","updated":"2016-05-13 07:00:33.000000000","message":"Done","commit_id":"67b2bc958d41ccc03230c50cbd6a7f1cf52518d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0353c36b9dffe54c5c7647665157709f85f86d52","unresolved":false,"context_lines":[{"line_number":1476,"context_line":"            keylens \u003d set(map(len, port_ids))"},{"line_number":1477,"context_line":"            if len(keylens) \u003e 1:"},{"line_number":1478,"context_line":"                LOG.warning(_LW(\"Varying keylen for port_ids. \""},{"line_number":1479,"context_line":"                                \"Results may be incorrect\"))"},{"line_number":1480,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_bd072f1b","line":1479,"updated":"2016-05-08 02:53:13.000000000","message":"as an admin what exactly does this message mean. its kind of pointless","commit_id":"67b2bc958d41ccc03230c50cbd6a7f1cf52518d8"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"82919328643633d06eeec49ffb793b96216b32ff","unresolved":false,"context_lines":[{"line_number":1476,"context_line":"            keylens \u003d set(map(len, port_ids))"},{"line_number":1477,"context_line":"            if len(keylens) \u003e 1:"},{"line_number":1478,"context_line":"                LOG.warning(_LW(\"Varying keylen for port_ids. \""},{"line_number":1479,"context_line":"                                \"Results may be incorrect\"))"},{"line_number":1480,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1481,"context_line":""},{"line_number":1482,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_d322ed00","line":1479,"in_reply_to":"dab17558_bd072f1b","updated":"2016-05-13 07:00:33.000000000","message":"As this message shouldn\u0027t appear, I\u0027ve changed it to debug level.\nIf any real harm happens, the following error message gets logged.","commit_id":"67b2bc958d41ccc03230c50cbd6a7f1cf52518d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cbb98f4a80d4879d9a274a93316369f6591bc80f","unresolved":false,"context_lines":[{"line_number":1485,"context_line":"                # This shouldn\u0027t happen as the ovs-agent passes"},{"line_number":1486,"context_line":"                # untruncated UUIDs as port_ids."},{"line_number":1487,"context_line":"                LOG.debug(\"Varying keylen for port_ids. \""},{"line_number":1488,"context_line":"                          \"The multiple ports error may happen\")"},{"line_number":1489,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_2360f9ce","line":1488,"updated":"2016-05-16 07:34:41.000000000","message":"The log message really does not make sense to me.","commit_id":"0287179a4d58c77dbf7112e7ae613c684b806a8e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"2b0e69e4d3aaa4975864afd64b1b536b95e8504a","unresolved":false,"context_lines":[{"line_number":1485,"context_line":"                # This shouldn\u0027t happen as the ovs-agent passes"},{"line_number":1486,"context_line":"                # untruncated UUIDs as port_ids."},{"line_number":1487,"context_line":"                LOG.debug(\"Varying keylen for port_ids. \""},{"line_number":1488,"context_line":"                          \"The multiple ports error may happen\")"},{"line_number":1489,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_9e9bfc65","line":1488,"in_reply_to":"dab17558_2360f9ce","updated":"2016-05-16 08:08:00.000000000","message":"\"The multiple ports error\" refers to the error message on line 1502.  Could you suggest a better wording?","commit_id":"0287179a4d58c77dbf7112e7ae613c684b806a8e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"6f1019ef5e485e6809f8e5b20ca6cea672870224","unresolved":false,"context_lines":[{"line_number":1485,"context_line":"                # This shouldn\u0027t happen as the ovs-agent passes"},{"line_number":1486,"context_line":"                # untruncated UUIDs as port_ids."},{"line_number":1487,"context_line":"                LOG.debug(\"Varying keylen for port_ids. \""},{"line_number":1488,"context_line":"                          \"The multiple ports error may happen\")"},{"line_number":1489,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1490,"context_line":""},{"line_number":1491,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_7dc66e17","line":1488,"in_reply_to":"dab17558_2360f9ce","updated":"2016-06-10 06:53:13.000000000","message":"Done","commit_id":"0287179a4d58c77dbf7112e7ae613c684b806a8e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"2b0e69e4d3aaa4975864afd64b1b536b95e8504a","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"},{"line_number":1492,"context_line":"            # The following if-block checks if the above keylen truncation"},{"line_number":1493,"context_line":"            # is causing any harm."},{"line_number":1494,"context_line":"            if len(port_db_dict) !\u003d len(ports_db):"},{"line_number":1495,"context_line":"                port_id_dups \u003d set()"},{"line_number":1496,"context_line":"                for p in ports_db:"},{"line_number":1497,"context_line":"                    portkey \u003d p.id[:keylen]"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_7e90d843","line":1494,"updated":"2016-05-16 08:08:00.000000000","message":"This comparison should offset missing ports (line 1509).","commit_id":"0287179a4d58c77dbf7112e7ae613c684b806a8e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"6f1019ef5e485e6809f8e5b20ca6cea672870224","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"},{"line_number":1492,"context_line":"            # The following if-block checks if the above keylen truncation"},{"line_number":1493,"context_line":"            # is causing any harm."},{"line_number":1494,"context_line":"            if len(port_db_dict) !\u003d len(ports_db):"},{"line_number":1495,"context_line":"                port_id_dups \u003d set()"},{"line_number":1496,"context_line":"                for p in ports_db:"},{"line_number":1497,"context_line":"                    portkey \u003d p.id[:keylen]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_4a55a6c4","line":1494,"in_reply_to":"dab17558_7e90d843","updated":"2016-06-10 06:53:13.000000000","message":"Invalid concern.","commit_id":"0287179a4d58c77dbf7112e7ae613c684b806a8e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4ab19f7a7cc5f2036a72cd90c394f1c7481896f3","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"            plugin_context, [port_id], host\u003dhost,"},{"line_number":1517,"context_line":"            cached_networks\u003dcached_networks)"},{"line_number":1518,"context_line":""},{"line_number":1519,"context_line":"        return pc[0]"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"    def get_bound_ports_context(self, plugin_context, port_ids, host\u003dNone,"},{"line_number":1522,"context_line":"                                cached_networks\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_374696bf","line":1519,"updated":"2016-06-23 07:16:57.000000000","message":"pc can be empty here.","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"90bfaaef216acb74eef18aec1d7b7689a943c9a3","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"            plugin_context, [port_id], host\u003dhost,"},{"line_number":1517,"context_line":"            cached_networks\u003dcached_networks)"},{"line_number":1518,"context_line":""},{"line_number":1519,"context_line":"        return pc[0]"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"    def get_bound_ports_context(self, plugin_context, port_ids, host\u003dNone,"},{"line_number":1522,"context_line":"                                cached_networks\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_a36ebec6","line":1519,"in_reply_to":"3aaa91ec_374696bf","updated":"2016-06-29 08:29:33.000000000","message":"get_bound_ports_context should return [None] at least.\n\nDo I miss something?","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6fc59883434a408ddc4cc8f920677c027947911f","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"            plugin_context, [port_id], host\u003dhost,"},{"line_number":1517,"context_line":"            cached_networks\u003dcached_networks)"},{"line_number":1518,"context_line":""},{"line_number":1519,"context_line":"        return pc[0]"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"    def get_bound_ports_context(self, plugin_context, port_ids, host\u003dNone,"},{"line_number":1522,"context_line":"                                cached_networks\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_ceca114f","line":1519,"in_reply_to":"3aaa91ec_a36ebec6","updated":"2016-06-29 08:52:11.000000000","message":"i don\u0027t remember what i had in mind when making this comment. maybe i misread the code.","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4ab19f7a7cc5f2036a72cd90c394f1c7481896f3","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"                # passes untruncated UUIDs as port_ids."},{"line_number":1540,"context_line":"                LOG.debug(\"The internal data structure uses truncated \""},{"line_number":1541,"context_line":"                          \"port_id due to varying keylen. \\\"Multiple \""},{"line_number":1542,"context_line":"                          \"ports have ...\\\" error messages can follow\")"},{"line_number":1543,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1544,"context_line":""},{"line_number":1545,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_f7f40e88","line":1542,"updated":"2016-06-23 07:16:57.000000000","message":"can this happen?","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"06a2b05b65ce244e913d94959ba4fe324990634f","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"                # passes untruncated UUIDs as port_ids."},{"line_number":1540,"context_line":"                LOG.debug(\"The internal data structure uses truncated \""},{"line_number":1541,"context_line":"                          \"port_id due to varying keylen. \\\"Multiple \""},{"line_number":1542,"context_line":"                          \"ports have ...\\\" error messages can follow\")"},{"line_number":1543,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1544,"context_line":""},{"line_number":1545,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_276d44cc","line":1542,"in_reply_to":"3aaa91ec_8e35a947","updated":"2016-08-12 03:16:26.000000000","message":"Done. Some of [:keylen] are still necessary for linuxbridge, though.","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6fc59883434a408ddc4cc8f920677c027947911f","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"                # passes untruncated UUIDs as port_ids."},{"line_number":1540,"context_line":"                LOG.debug(\"The internal data structure uses truncated \""},{"line_number":1541,"context_line":"                          \"port_id due to varying keylen. \\\"Multiple \""},{"line_number":1542,"context_line":"                          \"ports have ...\\\" error messages can follow\")"},{"line_number":1543,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1544,"context_line":""},{"line_number":1545,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_8e35a947","line":1542,"in_reply_to":"3aaa91ec_e3956640","updated":"2016-06-29 08:52:11.000000000","message":"in that case how about just bailing out on varying keylen\nand simplify the code?\n\"[:keylen]\" things are not necessary that way, right?","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"90bfaaef216acb74eef18aec1d7b7689a943c9a3","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"                # passes untruncated UUIDs as port_ids."},{"line_number":1540,"context_line":"                LOG.debug(\"The internal data structure uses truncated \""},{"line_number":1541,"context_line":"                          \"port_id due to varying keylen. \\\"Multiple \""},{"line_number":1542,"context_line":"                          \"ports have ...\\\" error messages can follow\")"},{"line_number":1543,"context_line":"            keylen \u003d min(keylens)"},{"line_number":1544,"context_line":""},{"line_number":1545,"context_line":"            port_db_dict \u003d dict([(p.id[:keylen], p) for p in ports_db])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_e3956640","line":1542,"in_reply_to":"3aaa91ec_f7f40e88","updated":"2016-06-29 08:29:33.000000000","message":"It should not, as written in 5 lines above.\nI think this debug verbosity is worthwhile in future.","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4ab19f7a7cc5f2036a72cd90c394f1c7481896f3","unresolved":false,"context_lines":[{"line_number":1594,"context_line":"                    if not binding:"},{"line_number":1595,"context_line":"                        LOG.info(_LI(\"Binding info for port %s was not found, \""},{"line_number":1596,"context_line":"                                     \"it might have been deleted already.\"),"},{"line_number":1597,"context_line":"                                 port_id)"},{"line_number":1598,"context_line":"                        port_ctxt_list.append(None)"},{"line_number":1599,"context_line":"                        continue"},{"line_number":1600,"context_line":"                    levels \u003d db.get_binding_levels(session, port_db.id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_17fa7a75","line":1597,"updated":"2016-06-23 07:16:57.000000000","message":"can this still happen?","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"90bfaaef216acb74eef18aec1d7b7689a943c9a3","unresolved":false,"context_lines":[{"line_number":1594,"context_line":"                    if not binding:"},{"line_number":1595,"context_line":"                        LOG.info(_LI(\"Binding info for port %s was not found, \""},{"line_number":1596,"context_line":"                                     \"it might have been deleted already.\"),"},{"line_number":1597,"context_line":"                                 port_id)"},{"line_number":1598,"context_line":"                        port_ctxt_list.append(None)"},{"line_number":1599,"context_line":"                        continue"},{"line_number":1600,"context_line":"                    levels \u003d db.get_binding_levels(session, port_db.id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_638fb623","line":1597,"in_reply_to":"3aaa91ec_17fa7a75","updated":"2016-06-29 08:29:33.000000000","message":"maybe not.  should I remove this?","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"06a2b05b65ce244e913d94959ba4fe324990634f","unresolved":false,"context_lines":[{"line_number":1594,"context_line":"                    if not binding:"},{"line_number":1595,"context_line":"                        LOG.info(_LI(\"Binding info for port %s was not found, \""},{"line_number":1596,"context_line":"                                     \"it might have been deleted already.\"),"},{"line_number":1597,"context_line":"                                 port_id)"},{"line_number":1598,"context_line":"                        port_ctxt_list.append(None)"},{"line_number":1599,"context_line":"                        continue"},{"line_number":1600,"context_line":"                    levels \u003d db.get_binding_levels(session, port_db.id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_87b3504c","line":1597,"in_reply_to":"3aaa91ec_2e63d542","updated":"2016-08-12 03:16:26.000000000","message":"Done. I couldn\u0027t reproduce binding \u003d\u003d None case with or without eagerloads.","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6fc59883434a408ddc4cc8f920677c027947911f","unresolved":false,"context_lines":[{"line_number":1594,"context_line":"                    if not binding:"},{"line_number":1595,"context_line":"                        LOG.info(_LI(\"Binding info for port %s was not found, \""},{"line_number":1596,"context_line":"                                     \"it might have been deleted already.\"),"},{"line_number":1597,"context_line":"                                 port_id)"},{"line_number":1598,"context_line":"                        port_ctxt_list.append(None)"},{"line_number":1599,"context_line":"                        continue"},{"line_number":1600,"context_line":"                    levels \u003d db.get_binding_levels(session, port_db.id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_2e63d542","line":1597,"in_reply_to":"3aaa91ec_638fb623","updated":"2016-06-29 08:52:11.000000000","message":"i prefer to remove unnecessary code.\nmy only concern on this patch is code complexity.","commit_id":"858251e2f790582e4d03bef93337657a37b833a2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5a514680de43365648a838bbc3e188f3a4f4b34c","unresolved":false,"context_lines":[{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"        session \u003d plugin_context.session"},{"line_number":1673,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":1674,"context_line":"            filter_stmt \u003d []"},{"line_number":1675,"context_line":"            for port_id in port_ids:"},{"line_number":1676,"context_line":"                filter_stmt.append(models_v2.Port.id.startswith(port_id))"},{"line_number":1677,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_fbe8b97e","line":1674,"updated":"2016-10-30 08:18:25.000000000","message":"why does line 1674 - 1676 need to be in the db transaction?","commit_id":"95542a01e0972d1fd162848b3d1c5724ec27b9ce"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"663638ebf5baa5a7e64e0503cc1c4e8e8c96d8a6","unresolved":false,"context_lines":[{"line_number":1671,"context_line":""},{"line_number":1672,"context_line":"        session \u003d plugin_context.session"},{"line_number":1673,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":1674,"context_line":"            filter_stmt \u003d []"},{"line_number":1675,"context_line":"            for port_id in port_ids:"},{"line_number":1676,"context_line":"                filter_stmt.append(models_v2.Port.id.startswith(port_id))"},{"line_number":1677,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_fd824d93","line":1674,"in_reply_to":"ba5da102_fbe8b97e","updated":"2016-11-01 04:40:19.000000000","message":"Done","commit_id":"95542a01e0972d1fd162848b3d1c5724ec27b9ce"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5a514680de43365648a838bbc3e188f3a4f4b34c","unresolved":false,"context_lines":[{"line_number":1706,"context_line":"                if port_id not in port_db_dict:"},{"line_number":1707,"context_line":"                    LOG.info(_LI(\"No ports have port_id starting with %s\"),"},{"line_number":1708,"context_line":"                             port_id)"},{"line_number":1709,"context_line":"                    port_ctxt_list.append(None)"},{"line_number":1710,"context_line":"                    continue"},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":"                port_db \u003d port_db_dict[port_id]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_3b031144","line":1709,"updated":"2016-10-30 08:18:25.000000000","message":"why None?","commit_id":"95542a01e0972d1fd162848b3d1c5724ec27b9ce"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"663638ebf5baa5a7e64e0503cc1c4e8e8c96d8a6","unresolved":false,"context_lines":[{"line_number":1706,"context_line":"                if port_id not in port_db_dict:"},{"line_number":1707,"context_line":"                    LOG.info(_LI(\"No ports have port_id starting with %s\"),"},{"line_number":1708,"context_line":"                             port_id)"},{"line_number":1709,"context_line":"                    port_ctxt_list.append(None)"},{"line_number":1710,"context_line":"                    continue"},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":"                port_db \u003d port_db_dict[port_id]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_68e11dd0","line":1709,"in_reply_to":"ba5da102_3b031144","updated":"2016-11-01 04:40:19.000000000","message":"It is merely a placeholder. It can be false, 0, or whatever you like.\n\nAdded some comments so that my intention is clear.","commit_id":"95542a01e0972d1fd162848b3d1c5724ec27b9ce"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5a514680de43365648a838bbc3e188f3a4f4b34c","unresolved":false,"context_lines":[{"line_number":1726,"context_line":"                        LOG.error("},{"line_number":1727,"context_line":"                            _LE(\"Binding info for DVR port %s not found\"),"},{"line_number":1728,"context_line":"                            port_id)"},{"line_number":1729,"context_line":"                        port_ctxt_list.append(None)"},{"line_number":1730,"context_line":"                        continue"},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"                    levels \u003d db.get_binding_levels(session, port_db.id, host)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_1bec8d8e","line":1729,"updated":"2016-10-30 08:18:25.000000000","message":"why None?","commit_id":"95542a01e0972d1fd162848b3d1c5724ec27b9ce"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"663638ebf5baa5a7e64e0503cc1c4e8e8c96d8a6","unresolved":false,"context_lines":[{"line_number":1726,"context_line":"                        LOG.error("},{"line_number":1727,"context_line":"                            _LE(\"Binding info for DVR port %s not found\"),"},{"line_number":1728,"context_line":"                            port_id)"},{"line_number":1729,"context_line":"                        port_ctxt_list.append(None)"},{"line_number":1730,"context_line":"                        continue"},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"                    levels \u003d db.get_binding_levels(session, port_db.id, host)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_88e831b6","line":1729,"in_reply_to":"ba5da102_1bec8d8e","updated":"2016-11-01 04:40:19.000000000","message":"ditto.","commit_id":"95542a01e0972d1fd162848b3d1c5724ec27b9ce"}],"neutron/plugins/ml2/rpc.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"efe5e7a233f1e25cb5709bd83719502f223729ef","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    agent_id, device, host,"},{"line_number":188,"context_line":"                    cached_networks))"},{"line_number":189,"context_line":"            except Exception as e:"},{"line_number":190,"context_line":"                LOG.exception(e)"},{"line_number":191,"context_line":"                LOG.debug(port_context)"},{"line_number":192,"context_line":"                LOG.debug(port_context.current)"},{"line_number":193,"context_line":"                LOG.error(_LE(\"Failed to get details for device %s\"),"},{"line_number":194,"context_line":"                          device)"},{"line_number":195,"context_line":"                failed_devices.append(device)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_5ec9f0ab","line":192,"range":{"start_line":190,"start_character":16,"end_line":192,"end_character":47},"updated":"2016-02-25 05:16:53.000000000","message":"Did you forget to remove debug\u0027s rubbish?","commit_id":"ec7a0baa1cae8dceadae329b96af096664bdf61e"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"45b92d754428b734bac2a635be04136020fd8aed","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    agent_id, device, host,"},{"line_number":188,"context_line":"                    cached_networks))"},{"line_number":189,"context_line":"            except Exception as e:"},{"line_number":190,"context_line":"                LOG.exception(e)"},{"line_number":191,"context_line":"                LOG.debug(port_context)"},{"line_number":192,"context_line":"                LOG.debug(port_context.current)"},{"line_number":193,"context_line":"                LOG.error(_LE(\"Failed to get details for device %s\"),"},{"line_number":194,"context_line":"                          device)"},{"line_number":195,"context_line":"                failed_devices.append(device)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_5e8290c9","line":192,"range":{"start_line":190,"start_character":16,"end_line":192,"end_character":47},"in_reply_to":"bae84128_5ec9f0ab","updated":"2016-02-25 05:49:37.000000000","message":"Good catch.  Will fix.","commit_id":"ec7a0baa1cae8dceadae329b96af096664bdf61e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cfae80e45ab007310a984657131ce30cffdb306d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":"import oslo_messaging"},{"line_number":18,"context_line":"from sqlalchemy.orm import exc"},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron._i18n import _LE, _LW"},{"line_number":22,"context_line":"from neutron.api.rpc.handlers import dvr_rpc"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_1a2f1af7","line":19,"updated":"2016-03-09 08:57:41.000000000","message":"this should be in its own section above","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"f54362acba4ff1744027469acb4299c5fac5abae","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":"import oslo_messaging"},{"line_number":18,"context_line":"from sqlalchemy.orm import exc"},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron._i18n import _LE, _LW"},{"line_number":22,"context_line":"from neutron.api.rpc.handlers import dvr_rpc"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_954a2982","line":19,"in_reply_to":"5aef4532_1a2f1af7","updated":"2016-04-18 06:13:13.000000000","message":"removed","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cfae80e45ab007310a984657131ce30cffdb306d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                            agent_id, device, host,"},{"line_number":84,"context_line":"                                            cached_networks)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_device_details_subr(self, rpc_context, plugin,"},{"line_number":87,"context_line":"                                port_context, agent_id, device, host,"},{"line_number":88,"context_line":"                                cached_networks):"},{"line_number":89,"context_line":"        if not port_context:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_5a1082a8","line":86,"updated":"2016-03-09 08:57:41.000000000","message":"this is an internal method so please use a _ as a prefix","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"f54362acba4ff1744027469acb4299c5fac5abae","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                            agent_id, device, host,"},{"line_number":84,"context_line":"                                            cached_networks)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def get_device_details_subr(self, rpc_context, plugin,"},{"line_number":87,"context_line":"                                port_context, agent_id, device, host,"},{"line_number":88,"context_line":"                                cached_networks):"},{"line_number":89,"context_line":"        if not port_context:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_754f8d92","line":86,"in_reply_to":"5aef4532_5a1082a8","updated":"2016-04-18 06:13:13.000000000","message":"Done","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cfae80e45ab007310a984657131ce30cffdb306d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                failed_devices.append(device)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        LOG.debug(\"get_devices_details_list_and_failed_devices \""},{"line_number":195,"context_line":"                  \"returning %s in %f seconds\" % ("},{"line_number":196,"context_line":"                      details, time.time() - time_started))"},{"line_number":197,"context_line":"        return {\u0027devices\u0027: details,"},{"line_number":198,"context_line":"                \u0027failed_devices\u0027: failed_devices}"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_da45b2b3","line":195,"updated":"2016-03-09 08:57:41.000000000","message":"please use a , instead of the %","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"f54362acba4ff1744027469acb4299c5fac5abae","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                failed_devices.append(device)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        LOG.debug(\"get_devices_details_list_and_failed_devices \""},{"line_number":195,"context_line":"                  \"returning %s in %f seconds\" % ("},{"line_number":196,"context_line":"                      details, time.time() - time_started))"},{"line_number":197,"context_line":"        return {\u0027devices\u0027: details,"},{"line_number":198,"context_line":"                \u0027failed_devices\u0027: failed_devices}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_75366d04","line":195,"in_reply_to":"5aef4532_da45b2b3","updated":"2016-04-18 06:13:13.000000000","message":"removed","commit_id":"e9408a8f235a9e6b68a2f785a5df9aa6f58a7652"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0353c36b9dffe54c5c7647665157709f85f86d52","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                            agent_id, device, host,"},{"line_number":83,"context_line":"                                            cached_networks)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _get_device_details_subr(self, rpc_context, plugin,"},{"line_number":86,"context_line":"                                port_context, agent_id, device, host,"},{"line_number":87,"context_line":"                                cached_networks):"},{"line_number":88,"context_line":"        if not port_context:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_9d022b0a","line":85,"updated":"2016-05-08 02:53:13.000000000","message":"please fix alignment","commit_id":"67b2bc958d41ccc03230c50cbd6a7f1cf52518d8"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"82919328643633d06eeec49ffb793b96216b32ff","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                            agent_id, device, host,"},{"line_number":83,"context_line":"                                            cached_networks)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _get_device_details_subr(self, rpc_context, plugin,"},{"line_number":86,"context_line":"                                port_context, agent_id, device, host,"},{"line_number":87,"context_line":"                                cached_networks):"},{"line_number":88,"context_line":"        if not port_context:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_3377f903","line":85,"in_reply_to":"dab17558_9d022b0a","updated":"2016-05-13 07:00:33.000000000","message":"Done","commit_id":"67b2bc958d41ccc03230c50cbd6a7f1cf52518d8"}]}
