)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"52b6a7a6c3b6af2cdbd4f896dd9c76b516e2fcf6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Chassis can be registered."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch add a parameter for OVSDB Connection to alow it to"},{"line_number":16,"context_line":"register certain tables, instead of all tables."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I79df60a08a7a6c555b07a9b566d7c09b97e2463c"},{"line_number":19,"context_line":"Closes-Bug: #1568718"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a1b2928_e1349fdf","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":46},"updated":"2016-04-11 12:11:59.000000000","message":"what is the negative impact of registering all tables?","commit_id":"381e750342d55b75906954bebad934e55eabb10c"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"35d108fe41c08c6cd45bb1deb905da743e336ae0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Chassis can be registered."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch add a parameter for OVSDB Connection to alow it to"},{"line_number":16,"context_line":"register certain tables, instead of all tables."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I79df60a08a7a6c555b07a9b566d7c09b97e2463c"},{"line_number":19,"context_line":"Closes-Bug: #1568718"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a18252c_b276893c","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":46},"in_reply_to":"5a18252c_9481bd92","updated":"2016-04-12 07:05:42.000000000","message":"Hi, Oleg, I think I got the wrong point to explain this patch, the second negative impact shouldn\u0027t look like that.\n\nMy previous environment is a all-in-one node, and have no instances on it, just a DHCP interface and a router interface from neutron side. So that means there are few data in OVSDB, than cause the result shown above, just about 0.05 sec improve. But what about an environment in large-scale, I can\u0027t tell but I suppose it should have more improvement then 0.05 sec.\n\nI\u0027m still reading ovs code, as I can see now, more disinterested tables to register means more useless rows to watch, while less tables get registered will help Idl to take care less tables.\n\nWhen Idl init, the initial fetch of the entire contents of the remote database will happen, and that will cause a Row object will be created for each row in each table, and a notify event will be sent for this Row object. So when disinterested tables are registered, lots of mem and event RPC will be cost.\n\nAnd after Idl init, when a row in db is created/updated/deleted, an event for that will also be sent. But client side, they are useless if they are related to a table we don\u0027t care, that will also waste event RPC.\n\nHope this time, I do tell something worth to explain this patch.","commit_id":"381e750342d55b75906954bebad934e55eabb10c"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8f8a9a7d4c6130bf1ea5ba2f963eb149e345078b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Chassis can be registered."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch add a parameter for OVSDB Connection to alow it to"},{"line_number":16,"context_line":"register certain tables, instead of all tables."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I79df60a08a7a6c555b07a9b566d7c09b97e2463c"},{"line_number":19,"context_line":"Closes-Bug: #1568718"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a18252c_f4459117","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":46},"in_reply_to":"5a18252c_eaf76bf3","updated":"2016-04-12 05:10:16.000000000","message":"So is the only negative impact - additional 0,05 sec during init()? I don\u0027t think we need such optimizations even if it\u0027s not much code - it still introduces complexity and may cause questions. I won\u0027t block but honestly I don\u0027t understand the motivation.","commit_id":"381e750342d55b75906954bebad934e55eabb10c"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"2c58e300931c0102b1a6c5b64e062bde91f8ebb4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Chassis can be registered."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch add a parameter for OVSDB Connection to alow it to"},{"line_number":16,"context_line":"register certain tables, instead of all tables."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I79df60a08a7a6c555b07a9b566d7c09b97e2463c"},{"line_number":19,"context_line":"Closes-Bug: #1568718"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a18252c_9481bd92","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":46},"in_reply_to":"5a18252c_f4459117","updated":"2016-04-12 05:53:12.000000000","message":"Yes, the time I list is connection object init() time.\n\nThe idea is from networking-ovn, I think it would helpful, maybe I missed something.","commit_id":"381e750342d55b75906954bebad934e55eabb10c"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"bfbf16fd4813fc855b12322573950ea6fad80760","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Chassis can be registered."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch add a parameter for OVSDB Connection to alow it to"},{"line_number":16,"context_line":"register certain tables, instead of all tables."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I79df60a08a7a6c555b07a9b566d7c09b97e2463c"},{"line_number":19,"context_line":"Closes-Bug: #1568718"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a18252c_eaf76bf3","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":46},"in_reply_to":"7a1b2928_e1349fdf","updated":"2016-04-12 02:19:50.000000000","message":"Firstly, as I can see, we don\u0027t need all tables in scenario, if so, I think it makes sense not to register them all.\n\nSecondly, any impact on processing speed?\nYes, it exists. I did a test on an environment with networking-ovn enabled. And there are four connections will be created. Three of them are using ovsdb.native.connection.Connection and the other one is using OvnConnection which inherits from connection.Connection. I didn\u0027t test too much, but I think we can see that register less tables can do improve processing speed.\n\n  register all tables for OVN_Southbound DB\n  Connection    OvnConnection\n  0.05512         0.06179\n  0.05549\n  0.06327\n  0.05386         0.06559\n  0.05904\n  0.05798\n  0.05732         0.27896\n  0.07038\n  0.07516\n\n  register only 2 tables for OVN_Southbound DB\n  Connection    OvnConnection\n  0.01100         0.01118\n  0.01148\n  0.01111\n  0.01062         0.01401\n  0.01305\n  0.01127\n  0.00985         0.01591\n  0.01075\n  0.01103\n\nAbout tables in OVN_Southbound DB, currently, there are 7 tables. And for patch in networking-ovn project for routed-networks, there is only 1 table in OVN_Southbound DB will be used, so it may a little quick than result shown above.\n\nYes, to most people, the improvement is trivial, but this patch also doesn\u0027t introduce much code. So I think it\u0027s still acceptable.\n\nAny idea ? :)","commit_id":"381e750342d55b75906954bebad934e55eabb10c"}],"neutron/agent/ovsdb/native/connection.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f5b70acc9ba4a33e1140b90e86deef1ea96bd979","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.lock \u003d threading.Lock()"},{"line_number":60,"context_line":"        self.schema_name \u003d schema_name"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def start(self, tables\u003dNone):"},{"line_number":63,"context_line":"        with self.lock:"},{"line_number":64,"context_line":"            if self.idl is not None:"},{"line_number":65,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a1b2928_cc9f28b3","line":62,"updated":"2016-04-11 08:17:00.000000000","message":"can you please add a docstring here explaining the parameter tables. This should be a list.","commit_id":"fb5cd5a7bd21f0d23a107420a8057b7728b08c9e"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"ef72061e36bb9289fb38316b6147cbea9d2f8ad1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.lock \u003d threading.Lock()"},{"line_number":60,"context_line":"        self.schema_name \u003d schema_name"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def start(self, tables\u003dNone):"},{"line_number":63,"context_line":"        with self.lock:"},{"line_number":64,"context_line":"            if self.idl is not None:"},{"line_number":65,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a1b2928_c7ba61c0","line":62,"in_reply_to":"7a1b2928_cc9f28b3","updated":"2016-04-11 08:50:02.000000000","message":"I added a docstring for explaining the new added parameter, and tables\u003d[] will fail for hacking check \"N329:Method\u0027s default argument shouldn\u0027t be mutable!\". So I think rename the parameter to \"table_name_list\" should be better.","commit_id":"fb5cd5a7bd21f0d23a107420a8057b7728b08c9e"}],"neutron/tests/unit/agent/ovsdb/native/test_connection.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c836ad9613f8f4e0a8344e3139275fa05ed83e60","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    from neutron.agent.ovsdb.native import idlutils"},{"line_number":21,"context_line":"except ImportError:"},{"line_number":22,"context_line":"    raise unittest2.SkipTest("},{"line_number":23,"context_line":"        \"Skip test since ovs requirement for PY3 doesn\u0027t support yet.\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from neutron.tests import base"},{"line_number":26,"context_line":"from neutron.tests.common import helpers"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_bb29f08b","line":23,"range":{"start_line":23,"start_character":9,"end_line":23,"end_character":68},"updated":"2016-04-18 17:47:19.000000000","message":"which ovs requirement?","commit_id":"6af12084b073bea64cab1cf77cb18521765e3474"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"32fa5e9a01b25b64a4ebd84edbe745d9952d3f82","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    from neutron.agent.ovsdb.native import idlutils"},{"line_number":21,"context_line":"except ImportError:"},{"line_number":22,"context_line":"    raise unittest2.SkipTest("},{"line_number":23,"context_line":"        \"Skip test since ovs requirement for PY3 doesn\u0027t support yet.\")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from neutron.tests import base"},{"line_number":26,"context_line":"from neutron.tests.common import helpers"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_f1c53a8e","line":23,"range":{"start_line":23,"start_character":9,"end_line":23,"end_character":68},"in_reply_to":"1a122d0e_bb29f08b","updated":"2016-04-19 04:17:30.000000000","message":"I think it is global-requirement[1].\n\nAnd we also couldn\u0027t update neutron local requirements.txt, I referred the changing in [1] and submitted that in PS5, and got \"Incompatible requirement found\" error.\n\n[1] https://review.openstack.org/#/c/291775/","commit_id":"6af12084b073bea64cab1cf77cb18521765e3474"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c836ad9613f8f4e0a8344e3139275fa05ed83e60","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.tests import base"},{"line_number":26,"context_line":"from neutron.tests.common import helpers"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from ovs.db import idl"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestOVSNativeConnection(base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_4021cdb3","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":22},"updated":"2016-04-18 17:47:19.000000000","message":"this should go after #16","commit_id":"6af12084b073bea64cab1cf77cb18521765e3474"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"32fa5e9a01b25b64a4ebd84edbe745d9952d3f82","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.tests import base"},{"line_number":26,"context_line":"from neutron.tests.common import helpers"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from ovs.db import idl"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestOVSNativeConnection(base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_51cb4e1e","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":22},"in_reply_to":"1a122d0e_4021cdb3","updated":"2016-04-19 04:17:30.000000000","message":"Done","commit_id":"6af12084b073bea64cab1cf77cb18521765e3474"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0055f2cae161ca7d870458b72109305be6a5e723","unresolved":false,"context_lines":[{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    from ovs.db import idl"},{"line_number":20,"context_line":"except ImportError:"},{"line_number":21,"context_line":"    raise unittest2.SkipTest("},{"line_number":22,"context_line":"        \"Skip test since ovs requirement for PY3 doesn\u0027t support yet.\")"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.agent.ovsdb.native import connection"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_50abad1e","line":21,"updated":"2016-05-01 01:14:32.000000000","message":"if this is skipping at import, what is the point of the requires_py2 helpers?","commit_id":"667ea2ac7c1ef8ce6f52072639a13a833533f3ea"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"b5cd57e81e55607542ca2261e6529938344a7cbd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"try:"},{"line_number":19,"context_line":"    from ovs.db import idl"},{"line_number":20,"context_line":"except ImportError:"},{"line_number":21,"context_line":"    raise unittest2.SkipTest("},{"line_number":22,"context_line":"        \"Skip test since ovs requirement for PY3 doesn\u0027t support yet.\")"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.agent.ovsdb.native import connection"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_0225225b","line":21,"in_reply_to":"1a122d0e_50abad1e","updated":"2016-05-04 03:01:32.000000000","message":"Nice shot! Hard to believe I didn\u0027t notice that.\n\nShall we prefer to clean these code when PY3 get supported in OVS?","commit_id":"667ea2ac7c1ef8ce6f52072639a13a833533f3ea"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0055f2cae161ca7d870458b72109305be6a5e723","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class TestOVSNativeConnection(base.BaseTestCase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(TestOVSNativeConnection, self).setUp()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @mock.patch.object(connection, \u0027TransactionQueue\u0027)"},{"line_number":36,"context_line":"    @mock.patch.object(idlutils, \u0027get_schema_helper\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_b0a84122","line":33,"updated":"2016-05-01 01:14:32.000000000","message":"This method is pointless.","commit_id":"667ea2ac7c1ef8ce6f52072639a13a833533f3ea"}]}
