)]}'
{"neutron/db/dvr_mac_db.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b0cc831ad3571a2f9c0ff4b9c2bf1604df75988b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                self.notifier.dvr_mac_address_update(context, dvr_macs)"},{"line_number":92,"context_line":"                return self._make_dvr_mac_address_dict(dvr_mac_binding)"},{"line_number":93,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":94,"context_line":"                context.session.rollback()"},{"line_number":95,"context_line":"                LOG.debug(\"Generated DVR mac %(mac)s exists.\""},{"line_number":96,"context_line":"                          \" Remaining attempts %(attempts_left)s.\","},{"line_number":97,"context_line":"                          {\u0027mac\u0027: mac_address, \u0027attempts_left\u0027: attempt})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_dd345eae","line":94,"updated":"2015-01-12 21:11:58.000000000","message":"the rollback here would be issued as soon as you get out of the with statement, no?","commit_id":"76c0aa0ca20d13456497ca0653eddb40410dbac9"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f265024626fcf0e6ad27d0ffcfc2e67e3db65d5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                self.notifier.dvr_mac_address_update(context, dvr_macs)"},{"line_number":92,"context_line":"                return self._make_dvr_mac_address_dict(dvr_mac_binding)"},{"line_number":93,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":94,"context_line":"                context.session.rollback()"},{"line_number":95,"context_line":"                LOG.debug(\"Generated DVR mac %(mac)s exists.\""},{"line_number":96,"context_line":"                          \" Remaining attempts %(attempts_left)s.\","},{"line_number":97,"context_line":"                          {\u0027mac\u0027: mac_address, \u0027attempts_left\u0027: attempt})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b70146b1","line":94,"in_reply_to":"3a961159_9609c234","updated":"2015-01-13 20:29:02.000000000","message":"Yes...but... [1] :)\n\n[1] https://review.openstack.org/#/c/112740/","commit_id":"76c0aa0ca20d13456497ca0653eddb40410dbac9"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"ee9975f1843ba3007a227c38be481aa43c99f2d5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                self.notifier.dvr_mac_address_update(context, dvr_macs)"},{"line_number":92,"context_line":"                return self._make_dvr_mac_address_dict(dvr_mac_binding)"},{"line_number":93,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":94,"context_line":"                context.session.rollback()"},{"line_number":95,"context_line":"                LOG.debug(\"Generated DVR mac %(mac)s exists.\""},{"line_number":96,"context_line":"                          \" Remaining attempts %(attempts_left)s.\","},{"line_number":97,"context_line":"                          {\u0027mac\u0027: mac_address, \u0027attempts_left\u0027: attempt})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_f7581933","line":94,"in_reply_to":"3a961159_b70146b1","updated":"2015-01-14 10:31:11.000000000","message":"Oh I see this was already discussed. What\u0027s your recommendation now? I think this issue should be fixed once for all...it\u0027s causing problems again, see for example bug #1374473","commit_id":"76c0aa0ca20d13456497ca0653eddb40410dbac9"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"47ae145f96a32e04d47e9aeb72e53498c07d21f7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                self.notifier.dvr_mac_address_update(context, dvr_macs)"},{"line_number":92,"context_line":"                return self._make_dvr_mac_address_dict(dvr_mac_binding)"},{"line_number":93,"context_line":"            except db_exc.DBDuplicateEntry:"},{"line_number":94,"context_line":"                context.session.rollback()"},{"line_number":95,"context_line":"                LOG.debug(\"Generated DVR mac %(mac)s exists.\""},{"line_number":96,"context_line":"                          \" Remaining attempts %(attempts_left)s.\","},{"line_number":97,"context_line":"                          {\u0027mac\u0027: mac_address, \u0027attempts_left\u0027: attempt})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_9609c234","line":94,"in_reply_to":"3a961159_dd345eae","updated":"2015-01-13 11:24:05.000000000","message":"yes Armando, you are right. Looking at it again, I think the real problem here is that we should use a SAVEPOINT, quoting from sqlalchemy faq: \"many database operations require a ROLLBACK in any case. Postgres in particular has operations which, once failed, the transaction is not allowed to continue. What SQLAlchemy offers that solves both issues is support of SAVEPOINT, via Session.begin_nested(). Using Session.begin_nested(), you can frame an operation that may potentially fail within a transaction, and then “roll back” to the point before its failure while maintaining the enclosing transaction.\" http://docs.sqlalchemy.org/en/rel_0_8/faq.html","commit_id":"76c0aa0ca20d13456497ca0653eddb40410dbac9"}],"neutron/db/l3_agentschedulers_db.py":[{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"96319d69ac9c05aa9c6a4b2bf07e4227575a71b4","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                         \"before check to allow agents to send a heartbeat \""},{"line_number":110,"context_line":"                         \"in case there was a clock adjustment.\"))"},{"line_number":111,"context_line":"            time.sleep(agent_dead_limit)"},{"line_number":112,"context_line":"        self._clock_jump_canary \u003d timeutils.utcnow()"},{"line_number":113,"context_line":"        self._clock_jump_canary \u003d timeutils.utcnow()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        context \u003d n_ctx.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_2a89936f","line":112,"updated":"2015-01-13 00:40:47.000000000","message":"why is this line repeated.? Does this has anything to do with the rollback.","commit_id":"76c0aa0ca20d13456497ca0653eddb40410dbac9"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"47ae145f96a32e04d47e9aeb72e53498c07d21f7","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                         \"before check to allow agents to send a heartbeat \""},{"line_number":110,"context_line":"                         \"in case there was a clock adjustment.\"))"},{"line_number":111,"context_line":"            time.sleep(agent_dead_limit)"},{"line_number":112,"context_line":"        self._clock_jump_canary \u003d timeutils.utcnow()"},{"line_number":113,"context_line":"        self._clock_jump_canary \u003d timeutils.utcnow()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        context \u003d n_ctx.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b604fe19","line":112,"in_reply_to":"3a961159_2a89936f","updated":"2015-01-13 11:24:05.000000000","message":"you are right, it\u0027s unrelated","commit_id":"76c0aa0ca20d13456497ca0653eddb40410dbac9"}]}
