)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"4f72ef60f10b5b146662a50ca429bb52aed14c69","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add UniqueConstraint for quota usages table"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, quota usages table dosen\u0027t contain any"},{"line_number":10,"context_line":"UniqueConstraint, under extreme circumstances such"},{"line_number":11,"context_line":"as creating over 300 volumes for a new project"},{"line_number":12,"context_line":"simultaneously, there are chances that multiple records"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba15a1d1_1834b6f9","line":9,"updated":"2015-09-18 13:47:30.000000000","message":"dosen\u0027t -\u003e doesn\u0027t","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"dfa95138ddf26e34039c3b0f809fda5f277564f7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add UniqueConstraint for quota usages table"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, quota usages table dosen\u0027t contain any"},{"line_number":10,"context_line":"UniqueConstraint, under extreme circumstances such"},{"line_number":11,"context_line":"as creating over 300 volumes for a new project"},{"line_number":12,"context_line":"simultaneously, there are chances that multiple records"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da85f559_35280a9a","line":9,"in_reply_to":"ba15a1d1_1834b6f9","updated":"2015-11-11 03:25:50.000000000","message":"Done","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"4f72ef60f10b5b146662a50ca429bb52aed14c69","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add UniqueConstraint for quota usages table"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, quota usages table dosen\u0027t contain any"},{"line_number":10,"context_line":"UniqueConstraint, under extreme circumstances such"},{"line_number":11,"context_line":"as creating over 300 volumes for a new project"},{"line_number":12,"context_line":"simultaneously, there are chances that multiple records"},{"line_number":13,"context_line":"for same resourse for same project can be created. Adding"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba15a1d1_de6f07c2","line":10,"updated":"2015-09-18 13:47:30.000000000","message":"Suggestion: Change \"UniqueConstraint, under ...\" to \"UniqueConstraint. Under ...\".","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"dfa95138ddf26e34039c3b0f809fda5f277564f7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add UniqueConstraint for quota usages table"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, quota usages table dosen\u0027t contain any"},{"line_number":10,"context_line":"UniqueConstraint, under extreme circumstances such"},{"line_number":11,"context_line":"as creating over 300 volumes for a new project"},{"line_number":12,"context_line":"simultaneously, there are chances that multiple records"},{"line_number":13,"context_line":"for same resourse for same project can be created. Adding"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da85f559_152b8695","line":10,"in_reply_to":"ba15a1d1_de6f07c2","updated":"2015-11-11 03:25:50.000000000","message":"Done","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"4f72ef60f10b5b146662a50ca429bb52aed14c69","unresolved":false,"context_lines":[{"line_number":10,"context_line":"UniqueConstraint, under extreme circumstances such"},{"line_number":11,"context_line":"as creating over 300 volumes for a new project"},{"line_number":12,"context_line":"simultaneously, there are chances that multiple records"},{"line_number":13,"context_line":"for same resourse for same project can be created. Adding"},{"line_number":14,"context_line":"UniqueConstraint can avoid this problem."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Iea6477034f20f04117c61cae37f3a0695fe68855"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba15a1d1_582eaea5","line":13,"updated":"2015-09-18 13:47:30.000000000","message":"resourse -\u003e resource","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"dfa95138ddf26e34039c3b0f809fda5f277564f7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"UniqueConstraint, under extreme circumstances such"},{"line_number":11,"context_line":"as creating over 300 volumes for a new project"},{"line_number":12,"context_line":"simultaneously, there are chances that multiple records"},{"line_number":13,"context_line":"for same resourse for same project can be created. Adding"},{"line_number":14,"context_line":"UniqueConstraint can avoid this problem."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Iea6477034f20f04117c61cae37f3a0695fe68855"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da85f559_d51f3e6a","line":13,"in_reply_to":"ba15a1d1_582eaea5","updated":"2015-11-11 03:25:50.000000000","message":"Done","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"}],"cinder/db/sqlalchemy/migrate_repo/versions/056_add_unique_constraint_for_quota_usages.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9bee6190137421757809dc3ab264603f081dc7ff","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                                quota_usages.columns.deleted \u003d\u003d"},{"line_number":38,"context_line":"                                                quota_usage.deleted)).execute()"},{"line_number":39,"context_line":"        count \u003d len(list(dupl))"},{"line_number":40,"context_line":"        if count \u003e\u003d 2:"},{"line_number":41,"context_line":"            msg \u003d _(\u0027There are still %s duplicate quota_usage records. \u0027"},{"line_number":42,"context_line":"                    \u0027Please delete those duplicate records first.\u0027), count"},{"line_number":43,"context_line":"            raise exception.Duplicate(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_ab07c16e","line":40,"updated":"2015-09-11 15:41:59.000000000","message":"You can\u0027t fail a migration and request admin intervention like this.  I think you will have to add code to fix this in the service itself, give it a while to run and ensure things are in place, and then add the constraint in the next release.\n\nIn the meantime, maybe there is another way to avoid this problem?","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"baa4162c56aa08d190bf17c3fb2a6ac8fa87925c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                                quota_usages.columns.deleted \u003d\u003d"},{"line_number":38,"context_line":"                                                quota_usage.deleted)).execute()"},{"line_number":39,"context_line":"        count \u003d len(list(dupl))"},{"line_number":40,"context_line":"        if count \u003e\u003d 2:"},{"line_number":41,"context_line":"            msg \u003d _(\u0027There are still %s duplicate quota_usage records. \u0027"},{"line_number":42,"context_line":"                    \u0027Please delete those duplicate records first.\u0027), count"},{"line_number":43,"context_line":"            raise exception.Duplicate(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_7136f304","line":40,"in_reply_to":"ba15a1d1_c90bb67c","updated":"2015-09-14 16:29:33.000000000","message":"A cinder-manage command has the same problem.  It would need to be cleaned up automatically in the volume service, transparently to the user.","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ab1654f182b4126420be5df6f7458b4f27d52e2d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                                                quota_usages.columns.deleted \u003d\u003d"},{"line_number":38,"context_line":"                                                quota_usage.deleted)).execute()"},{"line_number":39,"context_line":"        count \u003d len(list(dupl))"},{"line_number":40,"context_line":"        if count \u003e\u003d 2:"},{"line_number":41,"context_line":"            msg \u003d _(\u0027There are still %s duplicate quota_usage records. \u0027"},{"line_number":42,"context_line":"                    \u0027Please delete those duplicate records first.\u0027), count"},{"line_number":43,"context_line":"            raise exception.Duplicate(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_c90bb67c","line":40,"in_reply_to":"da20952f_ab07c16e","updated":"2015-09-14 01:32:21.000000000","message":"We could add some cinder-manage command to fix this before we begin to upgrade db or we can fix this automatic in here. DLM maybe can avoid this problem too in my mind. But still need those patch be merged...  So I feel the constraint is a better way we can merged it in L.","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"2b46ac73c727d264ac54767bb2e5da1ff3140742","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    ukey.create()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def downgrade(migrate_engine):"},{"line_number":54,"context_line":"    meta \u003d MetaData()"},{"line_number":55,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_e6ac4b8e","line":53,"updated":"2015-09-10 11:14:05.000000000","message":"drop downgrade? as openstack doesn\u0027t support it anymore","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9bee6190137421757809dc3ab264603f081dc7ff","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    ukey.create()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def downgrade(migrate_engine):"},{"line_number":54,"context_line":"    meta \u003d MetaData()"},{"line_number":55,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_2b1651f2","line":53,"in_reply_to":"da20952f_e6ac4b8e","updated":"2015-09-11 15:41:59.000000000","message":"We seem to still be adding this for all of our migrations...","commit_id":"3439f5014346331bb664e8fd93c44f356d58f5e4"}],"cinder/tests/unit/test_migrations.py":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"4d30fcd6b4dc124c0a3d77a1d09004a16cd4c325","unresolved":false,"context_lines":[{"line_number":925,"context_line":"                                             \"image_volume_cache_entries\")"},{"line_number":926,"context_line":"        self.assertFalse(has_table)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    def _check_056(self, engine, data):"},{"line_number":929,"context_line":"        \"\"\"Test adding unique constraint for quota_usages table.\"\"\""},{"line_number":930,"context_line":"        inspector \u003d reflection.Inspector.from_engine(engine)"},{"line_number":931,"context_line":"        constraints \u003d inspector.get_unique_constraints(\u0027quota_usages\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_ea1d4563","line":928,"updated":"2015-09-08 15:03:46.000000000","message":"From my interpretation this test is for the upgrade function, right? If so, I suggest renaming it something that makes it more clear that it is covering that function, something like you did for the _post_downgrade_056 function below maybe?","commit_id":"a9a76a6cb994a40b5aeb1b7d0e409f9802b1828e"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"f19eca3ab4ef3d3d8b1b5e2b39137da23214b4dc","unresolved":false,"context_lines":[{"line_number":925,"context_line":"                                             \"image_volume_cache_entries\")"},{"line_number":926,"context_line":"        self.assertFalse(has_table)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    def _check_056(self, engine, data):"},{"line_number":929,"context_line":"        \"\"\"Test adding unique constraint for quota_usages table.\"\"\""},{"line_number":930,"context_line":"        inspector \u003d reflection.Inspector.from_engine(engine)"},{"line_number":931,"context_line":"        constraints \u003d inspector.get_unique_constraints(\u0027quota_usages\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_5b1c006a","line":928,"in_reply_to":"da20952f_ea1d4563","updated":"2015-09-10 01:40:08.000000000","message":"You\u0027re right Kendall, it\u0027s for upgrade function. But I\u0027m afraid we shouldn\u0027t change the name, you can see other tests, we should keep the consistency.","commit_id":"a9a76a6cb994a40b5aeb1b7d0e409f9802b1828e"}]}
