)]}'
{"dragonflow/cli/df_db.py":[{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"ab8d1eb8baa9abd8082375c60736b14707a589e3","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    print(\u0027------------------------------------------------------------\u0027)"},{"line_number":71,"context_line":"    print(\u0027Table \u003d \u0027 + table)"},{"line_number":72,"context_line":"    print(\u0027------------------------------------------------------------\u0027)"},{"line_number":73,"context_line":"    try:"},{"line_number":74,"context_line":"        for key in keys:"},{"line_number":75,"context_line":"            value \u003d db_driver.get_key(table, key)"},{"line_number":76,"context_line":"            if value:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_f20c5e96","line":73,"range":{"start_line":73,"start_character":7,"end_line":73,"end_character":8},"updated":"2016-10-29 07:42:26.000000000","message":"I think those \u0027try catch\u0027 code may be better to move to the position inside the \u0027for\u0027 loop and not return. Because if one key was just removed while running this method, we could just not print it rather than to break the whole process.","commit_id":"cb57b5ca5e09719afb577b713076cb53a17adc07"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"1d1f1d60f39e52f4bb4cdc7d4c36ef0c616dcf15","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    print(\u0027------------------------------------------------------------\u0027)"},{"line_number":71,"context_line":"    print(\u0027Table \u003d \u0027 + table)"},{"line_number":72,"context_line":"    print(\u0027------------------------------------------------------------\u0027)"},{"line_number":73,"context_line":"    try:"},{"line_number":74,"context_line":"        for key in keys:"},{"line_number":75,"context_line":"            value \u003d db_driver.get_key(table, key)"},{"line_number":76,"context_line":"            if value:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_928fa2cb","line":73,"range":{"start_line":73,"start_character":7,"end_line":73,"end_character":8},"in_reply_to":"ba5da102_f20c5e96","updated":"2016-10-29 08:20:46.000000000","message":"ok, reasonable","commit_id":"cb57b5ca5e09719afb577b713076cb53a17adc07"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"e980cc12900371ea9fdaa4a5db20ed88fc0ef18b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            if value:"},{"line_number":78,"context_line":"                print(\u0027Key \u003d \u0027 + key + \u0027 , Value \u003d \u0027 + value)"},{"line_number":79,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":80,"context_line":"            print(\u0027key not found: \u0027 + key)"},{"line_number":81,"context_line":"    print(\u0027 \u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_2f166855","line":80,"range":{"start_line":80,"start_character":19,"end_line":80,"end_character":22},"updated":"2016-10-31 08:47:18.000000000","message":"Key.","commit_id":"c02ea1d712c0c21820e3c952e326b9a219bd989f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3ed96f4d72f61e2d17b64e10c7d09af1570b0b2d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            value \u003d db_driver.get_key(table, key)"},{"line_number":77,"context_line":"            if value:"},{"line_number":78,"context_line":"                print(\u0027Key \u003d \u0027 + key + \u0027 , Value \u003d \u0027 + value)"},{"line_number":79,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":80,"context_line":"            print(\u0027key not found: \u0027 + key)"},{"line_number":81,"context_line":"    print(\u0027 \u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_1959f2fe","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":42},"updated":"2016-10-31 03:52:23.000000000","message":"Why would a key not found if it has just been just gotten from  get_all_keys?","commit_id":"c02ea1d712c0c21820e3c952e326b9a219bd989f"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"d6989f297e3b53791ba85389916a9a08710774a5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            value \u003d db_driver.get_key(table, key)"},{"line_number":77,"context_line":"            if value:"},{"line_number":78,"context_line":"                print(\u0027Key \u003d \u0027 + key + \u0027 , Value \u003d \u0027 + value)"},{"line_number":79,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":80,"context_line":"            print(\u0027key not found: \u0027 + key)"},{"line_number":81,"context_line":"    print(\u0027 \u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_dc7928fe","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":42},"in_reply_to":"ba5da102_1959f2fe","updated":"2016-10-31 07:10:18.000000000","message":"network disconnection, maybe.","commit_id":"c02ea1d712c0c21820e3c952e326b9a219bd989f"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"d00f2c18f1bb3646b4ed41af9cd3c9d4d370c541","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            if value:"},{"line_number":78,"context_line":"                print(\u0027Key \u003d \u0027 + key + \u0027 , Value \u003d \u0027 + value)"},{"line_number":79,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":80,"context_line":"            print(\u0027key not found: \u0027 + key)"},{"line_number":81,"context_line":"    print(\u0027 \u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_7247631d","line":80,"range":{"start_line":80,"start_character":19,"end_line":80,"end_character":22},"in_reply_to":"ba5da102_2f166855","updated":"2016-10-31 08:50:43.000000000","message":"Done","commit_id":"c02ea1d712c0c21820e3c952e326b9a219bd989f"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"639641887f78eb7d7a0f6d10060dec4e2f12fc4c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            value \u003d db_driver.get_key(table, key)"},{"line_number":77,"context_line":"            if value:"},{"line_number":78,"context_line":"                print(\u0027Key \u003d \u0027 + key + \u0027 , Value \u003d \u0027 + value)"},{"line_number":79,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":80,"context_line":"            print(\u0027key not found: \u0027 + key)"},{"line_number":81,"context_line":"    print(\u0027 \u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_cf824c52","line":80,"range":{"start_line":79,"start_character":0,"end_line":80,"end_character":42},"in_reply_to":"ba5da102_dc7928fe","updated":"2016-10-31 07:55:51.000000000","message":"lost data/network disconnection/removed in a while......","commit_id":"c02ea1d712c0c21820e3c952e326b9a219bd989f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"3ed96f4d72f61e2d17b64e10c7d09af1570b0b2d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"def clean_whole_table(db_driver, table):"},{"line_number":107,"context_line":"    try:"},{"line_number":108,"context_line":"        keys \u003d db_driver.get_all_keys(table)"},{"line_number":109,"context_line":"        for key in keys:"},{"line_number":110,"context_line":"            db_driver.delete_key(table, key)"},{"line_number":111,"context_line":"    except df_exceptions.DBKeyNotFound as e:"},{"line_number":112,"context_line":"        print(\u0027Table or key not found: \u0027 + str(e))"},{"line_number":113,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_395cf6ec","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":44},"updated":"2016-10-31 03:52:23.000000000","message":"ditto","commit_id":"c02ea1d712c0c21820e3c952e326b9a219bd989f"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d36a69e343d6177ce318945a5816c44c41d6c8a2","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    try:"},{"line_number":108,"context_line":"        keys \u003d db_driver.get_all_keys(table)"},{"line_number":109,"context_line":"        for key in keys:"},{"line_number":110,"context_line":"            db_driver.delete_key(table, key)"},{"line_number":111,"context_line":"    except df_exceptions.DBKeyNotFound as e:"},{"line_number":112,"context_line":"        print(\u0027Table or key not found: \u0027 + str(e))"},{"line_number":113,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_013dbbc3","line":110,"updated":"2016-11-01 22:07:28.000000000","message":"If an exception is thrown in the middle of this loop, the rest of the keys are not deleted. Maybe wrap each call to delete_key with a try-catch?","commit_id":"5b3077b9d0f5f025bdc0934599819096ec7b2f30"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"2cfb7edfbb5c952cc708f06535c2870fae28d5b0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    try:"},{"line_number":108,"context_line":"        keys \u003d db_driver.get_all_keys(table)"},{"line_number":109,"context_line":"        for key in keys:"},{"line_number":110,"context_line":"            db_driver.delete_key(table, key)"},{"line_number":111,"context_line":"    except df_exceptions.DBKeyNotFound as e:"},{"line_number":112,"context_line":"        print(\u0027Table or key not found: \u0027 + str(e))"},{"line_number":113,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_2a8b6fc4","line":110,"in_reply_to":"ba5da102_013dbbc3","updated":"2016-11-02 08:33:35.000000000","message":"I use just one try-catch because both get_all_keys() and delete_key() raise the same DBKeyNotFound exception, if catch exception in the loop, we will have two try-catch in this function, what\u0027s more, it\u0027s common situation to terminate the command if there happens some exception, if you want to delete all the data, you can type the command again, what\u0027s your opinion?","commit_id":"5b3077b9d0f5f025bdc0934599819096ec7b2f30"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"718324c6a6cad835bb815f4f2ebed0d57a043ec4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    try:"},{"line_number":108,"context_line":"        keys \u003d db_driver.get_all_keys(table)"},{"line_number":109,"context_line":"        for key in keys:"},{"line_number":110,"context_line":"            db_driver.delete_key(table, key)"},{"line_number":111,"context_line":"    except df_exceptions.DBKeyNotFound as e:"},{"line_number":112,"context_line":"        print(\u0027Table or key not found: \u0027 + str(e))"},{"line_number":113,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_341e170c","line":110,"in_reply_to":"ba5da102_29b6d6f8","updated":"2016-11-04 02:24:12.000000000","message":"All right, make sense","commit_id":"5b3077b9d0f5f025bdc0934599819096ec7b2f30"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"eeb15110e85a1357686a3e77dcb4abd401e99a21","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    try:"},{"line_number":108,"context_line":"        keys \u003d db_driver.get_all_keys(table)"},{"line_number":109,"context_line":"        for key in keys:"},{"line_number":110,"context_line":"            db_driver.delete_key(table, key)"},{"line_number":111,"context_line":"    except df_exceptions.DBKeyNotFound as e:"},{"line_number":112,"context_line":"        print(\u0027Table or key not found: \u0027 + str(e))"},{"line_number":113,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_29b6d6f8","line":110,"in_reply_to":"ba5da102_2a8b6fc4","updated":"2016-11-03 16:04:19.000000000","message":"I don\u0027t think a DBKeyNotFound exception should stop the flow of a delete command. Especially clean_whole_table, which is supposed to leave the database empty.\n\nI also don\u0027t feel there\u0027s a problem with two try...catch clauses in a function, and they don\u0027t have to be nested in this case.","commit_id":"5b3077b9d0f5f025bdc0934599819096ec7b2f30"}]}
