)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6913dfd695c78359325d0b5b50328a50723efd5e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2014-08-12 15:01:19 +0400"},{"line_number":4,"context_line":"Commit:     Ilya Tyaptin \u003cityaptin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-20 16:01:10 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[HBase] Catch AlreadyExists error in Connection upgrade"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now in upstream, if HBase table exists when we upgrade"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1abeadc6_8c72760f","line":6,"updated":"2014-08-20 16:23:50.000000000","message":"But you don\u0027t actually upgrade Connection but tables. IMHO it\u0027s better to use \"Catch AlreadyExists error while table upgrade\"","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6913dfd695c78359325d0b5b50328a50723efd5e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-08-20 16:01:10 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[HBase] Catch AlreadyExists error in Connection upgrade"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now in upstream, if HBase table exists when we upgrade"},{"line_number":10,"context_line":"backend AlreadyExists exception is raised. Also"},{"line_number":11,"context_line":"exception raising interrupts creating of other tables."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1abeadc6_2c608200","line":8,"updated":"2014-08-20 16:23:50.000000000","message":"AlreadyExists exception should not interrupt creation of other tables. If table already exists we may just use it and ignore exception.\n\n\nIMHO, the above would be clearer","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"}],"ceilometer/alarm/storage/impl_hbase.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6913dfd695c78359325d0b5b50328a50723efd5e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            for table in tables:"},{"line_number":104,"context_line":"                try:"},{"line_number":105,"context_line":"                    conn.create_table(table, {\u0027f\u0027: dict()})"},{"line_number":106,"context_line":"                except ttypes.AlreadyExists:"},{"line_number":107,"context_line":"                    if conn.table_prefix:"},{"line_number":108,"context_line":"                        table \u003d (\"%(table_prefix)s\""},{"line_number":109,"context_line":"                                 \"%(separator)s\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_2ccc026a","line":106,"updated":"2014-08-20 16:23:50.000000000","message":"why are you checking only prefix but not separator? or table_name?","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"7cf85c313926e9a6d44b6b0d188d939db6730f6a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            for table in tables:"},{"line_number":104,"context_line":"                try:"},{"line_number":105,"context_line":"                    conn.create_table(table, {\u0027f\u0027: dict()})"},{"line_number":106,"context_line":"                except ttypes.AlreadyExists:"},{"line_number":107,"context_line":"                    if conn.table_prefix:"},{"line_number":108,"context_line":"                        table \u003d (\"%(table_prefix)s\""},{"line_number":109,"context_line":"                                 \"%(separator)s\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_cdf6118f","line":106,"in_reply_to":"1abeadc6_2ccc026a","updated":"2014-08-21 08:08:25.000000000","message":"Nadya, table_prefix_separator is \u0027_\u0027 by default, if \u0027table\u0027 variable is None we can\u0027t catch AlreadyExists exception. Only table_prefix may be \u0027None\u0027 and we\u0027ll have \u0027None_table\u0027  name without checking in this case.","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"38281568b5df5290da5475417d8cf46e687da01c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            for table in tables:"},{"line_number":104,"context_line":"                try:"},{"line_number":105,"context_line":"                    conn.create_table(table, {\u0027f\u0027: dict()})"},{"line_number":106,"context_line":"                except ttypes.AlreadyExists:"},{"line_number":107,"context_line":"                    if conn.table_prefix:"},{"line_number":108,"context_line":"                        table \u003d (\"%(table_prefix)s\""},{"line_number":109,"context_line":"                                 \"%(separator)s\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_10181e74","line":106,"in_reply_to":"1abeadc6_cdf6118f","updated":"2014-08-21 08:24:42.000000000","message":"thanks for explanation!","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6913dfd695c78359325d0b5b50328a50723efd5e","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":113,"context_line":"                                      table_name\u003dtable))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name)\""},{"line_number":116,"context_line":"                               \"it have already exists. Ignoring error\")"},{"line_number":117,"context_line":"                             % {\u0027table_name\u0027: table})"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_ec804af9","line":115,"updated":"2014-08-20 16:23:50.000000000","message":"\u0027It already exists\u0027 is better :) And please add the space before \u0027it\u0027","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"aaf09c8e080309a36e068752d8f9aac084db8155","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":113,"context_line":"                                      table_name\u003dtable))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name)\""},{"line_number":116,"context_line":"                               \"it have already exists. Ignoring error\")"},{"line_number":117,"context_line":"                             % {\u0027table_name\u0027: table})"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_ac1492a0","line":115,"updated":"2014-08-20 16:24:30.000000000","message":"It is missed a space at the end of the string.","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"7cf85c313926e9a6d44b6b0d188d939db6730f6a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":113,"context_line":"                                      table_name\u003dtable))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name)\""},{"line_number":116,"context_line":"                               \"it have already exists. Ignoring error\")"},{"line_number":117,"context_line":"                             % {\u0027table_name\u0027: table})"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_4d320160","line":115,"in_reply_to":"1abeadc6_ac1492a0","updated":"2014-08-21 08:08:25.000000000","message":"Done","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"7cf85c313926e9a6d44b6b0d188d939db6730f6a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":113,"context_line":"                                      table_name\u003dtable))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name)\""},{"line_number":116,"context_line":"                               \"it have already exists. Ignoring error\")"},{"line_number":117,"context_line":"                             % {\u0027table_name\u0027: table})"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_2d2dc5fe","line":115,"in_reply_to":"1abeadc6_ec804af9","updated":"2014-08-21 08:08:25.000000000","message":"Done","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"0c973b8502ca12db6c723d9d770216394f1070b2","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":114,"context_line":"                                      table_name\u003dtable))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name) \""},{"line_number":117,"context_line":"                               \"it already exists. Ignoring error\")"},{"line_number":118,"context_line":"                             % {\u0027table_name\u0027: table})"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_18f6d45d","line":116,"updated":"2014-09-19 02:56:33.000000000","message":"-1: I think it should be %(table_name)s instead. Since this branch is quite simple, UT doesn\u0027t cover this is acceptable.","commit_id":"492a621fb02b8f321dbb863b129f9864587e4df9"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"f0fe36bda86a2f6056f7c6af47149c44244b6bc3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def upgrade(self):"},{"line_number":102,"context_line":"        with self.conn_pool.connection() as conn:"},{"line_number":103,"context_line":"            tables \u003d [self.ALARM_HISTORY_TABLE, self.ALARM_TABLE]"},{"line_number":104,"context_line":"            for table in tables:"},{"line_number":105,"context_line":"                try:"},{"line_number":106,"context_line":"                    conn.create_table(table, {\u0027f\u0027: dict()})"},{"line_number":107,"context_line":"                except ttypes.AlreadyExists:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_da66f9ba","line":104,"updated":"2014-09-19 10:50:45.000000000","message":"this code is identical for this and next file you changed, probably we may create a helper method and use it? in some hbase_utils","commit_id":"8f9422921e319d282bcdc491bc0048e3565658ed"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"0b8769aa61e3739612581ef51db12da8cc90bdc5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def upgrade(self):"},{"line_number":102,"context_line":"        with self.conn_pool.connection() as conn:"},{"line_number":103,"context_line":"            tables \u003d [self.ALARM_HISTORY_TABLE, self.ALARM_TABLE]"},{"line_number":104,"context_line":"            for table in tables:"},{"line_number":105,"context_line":"                try:"},{"line_number":106,"context_line":"                    conn.create_table(table, {\u0027f\u0027: dict()})"},{"line_number":107,"context_line":"                except ttypes.AlreadyExists:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_3ab465f1","line":104,"in_reply_to":"fa98f980_da66f9ba","updated":"2014-09-19 10:55:33.000000000","message":"Done","commit_id":"8f9422921e319d282bcdc491bc0048e3565658ed"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"92f4b3a76f2f402ebea38ec5deb5075938732a0a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import happybase"},{"line_number":19,"context_line":"from happybase.hbase import ttypes"},{"line_number":20,"context_line":"from oslo.utils import netutils"},{"line_number":21,"context_line":"from six.moves.urllib import parse as urlparse"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_1a4de199","line":19,"updated":"2014-09-19 11:17:25.000000000","message":"remove this line","commit_id":"2cdabe29d93056445c468e9607aa56bbb2e4d82c"}],"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6913dfd695c78359325d0b5b50328a50723efd5e","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            for table in tables:"},{"line_number":167,"context_line":"                try:"},{"line_number":168,"context_line":"                    conn.create_table(table, {\u0027f\u0027: dict(max_versions\u003d1)})"},{"line_number":169,"context_line":"                except ttypes.AlreadyExists:"},{"line_number":170,"context_line":"                    if conn.table_prefix:"},{"line_number":171,"context_line":"                        table \u003d (\"%(table_prefix)s\""},{"line_number":172,"context_line":"                                 \"%(separator)s\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_ece5aadc","line":169,"updated":"2014-08-20 16:23:50.000000000","message":"ditto","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"6913dfd695c78359325d0b5b50328a50723efd5e","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                                 dict(table_prefix\u003dconn.table_prefix,"},{"line_number":175,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":176,"context_line":"                                      table_name\u003dtable))"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name)\""},{"line_number":179,"context_line":"                               \"it have already exists. Ignoring error\")"},{"line_number":180,"context_line":"                             % {\u0027table_name\u0027: table})"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_4cd05ef6","line":177,"updated":"2014-08-20 16:23:50.000000000","message":"...","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"aaf09c8e080309a36e068752d8f9aac084db8155","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":176,"context_line":"                                      table_name\u003dtable))"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name)\""},{"line_number":179,"context_line":"                               \"it have already exists. Ignoring error\")"},{"line_number":180,"context_line":"                             % {\u0027table_name\u0027: table})"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_eccf6a27","line":178,"updated":"2014-08-20 16:24:30.000000000","message":"ditto (missing space)","commit_id":"a315de2e80fd6649527b8786d09f6ef0a0bb35cb"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"0c973b8502ca12db6c723d9d770216394f1070b2","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                      separator\u003dconn.table_prefix_separator,"},{"line_number":177,"context_line":"                                      table_name\u003dtable))"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"                    LOG.warn(_(\"Cannot create table %(table_name) \""},{"line_number":180,"context_line":"                               \"it already exists. Ignoring error\")"},{"line_number":181,"context_line":"                             % {\u0027table_name\u0027: table})"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_98a1e448","line":179,"updated":"2014-09-19 02:56:33.000000000","message":"ditto","commit_id":"492a621fb02b8f321dbb863b129f9864587e4df9"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"92f4b3a76f2f402ebea38ec5deb5075938732a0a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import happybase"},{"line_number":21,"context_line":"from happybase.hbase import ttypes"},{"line_number":22,"context_line":"from oslo.utils import netutils"},{"line_number":23,"context_line":"from oslo.utils import timeutils"},{"line_number":24,"context_line":"from six.moves.urllib import parse as urlparse"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_fa49fd8e","line":21,"updated":"2014-09-19 11:17:25.000000000","message":"remove this line","commit_id":"2cdabe29d93056445c468e9607aa56bbb2e4d82c"}]}
