)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6ac5f2c68dfc486a8244e2d73118c5a2571475bb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa80f949_188326ce","line":15,"updated":"2015-11-04 04:40:20.000000000","message":"some auto rescheduling configuration is assumed?\n\nhow does it apply to l2 agent?","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"276e697cf2016aeea2cf77a4eeabd9056624bf19","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da85f559_bc93f1f9","line":15,"in_reply_to":"da85f559_81d32638","updated":"2015-11-09 09:03:03.000000000","message":"why doesn\u0027t ovs-agent keep retrying in that case?","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"682f0cdb7da4f3ec4e46ab5b72efd9d6dc424656","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da85f559_81d32638","line":15,"in_reply_to":"da85f559_a12bca81","updated":"2015-11-09 08:25:50.000000000","message":"Right, a sort of. One of the typical cases for ovs agent is service ports (dhcp/l3) that are explicitly created by RPC code with predefined binding, but it usually results in binding failed when colocated ovs agent is dead.\nWhen it revives it would not attempt to rebind the port because nothing really happened: it has already seen the port while being \"dead\", but could not wire it. \nhere I add a condition to refresh ovs agent port configuration on revival.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ed2786c0a6f4fcc9d6fc811225299a0fc86ae1eb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa80f949_e209c496","line":15,"in_reply_to":"fa80f949_188326ce","updated":"2015-11-04 10:23:50.000000000","message":"For L2 agent this patch is addressing the case when port gets \u0027binding failed\u0027 state (mostly for service ports like dhcp and router interfaces), because agent was dead from neutron-server\u0027s point of view.\n\nRight now recovering such ports would require restart of ovs agent.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"927a99869e5f4a50aad5b39222cc54f8e1ca8571","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa80f949_78ebee78","line":15,"in_reply_to":"fa80f949_58e5cad9","updated":"2015-11-06 08:14:40.000000000","message":"can you explan why regular sync will not happen?\n\nwhen report state is failing, i expect\nupdate_device_list etc is not working either and\nregular sync will work.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"5834ff69dd0c8086d4fd50ff4ab2c0f22315ea0a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa80f949_ae658cb5","line":15,"in_reply_to":"fa80f949_78ebee78","updated":"2015-11-06 08:50:32.000000000","message":"First of all, agents used rpc cast and not call, which means that they just could not detect certain connectivity problems.\nSecondly, regular sync just doesn\u0027t detect any changes in configuration: ports have been processed and there are nothing to do, e.g. full sync is not triggered.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f7f42767eeccaeb2a839fd1b35ad3bb6ae532b51","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da85f559_a12bca81","line":15,"in_reply_to":"fa80f949_ae658cb5","updated":"2015-11-09 08:15:34.000000000","message":"well, it uses calls for update_device_list etc.\n\nyour concern is a loss of server-\u003eagent notifications?","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e2d3dca91a41cdf492b8f3c4b14353c2fe3b1a15","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa80f949_fd67d0b4","line":15,"in_reply_to":"fa80f949_e209c496","updated":"2015-11-06 07:31:01.000000000","message":"why they can\u0027t be recovered by the existing \"sync\" mechanism?","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"0ed0c81cbdf79ed1fe8df3d40ef48cbafc4ba3c8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa80f949_58e5cad9","line":15,"in_reply_to":"fa80f949_fd67d0b4","updated":"2015-11-06 08:10:32.000000000","message":"regular sync will not happen in case that is covered by \u0027agent-revived\u0027.\nSo the event of loosing/regaining rpc connectivity will not trigger such sync.\nUsually binding-failed can be recovered by restarting ovs-agent, but that\u0027s something to be avoided in production clusters. That\u0027s what i\u0027m trying to cover here.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6e9223085536b037b1c1c2cf5532bfbdcd8358d5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup stale entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"da85f559_8f2fc8a0","line":15,"updated":"2015-11-09 11:12:59.000000000","message":"Following up the conversation you had with Yamamoto on PS5...the problem you see with the l2 agent is that the neutron server thinks it\u0027s dead so the binding fails, correct? There\u0027s already a patch for trying the port binding when it fails [1] , not sure it would fix this issue completely though. I\u0027d appreciate if you\u0027d add a summary of the conversation you had with Yamamoto in the bug report or in the code as a comment. It might be useful for people in future if they try to understand the reason of this change. Especially for the l2 agent, there are already other mechanism of resyncing, it\u0027s confusing, so better explain. \n\n[1] https://review.openstack.org/#/c/162260","commit_id":"a1e701a2f01bafb7916b8b0dd156a2635e692cfc"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"5a747a114b649b971b49fb2d0d15efd5660655d5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"},{"line_number":13,"context_line":"dead moving resources away. After agent become active again,"},{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1505166"},{"line_number":18,"context_line":"Change-Id: Id28248f4f75821fbacf46e2c44e40f27f59172a9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"da85f559_9b1f0ab7","line":15,"updated":"2015-11-13 15:41:23.000000000","message":"Nit: put the period back?","commit_id":"c2932579bb2a88226158467bb5de85f231f834e5"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"be21b4b5cd7625663f8a231b55b8cc3b2499d37c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Resync L3, DHCP and OVS agents upon revival"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In big and busy clusters there could be a condition when"},{"line_number":10,"context_line":"rabbitmq clustering mechanism synchronizes queues and during"},{"line_number":11,"context_line":"this period agents connected to that instance of rabbitmq"},{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba8a016a_9f9e3f06","line":9,"updated":"2015-11-16 11:01:30.000000000","message":"Please describe the fix, not the problem. Important part of the fix is that for state reports rpc.call() now will be used always.","commit_id":"faf6c122b7d92a1fa9418919f910d02a7e775157"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"6798f27de9957905750f17da1376f0a164307a45","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Resync L3, DHCP and OVS agents upon revival"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In big and busy clusters there could be a condition when"},{"line_number":10,"context_line":"rabbitmq clustering mechanism synchronizes queues and during"},{"line_number":11,"context_line":"this period agents connected to that instance of rabbitmq"},{"line_number":12,"context_line":"can\u0027t communicate with the server and server considers them"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba8a016a_9ae40a0e","line":9,"in_reply_to":"ba8a016a_9f9e3f06","updated":"2015-11-16 12:51:00.000000000","message":"Done","commit_id":"faf6c122b7d92a1fa9418919f910d02a7e775157"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"c90bf344d9b73c4d996f6875dadad7854c94245e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server."},{"line_number":16,"context_line":"The solution is to make agents aware of their state from"},{"line_number":17,"context_line":"neutron-server point of view. This is done by changin state"},{"line_number":18,"context_line":"reports from cast to call that would return agent\u0027s status."},{"line_number":19,"context_line":"When agent was dead and becomes alive, it would recieve special"},{"line_number":20,"context_line":"AGENT_REVIVED status indicating that it should refresh its"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba8a016a_d94eeec0","line":17,"updated":"2015-11-17 10:11:25.000000000","message":"changing","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8aa8421607f3f9eb0e568209e661e4525252799d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"it needs to cleanup state entries and synchronize its state"},{"line_number":15,"context_line":"with neutron-server."},{"line_number":16,"context_line":"The solution is to make agents aware of their state from"},{"line_number":17,"context_line":"neutron-server point of view. This is done by changin state"},{"line_number":18,"context_line":"reports from cast to call that would return agent\u0027s status."},{"line_number":19,"context_line":"When agent was dead and becomes alive, it would recieve special"},{"line_number":20,"context_line":"AGENT_REVIVED status indicating that it should refresh its"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba8a016a_8efa57bc","line":17,"in_reply_to":"ba8a016a_d94eeec0","updated":"2015-11-17 10:32:10.000000000","message":"Done","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"c90bf344d9b73c4d996f6875dadad7854c94245e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The solution is to make agents aware of their state from"},{"line_number":17,"context_line":"neutron-server point of view. This is done by changin state"},{"line_number":18,"context_line":"reports from cast to call that would return agent\u0027s status."},{"line_number":19,"context_line":"When agent was dead and becomes alive, it would recieve special"},{"line_number":20,"context_line":"AGENT_REVIVED status indicating that it should refresh its"},{"line_number":21,"context_line":"local data which it would not do otherwise."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba8a016a_b9cc4a36","line":19,"updated":"2015-11-17 10:11:25.000000000","message":"receive","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8aa8421607f3f9eb0e568209e661e4525252799d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The solution is to make agents aware of their state from"},{"line_number":17,"context_line":"neutron-server point of view. This is done by changin state"},{"line_number":18,"context_line":"reports from cast to call that would return agent\u0027s status."},{"line_number":19,"context_line":"When agent was dead and becomes alive, it would recieve special"},{"line_number":20,"context_line":"AGENT_REVIVED status indicating that it should refresh its"},{"line_number":21,"context_line":"local data which it would not do otherwise."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba8a016a_aef5dbcb","line":19,"in_reply_to":"ba8a016a_b9cc4a36","updated":"2015-11-17 10:32:10.000000000","message":"Done","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"}],"neutron/agent/dhcp/agent.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"65c99cddc125d1ebe229c143e147b58c82b76a2c","unresolved":false,"context_lines":[{"line_number":573,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":574,"context_line":"                LOG.info(_LI(\"Agent has just revived. Scheduling full sync\"))"},{"line_number":575,"context_line":"                self.schedule_resync(\"Agent has just revived\")"},{"line_number":576,"context_line":"            self.use_call \u003d False"},{"line_number":577,"context_line":"        except AttributeError:"},{"line_number":578,"context_line":"            # This means the server does not support report_state"},{"line_number":579,"context_line":"            LOG.warn(_LW(\"Neutron server does not support state report.\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_676c7135","line":576,"updated":"2015-10-08 17:49:16.000000000","message":"It looks like you eliminated the need for self.use_call, so you shouldn\u0027t need to set it to False here, right?  I don\u0027t see any code reading that value.","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"5297d307c3ef7d415645f78081c50c60a1388725","unresolved":false,"context_lines":[{"line_number":573,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":574,"context_line":"                LOG.info(_LI(\"Agent has just revived. Scheduling full sync\"))"},{"line_number":575,"context_line":"                self.schedule_resync(\"Agent has just revived\")"},{"line_number":576,"context_line":"            self.use_call \u003d False"},{"line_number":577,"context_line":"        except AttributeError:"},{"line_number":578,"context_line":"            # This means the server does not support report_state"},{"line_number":579,"context_line":"            LOG.warn(_LW(\"Neutron server does not support state report.\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_cba687ad","line":576,"in_reply_to":"7a2fa921_676c7135","updated":"2015-10-09 13:17:48.000000000","message":"Done","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"294bac91db90c5b826ae1a370da3ee5a5a3bfb71","unresolved":false,"context_lines":[{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just revived. Scheduling full sync\"))"},{"line_number":568,"context_line":"                self.schedule_resync(\"Agent has just revived\")"},{"line_number":569,"context_line":"        except AttributeError:"},{"line_number":570,"context_line":"            # This means the server does not support report_state"},{"line_number":571,"context_line":"            LOG.warn(_LW(\"Neutron server does not support state report.\""}],"source_content_type":"text/x-python","patch_set":11,"id":"da85f559_a99e3552","line":568,"updated":"2015-11-13 22:32:19.000000000","message":"nit: this should be in _(), also \"Agent has just been revived\" here and info message","commit_id":"c2932579bb2a88226158467bb5de85f231f834e5"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"7f5ffa9b19bdb704b4c71fe60e7c52784be9c5a9","unresolved":false,"context_lines":[{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just revived. Scheduling full sync\"))"},{"line_number":568,"context_line":"                self.schedule_resync(\"Agent has just revived\")"},{"line_number":569,"context_line":"        except AttributeError:"},{"line_number":570,"context_line":"            # This means the server does not support report_state"},{"line_number":571,"context_line":"            LOG.warn(_LW(\"Neutron server does not support state report.\""}],"source_content_type":"text/x-python","patch_set":11,"id":"da85f559_3504d37c","line":568,"in_reply_to":"da85f559_a99e3552","updated":"2015-11-14 11:58:28.000000000","message":"It actually should not be in _() because resunc reason is logged at debug level.","commit_id":"c2932579bb2a88226158467bb5de85f231f834e5"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"be21b4b5cd7625663f8a231b55b8cc3b2499d37c","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                self.cache.get_state())"},{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            admin_state \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""},{"line_number":568,"context_line":"                             \"Scheduling full sync\"))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_ca13a70c","line":565,"updated":"2015-11-16 11:01:30.000000000","message":"Do we still use default/False anywhere? Probably remove this parameter or make it default True?","commit_id":"faf6c122b7d92a1fa9418919f910d02a7e775157"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"6798f27de9957905750f17da1376f0a164307a45","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                self.cache.get_state())"},{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            admin_state \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""},{"line_number":568,"context_line":"                             \"Scheduling full sync\"))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba8a016a_d013510c","line":565,"in_reply_to":"ba8a016a_ca13a70c","updated":"2015-11-16 12:51:00.000000000","message":"Yes, other agents still use default of False as default and this patch is not updating them.","commit_id":"faf6c122b7d92a1fa9418919f910d02a7e775157"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"c90bf344d9b73c4d996f6875dadad7854c94245e","unresolved":false,"context_lines":[{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            admin_state \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""},{"line_number":568,"context_line":"                             \"Scheduling full sync\"))"},{"line_number":569,"context_line":"                self.schedule_resync(\"Agent has just been revived\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_599f5e03","line":566,"updated":"2015-11-17 10:11:25.000000000","message":"According to L571, L566-569 could be outside of try/except?","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8aa8421607f3f9eb0e568209e661e4525252799d","unresolved":false,"context_lines":[{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            admin_state \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""},{"line_number":568,"context_line":"                             \"Scheduling full sync\"))"},{"line_number":569,"context_line":"                self.schedule_resync(\"Agent has just been revived\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_0e0667ce","line":566,"in_reply_to":"ba8a016a_599f5e03","updated":"2015-11-17 10:32:10.000000000","message":"could be, but it doesn\u0027t increase the scope of try-except and is more readable IMO.","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ca2286297a06bea51455be78501db952ee7fefc9","unresolved":false,"context_lines":[{"line_number":561,"context_line":"            self.agent_state.get(\u0027configurations\u0027).update("},{"line_number":562,"context_line":"                self.cache.get_state())"},{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            admin_state \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba8a016a_4e83e804","line":564,"updated":"2015-11-17 22:25:51.000000000","message":"I think the only thing I noticed is that you called this \u0027admin_state\u0027 and most of the others \u0027agent_status\u0027, but I wouldn\u0027t fix it just somehow caught my eye.","commit_id":"1c2e399846168078799aa5d2e2a3f2676ed4438f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ec4b2ceb1934659e0a3514f01700652c66bc44ab","unresolved":false,"context_lines":[{"line_number":561,"context_line":"            self.agent_state.get(\u0027configurations\u0027).update("},{"line_number":562,"context_line":"                self.cache.get_state())"},{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            admin_state \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if admin_state \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba8a016a_664fda6b","line":564,"in_reply_to":"ba8a016a_4e83e804","updated":"2015-11-18 10:38:36.000000000","message":"indeed it worth fixing, thanks for noticing! it\u0027s hard no notice such things after multiple iterations.","commit_id":"1c2e399846168078799aa5d2e2a3f2676ed4438f"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"5c8d7ce3a775a7b83c9e740d6c12ab9be45a435a","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                self.cache.get_state())"},{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            agent_status \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if agent_status \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""},{"line_number":568,"context_line":"                             \"Scheduling full sync\"))"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_3abd28b7","line":565,"updated":"2015-11-19 10:46:29.000000000","message":"it seems you changed the behaviour here, before use_call was True for the first time, then was set to False (line 566) to use cast. Is there a reason for that?","commit_id":"3b6bd917e4b968a47a5aacb7f590143fc83816d9"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"0390f7d2dc9d2c8b9186524c30f3f75b107dd760","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                self.cache.get_state())"},{"line_number":563,"context_line":"            ctx \u003d context.get_admin_context_without_session()"},{"line_number":564,"context_line":"            agent_status \u003d self.state_rpc.report_state("},{"line_number":565,"context_line":"                ctx, self.agent_state, True)"},{"line_number":566,"context_line":"            if agent_status \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":567,"context_line":"                LOG.info(_LI(\"Agent has just been revived. \""},{"line_number":568,"context_line":"                             \"Scheduling full sync\"))"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_7837394d","line":565,"in_reply_to":"ba8a016a_3abd28b7","updated":"2015-11-19 11:07:14.000000000","message":"after chatting on IRC with Eugene and Kevin it seems that switching from cast to call should not impact the performance since the client uses a different greenthread to report the state and for the server it just adds a serialization","commit_id":"3b6bd917e4b968a47a5aacb7f590143fc83816d9"}],"neutron/agent/l3/agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"294bac91db90c5b826ae1a370da3ee5a5a3bfb71","unresolved":false,"context_lines":[{"line_number":660,"context_line":"                                                       self.agent_state,"},{"line_number":661,"context_line":"                                                       True)"},{"line_number":662,"context_line":"            if agent_status \u003d\u003d l3_constants.AGENT_REVIVED:"},{"line_number":663,"context_line":"                LOG.info(_LI(\u0027Agent has just revived. Do a full sync.\u0027))"},{"line_number":664,"context_line":"                self.fullsync \u003d True"},{"line_number":665,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":666,"context_line":"        except AttributeError:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da85f559_2915659a","line":663,"updated":"2015-11-13 22:32:19.000000000","message":"nit: s/just revived/just been revived/\ns/Do/Doing/","commit_id":"c2932579bb2a88226158467bb5de85f231f834e5"}],"neutron/db/agents_db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"727a91a6bb70d3568bb60edd543978c38d48b9da","unresolved":false,"context_lines":[{"line_number":310,"context_line":"            res[\u0027load\u0027] \u003d self._get_agent_load(agent_state)"},{"line_number":311,"context_line":"            current_time \u003d timeutils.utcnow()"},{"line_number":312,"context_line":"            try:"},{"line_number":313,"context_line":"                agent_db \u003d self._get_agent_by_type_and_host("},{"line_number":314,"context_line":"                    context, agent_state[\u0027agent_type\u0027], agent_state[\u0027host\u0027])"},{"line_number":315,"context_line":"                last_heartbeat \u003d agent_db.heartbeat_timestamp"},{"line_number":316,"context_line":"                res[\u0027heartbeat_timestamp\u0027] \u003d current_time"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_90b042f6","line":313,"updated":"2015-11-04 11:07:59.000000000","message":"could we not use agent_db[\u0027alive\u0027] here to determine if it is REVIVED?","commit_id":"c7ac9c042d7f3cbd14a4a855bde0f4ac16e49ceb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"5201bd886f203fb2766b2972b6c54d0294b410ef","unresolved":false,"context_lines":[{"line_number":310,"context_line":"            res[\u0027load\u0027] \u003d self._get_agent_load(agent_state)"},{"line_number":311,"context_line":"            current_time \u003d timeutils.utcnow()"},{"line_number":312,"context_line":"            try:"},{"line_number":313,"context_line":"                agent_db \u003d self._get_agent_by_type_and_host("},{"line_number":314,"context_line":"                    context, agent_state[\u0027agent_type\u0027], agent_state[\u0027host\u0027])"},{"line_number":315,"context_line":"                last_heartbeat \u003d agent_db.heartbeat_timestamp"},{"line_number":316,"context_line":"                res[\u0027heartbeat_timestamp\u0027] \u003d current_time"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_39237ebf","line":313,"in_reply_to":"fa80f949_90b042f6","updated":"2015-11-04 14:01:41.000000000","message":"there\u0027s not such field in the model itself (Lines 73-107), it is calculated.\n\nAre you proposing to use agent_db.is_active?","commit_id":"c7ac9c042d7f3cbd14a4a855bde0f4ac16e49ceb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1e5834153f703855846573b8475106a551bc7592","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                      \u0027uuid\u0027: state.get(\u0027uuid\u0027),"},{"line_number":299,"context_line":"                      \u0027delta\u0027: delta})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def _create_or_update_agent(self, context, agent_state):"},{"line_number":302,"context_line":"        status \u003d constants.AGENT_ALIVE"},{"line_number":303,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":304,"context_line":"            res_keys \u003d [\u0027agent_type\u0027, \u0027binary\u0027, \u0027host\u0027, \u0027topic\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_83d1a559","line":301,"updated":"2015-11-05 14:01:03.000000000","message":"could you please add a comment here explaining that this returns the status and the type of the status. it may help someone from dropping that moving forwards","commit_id":"09dccec057fe9173a78f1d4630348b3fe1a66ab4"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"94905ad93ba9717512e4a484e60394f49cf3e996","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                      \u0027uuid\u0027: state.get(\u0027uuid\u0027),"},{"line_number":299,"context_line":"                      \u0027delta\u0027: delta})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def _create_or_update_agent(self, context, agent_state):"},{"line_number":302,"context_line":"        status \u003d constants.AGENT_ALIVE"},{"line_number":303,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":304,"context_line":"            res_keys \u003d [\u0027agent_type\u0027, \u0027binary\u0027, \u0027host\u0027, \u0027topic\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_d42be292","line":301,"in_reply_to":"fa80f949_83d1a559","updated":"2015-11-05 16:00:03.000000000","message":"Done","commit_id":"09dccec057fe9173a78f1d4630348b3fe1a66ab4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1e5834153f703855846573b8475106a551bc7592","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            try:"},{"line_number":313,"context_line":"                agent_db \u003d self._get_agent_by_type_and_host("},{"line_number":314,"context_line":"                    context, agent_state[\u0027agent_type\u0027], agent_state[\u0027host\u0027])"},{"line_number":315,"context_line":"                if not agent_db.is_active:"},{"line_number":316,"context_line":"                    status \u003d constants.AGENT_REVIVED"},{"line_number":317,"context_line":"                res[\u0027heartbeat_timestamp\u0027] \u003d current_time"},{"line_number":318,"context_line":"                if agent_state.get(\u0027start_flag\u0027):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_63804147","line":315,"updated":"2015-11-05 14:01:03.000000000","message":"yup that looks a lot better. thanks!","commit_id":"09dccec057fe9173a78f1d4630348b3fe1a66ab4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1e5834153f703855846573b8475106a551bc7592","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        super(AgentExtRpcCallback, self).__init__()"},{"line_number":372,"context_line":"        self.plugin \u003d plugin"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def report_state(self, context, **kwargs):"},{"line_number":375,"context_line":"        \"\"\"Report state from agent to server.\"\"\""},{"line_number":376,"context_line":"        time \u003d kwargs[\u0027time\u0027]"},{"line_number":377,"context_line":"        time \u003d timeutils.parse_strtime(time)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_c3bfadf9","line":374,"updated":"2015-11-05 14:01:03.000000000","message":"please add a docstring here indicating that it returns agent status","commit_id":"09dccec057fe9173a78f1d4630348b3fe1a66ab4"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"94905ad93ba9717512e4a484e60394f49cf3e996","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        super(AgentExtRpcCallback, self).__init__()"},{"line_number":372,"context_line":"        self.plugin \u003d plugin"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def report_state(self, context, **kwargs):"},{"line_number":375,"context_line":"        \"\"\"Report state from agent to server.\"\"\""},{"line_number":376,"context_line":"        time \u003d kwargs[\u0027time\u0027]"},{"line_number":377,"context_line":"        time \u003d timeutils.parse_strtime(time)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_54161256","line":374,"in_reply_to":"fa80f949_c3bfadf9","updated":"2015-11-05 16:00:03.000000000","message":"Done","commit_id":"09dccec057fe9173a78f1d4630348b3fe1a66ab4"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"c90bf344d9b73c4d996f6875dadad7854c94245e","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                greenthread.sleep(0)"},{"line_number":320,"context_line":"                self._log_heartbeat(agent_state, agent_db, configurations_dict)"},{"line_number":321,"context_line":"                agent_db.update(res)"},{"line_number":322,"context_line":"                if AgentDbMixin.is_agent_down(last_heartbeat):"},{"line_number":323,"context_line":"                    status \u003d constants.AGENT_REVIVED"},{"line_number":324,"context_line":"            except ext_agent.AgentNotFoundByTypeHost:"},{"line_number":325,"context_line":"                greenthread.sleep(0)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_d43473df","line":322,"updated":"2015-11-17 10:11:25.000000000","message":"You should use self.is_agent_down which allows subclasses to overload this method?","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8aa8421607f3f9eb0e568209e661e4525252799d","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                greenthread.sleep(0)"},{"line_number":320,"context_line":"                self._log_heartbeat(agent_state, agent_db, configurations_dict)"},{"line_number":321,"context_line":"                agent_db.update(res)"},{"line_number":322,"context_line":"                if AgentDbMixin.is_agent_down(last_heartbeat):"},{"line_number":323,"context_line":"                    status \u003d constants.AGENT_REVIVED"},{"line_number":324,"context_line":"            except ext_agent.AgentNotFoundByTypeHost:"},{"line_number":325,"context_line":"                greenthread.sleep(0)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_abc62d47","line":322,"in_reply_to":"ba8a016a_d43473df","updated":"2015-11-17 10:32:10.000000000","message":"for some reason the change here was reversed.\nSince patchset #8 :(\nHere should be if not agent_db.is_active:","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"}],"neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"294bac91db90c5b826ae1a370da3ee5a5a3bfb71","unresolved":false,"context_lines":[{"line_number":903,"context_line":"                                                       self.agent_state,"},{"line_number":904,"context_line":"                                                       True)"},{"line_number":905,"context_line":"            if agent_status \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":906,"context_line":"                LOG.info(_LI(\u0027Agent has just revived. Do a full sync.\u0027))"},{"line_number":907,"context_line":"                self.fullsync \u003d True"},{"line_number":908,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":909,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da85f559_29ca451b","line":906,"updated":"2015-11-13 22:32:19.000000000","message":"Same nit as the other strings","commit_id":"c2932579bb2a88226158467bb5de85f231f834e5"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"c90bf344d9b73c4d996f6875dadad7854c94245e","unresolved":false,"context_lines":[{"line_number":905,"context_line":"            if agent_status \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":906,"context_line":"                LOG.info(_LI(\u0027Agent has just been revived. \u0027"},{"line_number":907,"context_line":"                             \u0027Doing a full sync.\u0027))"},{"line_number":908,"context_line":"                self.fullsync \u003d True"},{"line_number":909,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":910,"context_line":"        except Exception:"},{"line_number":911,"context_line":"            LOG.exception(_LE(\"Failed reporting state!\"))"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_cba5b104","line":908,"updated":"2015-11-17 10:11:25.000000000","message":"we cannot directly set sync\u003dTrue?","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8aa8421607f3f9eb0e568209e661e4525252799d","unresolved":false,"context_lines":[{"line_number":905,"context_line":"            if agent_status \u003d\u003d constants.AGENT_REVIVED:"},{"line_number":906,"context_line":"                LOG.info(_LI(\u0027Agent has just been revived. \u0027"},{"line_number":907,"context_line":"                             \u0027Doing a full sync.\u0027))"},{"line_number":908,"context_line":"                self.fullsync \u003d True"},{"line_number":909,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":910,"context_line":"        except Exception:"},{"line_number":911,"context_line":"            LOG.exception(_LE(\"Failed reporting state!\"))"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_ce413f0d","line":908,"in_reply_to":"ba8a016a_cba5b104","updated":"2015-11-17 10:32:10.000000000","message":"Since state reports and rpc_loop are in different greenthreads, whis would not guarantee that rpc_loop will resync. Hence instance attribute","commit_id":"236c60228c81a4641c39d9909cb9d83042c1a03d"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"cd805e234576cb359edcbb2147764a3ba6af3c46","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"    def daemon_loop(self):"},{"line_number":1104,"context_line":"        LOG.info(_LI(\"LinuxBridge Agent RPC Daemon Started!\"))"},{"line_number":1105,"context_line":"        device_info \u003d None"},{"line_number":1106,"context_line":"        sync \u003d True"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"        while True:"},{"line_number":1109,"context_line":"            start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_18eab4ac","line":1106,"updated":"2015-11-19 09:05:54.000000000","message":"why not making this variable a class variable and using it instead of introducing the new fullsync var?","commit_id":"3b6bd917e4b968a47a5aacb7f590143fc83816d9"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"c4487f30fd80b1a8748d88f6ad088678caa57c37","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"    def daemon_loop(self):"},{"line_number":1104,"context_line":"        LOG.info(_LI(\"LinuxBridge Agent RPC Daemon Started!\"))"},{"line_number":1105,"context_line":"        device_info \u003d None"},{"line_number":1106,"context_line":"        sync \u003d True"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"        while True:"},{"line_number":1109,"context_line":"            start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_eb6b5cb7","line":1106,"in_reply_to":"ba8a016a_18eab4ac","updated":"2015-11-19 09:13:48.000000000","message":"See the comment here: https://review.openstack.org/#/c/232661/3/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py","commit_id":"3b6bd917e4b968a47a5aacb7f590143fc83816d9"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"65c99cddc125d1ebe229c143e147b58c82b76a2c","unresolved":false,"context_lines":[{"line_number":1622,"context_line":"            polling_manager \u003d polling.get_polling_manager("},{"line_number":1623,"context_line":"                minimize_polling\u003dFalse)"},{"line_number":1624,"context_line":""},{"line_number":1625,"context_line":"        ports \u003d set()"},{"line_number":1626,"context_line":"        updated_ports_copy \u003d set()"},{"line_number":1627,"context_line":"        ancillary_ports \u003d set()"},{"line_number":1628,"context_line":"        tunnel_sync \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_8ae514a5","line":1625,"updated":"2015-10-08 17:49:16.000000000","message":"I\u0027m not entirely familiar with how often rpc_loop is called, and in what cases, but by removing this sync and relying on self.fullsync instead, it seems that you are changing the behavior so that rpc_loop doesn\u0027t always execute code that it used to.  Is that a desired change?","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"5297d307c3ef7d415645f78081c50c60a1388725","unresolved":false,"context_lines":[{"line_number":1622,"context_line":"            polling_manager \u003d polling.get_polling_manager("},{"line_number":1623,"context_line":"                minimize_polling\u003dFalse)"},{"line_number":1624,"context_line":""},{"line_number":1625,"context_line":"        ports \u003d set()"},{"line_number":1626,"context_line":"        updated_ports_copy \u003d set()"},{"line_number":1627,"context_line":"        ancillary_ports \u003d set()"},{"line_number":1628,"context_line":"        tunnel_sync \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_6b95f330","line":1625,"in_reply_to":"7a2fa921_8ae514a5","updated":"2015-10-09 13:17:48.000000000","message":"Done","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"7acf8f06c3f6f748f3ebedd9bc8f84eaad330e39","unresolved":false,"context_lines":[{"line_number":1723,"context_line":"                        LOG.debug(\"Starting to process devices in:%s\","},{"line_number":1724,"context_line":"                                  port_info)"},{"line_number":1725,"context_line":"                        # If treat devices fails - must resync with plugin"},{"line_number":1726,"context_line":"                        self.fullsync \u003d self.process_network_ports("},{"line_number":1727,"context_line":"                            port_info, ovs_restarted)"},{"line_number":1728,"context_line":"                        self.cleanup_stale_flows()"},{"line_number":1729,"context_line":"                        LOG.debug(\"Agent rpc_loop - iteration:%(iter_num)d - \""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_380953de","line":1726,"updated":"2015-10-12 13:11:05.000000000","message":"I am afraid we can\u0027t use only one variable to keep track of the fullsync triggered by report_state and the sync triggered by some problem in processing a device. For example here if self.fullsync is set to True by _report_state and then the green thread yields and the agent goes on in the processing loop executing this line, self.fullsync might be set to False and the resync would never be executed.","commit_id":"8c09ac93b77f2ff38405997c23b7cf247c16f5a1"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"0544147a14c3302111c2f914c2240cb478cfafb0","unresolved":false,"context_lines":[{"line_number":1723,"context_line":"                        LOG.debug(\"Starting to process devices in:%s\","},{"line_number":1724,"context_line":"                                  port_info)"},{"line_number":1725,"context_line":"                        # If treat devices fails - must resync with plugin"},{"line_number":1726,"context_line":"                        self.fullsync \u003d self.process_network_ports("},{"line_number":1727,"context_line":"                            port_info, ovs_restarted)"},{"line_number":1728,"context_line":"                        self.cleanup_stale_flows()"},{"line_number":1729,"context_line":"                        LOG.debug(\"Agent rpc_loop - iteration:%(iter_num)d - \""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_a0643a49","line":1726,"in_reply_to":"7a2fa921_380953de","updated":"2015-10-12 18:16:25.000000000","message":"Good suggestion, thanks. I need to think about it.","commit_id":"8c09ac93b77f2ff38405997c23b7cf247c16f5a1"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"b33f23ddb7591ef686460a8779b65664ba62fa3f","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"                        LOG.debug(\"Starting to process devices in:%s\","},{"line_number":1755,"context_line":"                                  port_info)"},{"line_number":1756,"context_line":"                        # If treat devices fails - must resync with plugin"},{"line_number":1757,"context_line":"                        sync \u003d self.process_network_ports("},{"line_number":1758,"context_line":"                            port_info, ovs_restarted)"},{"line_number":1759,"context_line":"                        self.cleanup_stale_flows()"},{"line_number":1760,"context_line":"                        LOG.debug(\"Agent rpc_loop - iteration:%(iter_num)d - \""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_7a6ac382","line":1757,"updated":"2015-10-16 13:25:39.000000000","message":"only formatting changed?","commit_id":"d8f9cc77d32683c14c7c1a948b578b81af7c9254"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"8cd6cffdceac8f03df245c0496892c3b16bffd2c","unresolved":false,"context_lines":[{"line_number":1754,"context_line":"                        LOG.debug(\"Starting to process devices in:%s\","},{"line_number":1755,"context_line":"                                  port_info)"},{"line_number":1756,"context_line":"                        # If treat devices fails - must resync with plugin"},{"line_number":1757,"context_line":"                        sync \u003d self.process_network_ports("},{"line_number":1758,"context_line":"                            port_info, ovs_restarted)"},{"line_number":1759,"context_line":"                        self.cleanup_stale_flows()"},{"line_number":1760,"context_line":"                        LOG.debug(\"Agent rpc_loop - iteration:%(iter_num)d - \""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_5d06e11d","line":1757,"in_reply_to":"5a2ca52d_7a6ac382","updated":"2015-10-16 13:37:56.000000000","message":"yes, previously it didn\u0027t fit in 80 chars.\nI think I\u0027ll respin the change as folks doesn\u0027t like format change.","commit_id":"d8f9cc77d32683c14c7c1a948b578b81af7c9254"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6ac5f2c68dfc486a8244e2d73118c5a2571475bb","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                                                       True)"},{"line_number":331,"context_line":"            if agent_status \u003d\u003d n_const.AGENT_REVIVED:"},{"line_number":332,"context_line":"                LOG.info(_LI(\u0027Agent has just revived. Do a full sync.\u0027))"},{"line_number":333,"context_line":"                self.fullsync \u003d True"},{"line_number":334,"context_line":"            self.use_call \u003d False"},{"line_number":335,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":336,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_b8469abd","line":333,"updated":"2015-11-04 04:40:20.000000000","message":"it\u0027s safer not to do this for the first report_state call.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ed2786c0a6f4fcc9d6fc811225299a0fc86ae1eb","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                                                       True)"},{"line_number":331,"context_line":"            if agent_status \u003d\u003d n_const.AGENT_REVIVED:"},{"line_number":332,"context_line":"                LOG.info(_LI(\u0027Agent has just revived. Do a full sync.\u0027))"},{"line_number":333,"context_line":"                self.fullsync \u003d True"},{"line_number":334,"context_line":"            self.use_call \u003d False"},{"line_number":335,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":336,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_02f2c8d2","line":333,"in_reply_to":"fa80f949_b8469abd","updated":"2015-11-04 10:23:50.000000000","message":"AGENT_REVIVED may not be a first state report, it could be returned if there were some problems with messaging (rabbitmq down, for instance).\nCovering this case is the goal of the patch.\n\nIf it is indeed the first state report - then it may cause additional resync in worst case, depending on the order of issuing state report and calling rpc_loop.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6ac5f2c68dfc486a8244e2d73118c5a2571475bb","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            if agent_status \u003d\u003d n_const.AGENT_REVIVED:"},{"line_number":332,"context_line":"                LOG.info(_LI(\u0027Agent has just revived. Do a full sync.\u0027))"},{"line_number":333,"context_line":"                self.fullsync \u003d True"},{"line_number":334,"context_line":"            self.use_call \u003d False"},{"line_number":335,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":336,"context_line":"        except Exception:"},{"line_number":337,"context_line":"            LOG.exception(_LE(\"Failed reporting state!\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_d8f83e7f","line":334,"updated":"2015-11-04 04:40:20.000000000","message":"forgot to remove?","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ed2786c0a6f4fcc9d6fc811225299a0fc86ae1eb","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            if agent_status \u003d\u003d n_const.AGENT_REVIVED:"},{"line_number":332,"context_line":"                LOG.info(_LI(\u0027Agent has just revived. Do a full sync.\u0027))"},{"line_number":333,"context_line":"                self.fullsync \u003d True"},{"line_number":334,"context_line":"            self.use_call \u003d False"},{"line_number":335,"context_line":"            self.agent_state.pop(\u0027start_flag\u0027, None)"},{"line_number":336,"context_line":"        except Exception:"},{"line_number":337,"context_line":"            LOG.exception(_LE(\"Failed reporting state!\"))"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_82ca38a0","line":334,"in_reply_to":"fa80f949_d8f83e7f","updated":"2015-11-04 10:23:50.000000000","message":"Done","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6ac5f2c68dfc486a8244e2d73118c5a2571475bb","unresolved":false,"context_lines":[{"line_number":1659,"context_line":"        while self._check_and_handle_signal():"},{"line_number":1660,"context_line":"            if self.fullsync:"},{"line_number":1661,"context_line":"                LOG.info(_LI(\"rpc_loop doing a full sync.\"))"},{"line_number":1662,"context_line":"                sync \u003d True"},{"line_number":1663,"context_line":"                self.fullsync \u003d False"},{"line_number":1664,"context_line":"            port_info \u003d {}"},{"line_number":1665,"context_line":"            ancillary_port_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_d826fe15","line":1662,"updated":"2015-11-04 04:40:20.000000000","message":"i\u0027m not sure how this improves the situation.","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ed2786c0a6f4fcc9d6fc811225299a0fc86ae1eb","unresolved":false,"context_lines":[{"line_number":1659,"context_line":"        while self._check_and_handle_signal():"},{"line_number":1660,"context_line":"            if self.fullsync:"},{"line_number":1661,"context_line":"                LOG.info(_LI(\"rpc_loop doing a full sync.\"))"},{"line_number":1662,"context_line":"                sync \u003d True"},{"line_number":1663,"context_line":"                self.fullsync \u003d False"},{"line_number":1664,"context_line":"            port_info \u003d {}"},{"line_number":1665,"context_line":"            ancillary_port_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_02e8880f","line":1662,"in_reply_to":"fa80f949_d826fe15","updated":"2015-11-04 10:23:50.000000000","message":"As was pointed out in one of the previous patchsets, we can\u0027t use self.fullsync throughout the rpc_loop, so it is used just as a trigger at the beginning of the next rpc_loop","commit_id":"963ac46ac0780b91bcc8e170c4fa6bb3eef294cc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"727a91a6bb70d3568bb60edd543978c38d48b9da","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"        consecutive_resyncs \u003d 0"},{"line_number":1658,"context_line":"        while self._check_and_handle_signal():"},{"line_number":1659,"context_line":"            if self.fullsync:"},{"line_number":1660,"context_line":"                LOG.info(_LI(\"rpc_loop doing a full sync.\"))"},{"line_number":1661,"context_line":"                sync \u003d True"},{"line_number":1662,"context_line":"                self.fullsync \u003d False"},{"line_number":1663,"context_line":"            port_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_b09b06c9","line":1660,"updated":"2015-11-04 11:07:59.000000000","message":"Does this need to be an info. I think that just a debug should suffice","commit_id":"c7ac9c042d7f3cbd14a4a855bde0f4ac16e49ceb"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"ffb923792dfc21b760ae2fd65ecda9e531b24e5a","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"        consecutive_resyncs \u003d 0"},{"line_number":1658,"context_line":"        while self._check_and_handle_signal():"},{"line_number":1659,"context_line":"            if self.fullsync:"},{"line_number":1660,"context_line":"                LOG.info(_LI(\"rpc_loop doing a full sync.\"))"},{"line_number":1661,"context_line":"                sync \u003d True"},{"line_number":1662,"context_line":"                self.fullsync \u003d False"},{"line_number":1663,"context_line":"            port_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_d9b027e0","line":1660,"in_reply_to":"fa80f949_1153f4e2","updated":"2015-11-04 17:41:26.000000000","message":"I agree with enikanorov here.  INFO is for operators and since this is an exceptional operation, I believe that logging it for an operator is useful.","commit_id":"c7ac9c042d7f3cbd14a4a855bde0f4ac16e49ceb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"5201bd886f203fb2766b2972b6c54d0294b410ef","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"        consecutive_resyncs \u003d 0"},{"line_number":1658,"context_line":"        while self._check_and_handle_signal():"},{"line_number":1659,"context_line":"            if self.fullsync:"},{"line_number":1660,"context_line":"                LOG.info(_LI(\"rpc_loop doing a full sync.\"))"},{"line_number":1661,"context_line":"                sync \u003d True"},{"line_number":1662,"context_line":"                self.fullsync \u003d False"},{"line_number":1663,"context_line":"            port_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_1153f4e2","line":1660,"in_reply_to":"fa80f949_b09b06c9","updated":"2015-11-04 14:01:41.000000000","message":"From my troubleshooting experience (where default logging level is INFO) it\u0027s convenient to know that certain operation did happen or is going to happen.\n\nHere we can connect the cause (line 331) and the consequence (line 1660) and know for sure that it did revive and performed full sync in the certain loop iteration.\nThis is not a regular condition, so it should not pollute logs.","commit_id":"c7ac9c042d7f3cbd14a4a855bde0f4ac16e49ceb"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"352bc0afa4764bdf36fbabc7b2163c7de3559481","unresolved":false,"context_lines":[{"line_number":1646,"context_line":"        if not polling_manager:"},{"line_number":1647,"context_line":"            polling_manager \u003d polling.get_polling_manager("},{"line_number":1648,"context_line":"                minimize_polling\u003dFalse)"},{"line_number":1649,"context_line":""},{"line_number":1650,"context_line":"        sync \u003d True"},{"line_number":1651,"context_line":"        ports \u003d set()"},{"line_number":1652,"context_line":"        updated_ports_copy \u003d set()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_bf6caa35","side":"PARENT","line":1649,"updated":"2015-11-19 10:29:49.000000000","message":"This blank line was precious to me! :)","commit_id":"0312b1237b1a74aec82163ef863624d2607563d2"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"7a31cad0d6cd1f5aca221998715fbc79d06cebf4","unresolved":false,"context_lines":[{"line_number":1646,"context_line":"        if not polling_manager:"},{"line_number":1647,"context_line":"            polling_manager \u003d polling.get_polling_manager("},{"line_number":1648,"context_line":"                minimize_polling\u003dFalse)"},{"line_number":1649,"context_line":""},{"line_number":1650,"context_line":"        sync \u003d True"},{"line_number":1651,"context_line":"        ports \u003d set()"},{"line_number":1652,"context_line":"        updated_ports_copy \u003d set()"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_badcb873","side":"PARENT","line":1649,"in_reply_to":"ba8a016a_bf6caa35","updated":"2015-11-19 10:39:40.000000000","message":"That was a result of tektonic shift!","commit_id":"0312b1237b1a74aec82163ef863624d2607563d2"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"cd805e234576cb359edcbb2147764a3ba6af3c46","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"        while self._check_and_handle_signal():"},{"line_number":1661,"context_line":"            if self.fullsync:"},{"line_number":1662,"context_line":"                LOG.info(_LI(\"rpc_loop doing a full sync.\"))"},{"line_number":1663,"context_line":"                sync \u003d True"},{"line_number":1664,"context_line":"                self.fullsync \u003d False"},{"line_number":1665,"context_line":"            port_info \u003d {}"},{"line_number":1666,"context_line":"            ancillary_port_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba8a016a_f832505d","line":1663,"updated":"2015-11-19 09:05:54.000000000","message":"same question like in lb agent. Why not making this var a class variable and using it instead of introducing the new fullsync var?","commit_id":"3b6bd917e4b968a47a5aacb7f590143fc83816d9"}],"neutron/tests/unit/agent/dhcp/test_agent.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"65c99cddc125d1ebe229c143e147b58c82b76a2c","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            dhcp._report_state()"},{"line_number":431,"context_line":"            self.assertEqual(dhcp.needs_resync_reasons[None],"},{"line_number":432,"context_line":"                             [\u0027Agent has just revived\u0027])"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def test_periodic_resync_helper(self):"},{"line_number":435,"context_line":"        with mock.patch.object(dhcp_agent.eventlet, \u0027sleep\u0027) as sleep:"},{"line_number":436,"context_line":"            dhcp \u003d dhcp_agent.DhcpAgent(HOSTNAME)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_25499160","line":433,"updated":"2015-10-08 17:49:16.000000000","message":"It would be useful to add a test where the report_state.return_value is not AGENT_REVIVED, to check the code path where resync is not needed","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"5297d307c3ef7d415645f78081c50c60a1388725","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            dhcp._report_state()"},{"line_number":431,"context_line":"            self.assertEqual(dhcp.needs_resync_reasons[None],"},{"line_number":432,"context_line":"                             [\u0027Agent has just revived\u0027])"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def test_periodic_resync_helper(self):"},{"line_number":435,"context_line":"        with mock.patch.object(dhcp_agent.eventlet, \u0027sleep\u0027) as sleep:"},{"line_number":436,"context_line":"            dhcp \u003d dhcp_agent.DhcpAgent(HOSTNAME)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_8b75ef32","line":433,"in_reply_to":"7a2fa921_25499160","updated":"2015-10-09 13:17:48.000000000","message":"Done","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"}],"neutron/tests/unit/agent/l3/test_agent.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"65c99cddc125d1ebe229c143e147b58c82b76a2c","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                                       conf\u003dself.conf)"},{"line_number":220,"context_line":"            agent._report_state()"},{"line_number":221,"context_line":"            self.assertTrue(agent.fullsync)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_periodic_sync_routers_task_call_clean_stale_namespaces(self):"},{"line_number":224,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":225,"context_line":"        self.plugin_api.get_routers.return_value \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_c5a77d09","line":222,"updated":"2015-10-08 17:49:16.000000000","message":"It would be useful to add a test to check the case where the state is not AGENT_REVIVED to make sure agent.fullsync \u003d False","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"5297d307c3ef7d415645f78081c50c60a1388725","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                                       conf\u003dself.conf)"},{"line_number":220,"context_line":"            agent._report_state()"},{"line_number":221,"context_line":"            self.assertTrue(agent.fullsync)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_periodic_sync_routers_task_call_clean_stale_namespaces(self):"},{"line_number":224,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":225,"context_line":"        self.plugin_api.get_routers.return_value \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_eb7a6323","line":222,"in_reply_to":"7a2fa921_c5a77d09","updated":"2015-10-09 13:17:48.000000000","message":"Done","commit_id":"805c5d87198c5ef8d1e8b560a106af8b2e1cb220"}],"neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"63e0ff2a45a37fbf3d532547b60d896d1483509b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            self.agent \u003d self.mod_agent.OVSNeutronAgent(self._bridge_classes(),"},{"line_number":147,"context_line":"                                                        **kwargs)"},{"line_number":148,"context_line":"            # set back to true because initial report state will succeed due"},{"line_number":149,"context_line":"            # to mocked out RPC calls"},{"line_number":150,"context_line":"            self.agent.tun_br \u003d self.br_tun_cls(br_name\u003d\u0027br-tun\u0027)"},{"line_number":151,"context_line":"        self.agent.sg_agent \u003d mock.Mock()"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_4376d806","line":149,"updated":"2015-11-12 15:11:09.000000000","message":"Should remove this comment since you removed the use_call \u003d True line that it refers to","commit_id":"0d156bd87994437f6efd42649d8d1d711f2a0285"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"fe14f9f96468c79fe7b8729963ac6ea0359d33d3","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            self.agent \u003d self.mod_agent.OVSNeutronAgent(self._bridge_classes(),"},{"line_number":147,"context_line":"                                                        **kwargs)"},{"line_number":148,"context_line":"            # set back to true because initial report state will succeed due"},{"line_number":149,"context_line":"            # to mocked out RPC calls"},{"line_number":150,"context_line":"            self.agent.tun_br \u003d self.br_tun_cls(br_name\u003d\u0027br-tun\u0027)"},{"line_number":151,"context_line":"        self.agent.sg_agent \u003d mock.Mock()"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_26cde230","line":149,"in_reply_to":"da85f559_4376d806","updated":"2015-11-12 15:16:52.000000000","message":"Done","commit_id":"0d156bd87994437f6efd42649d8d1d711f2a0285"},{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"63e0ff2a45a37fbf3d532547b60d896d1483509b","unresolved":false,"context_lines":[{"line_number":1739,"context_line":"            self.agent \u003d self.mod_agent.OVSNeutronAgent(self._bridge_classes(),"},{"line_number":1740,"context_line":"                                                        **kwargs)"},{"line_number":1741,"context_line":"            # set back to true because initial report state will succeed due"},{"line_number":1742,"context_line":"            # to mocked out RPC calls"},{"line_number":1743,"context_line":"            self.agent.tun_br \u003d self.br_tun_cls(br_name\u003d\u0027br-tun\u0027)"},{"line_number":1744,"context_line":"        self.agent.sg_agent \u003d mock.Mock()"},{"line_number":1745,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_c38168c4","line":1742,"updated":"2015-11-12 15:11:09.000000000","message":"Should remove this comment since you removed the use_call \u003d True line that it refers to","commit_id":"0d156bd87994437f6efd42649d8d1d711f2a0285"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"fe14f9f96468c79fe7b8729963ac6ea0359d33d3","unresolved":false,"context_lines":[{"line_number":1739,"context_line":"            self.agent \u003d self.mod_agent.OVSNeutronAgent(self._bridge_classes(),"},{"line_number":1740,"context_line":"                                                        **kwargs)"},{"line_number":1741,"context_line":"            # set back to true because initial report state will succeed due"},{"line_number":1742,"context_line":"            # to mocked out RPC calls"},{"line_number":1743,"context_line":"            self.agent.tun_br \u003d self.br_tun_cls(br_name\u003d\u0027br-tun\u0027)"},{"line_number":1744,"context_line":"        self.agent.sg_agent \u003d mock.Mock()"},{"line_number":1745,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_6648cab3","line":1742,"in_reply_to":"da85f559_c38168c4","updated":"2015-11-12 15:16:52.000000000","message":"true, missed that.","commit_id":"0d156bd87994437f6efd42649d8d1d711f2a0285"}]}
