)]}'
{"trove/common/strategies/cluster/experimental/galera_common/api.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"ec5a430a82a3ccad428ce1ba75496e8ee3d0b0cb","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        member_config \u003d {\"id\": db_info.id,"},{"line_number":102,"context_line":"                         \"instance_type\": \"member\"}"},{"line_number":103,"context_line":"        db_instances \u003d DBInstance.find_all(cluster_id\u003ddb_info.id).all()"},{"line_number":104,"context_line":"        name_index \u003d 1 + len(db_instances)"},{"line_number":105,"context_line":"        for instance in instances:"},{"line_number":106,"context_line":"            if not instance.get(\"name\"):"},{"line_number":107,"context_line":"                instance[\u0027name\u0027] \u003d \"%s-member-%s\" % (db_info.name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_c66f8cc3","line":104,"updated":"2016-10-25 09:46:30.000000000","message":"this is not guaranteed to be unique","commit_id":"749e1cce6dcc786cbbb9612a2d9326451a45063f"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"046f4b183bf16292785ff472d7aac85a24d7de1e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        member_config \u003d {\"id\": db_info.id,"},{"line_number":102,"context_line":"                         \"instance_type\": \"member\"}"},{"line_number":103,"context_line":"        db_instances \u003d DBInstance.find_all(cluster_id\u003ddb_info.id).all()"},{"line_number":104,"context_line":"        name_index \u003d 1 + len(db_instances)"},{"line_number":105,"context_line":"        for instance in instances:"},{"line_number":106,"context_line":"            if not instance.get(\"name\"):"},{"line_number":107,"context_line":"                instance[\u0027name\u0027] \u003d \"%s-member-%s\" % (db_info.name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_dc559850","line":104,"in_reply_to":"da6895a0_a6137365","updated":"2016-10-25 14:24:43.000000000","message":"Nope. Deleted instances don\u0027t always show up. deleted instances can be purged by an operator as a matter of good database sanity. this would mean that the index you obtain may be reused ...","commit_id":"749e1cce6dcc786cbbb9612a2d9326451a45063f"},{"author":{"_account_id":18627,"name":"yuanpeng","email":"ypnuaa037@126.com","username":"yuanpeng"},"change_message_id":"49b7dda827518b2aebe732f0ae5993f4ea0be911","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        member_config \u003d {\"id\": db_info.id,"},{"line_number":102,"context_line":"                         \"instance_type\": \"member\"}"},{"line_number":103,"context_line":"        db_instances \u003d DBInstance.find_all(cluster_id\u003ddb_info.id).all()"},{"line_number":104,"context_line":"        name_index \u003d 1 + len(db_instances)"},{"line_number":105,"context_line":"        for instance in instances:"},{"line_number":106,"context_line":"            if not instance.get(\"name\"):"},{"line_number":107,"context_line":"                instance[\u0027name\u0027] \u003d \"%s-member-%s\" % (db_info.name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_5fcb311e","line":104,"in_reply_to":"da6895a0_bf0d3639","updated":"2016-10-26 03:09:58.000000000","message":"Matthew, thanks for your support, current implementation is too simple and if I create cluster with default instance name, then grow will simplely cause name reused which starts from 1 again, so I made this change. But I also just find out shrink by name failed in this auto-test, I will take a look at if I can solve this problem.","commit_id":"749e1cce6dcc786cbbb9612a2d9326451a45063f"},{"author":{"_account_id":15321,"name":"Matthew Van Dijk","email":"mvandijk@tesora.com","username":"mvandijk"},"change_message_id":"bbf3802983dd533dddf6c4d3a54aba1102286101","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        member_config \u003d {\"id\": db_info.id,"},{"line_number":102,"context_line":"                         \"instance_type\": \"member\"}"},{"line_number":103,"context_line":"        db_instances \u003d DBInstance.find_all(cluster_id\u003ddb_info.id).all()"},{"line_number":104,"context_line":"        name_index \u003d 1 + len(db_instances)"},{"line_number":105,"context_line":"        for instance in instances:"},{"line_number":106,"context_line":"            if not instance.get(\"name\"):"},{"line_number":107,"context_line":"                instance[\u0027name\u0027] \u003d \"%s-member-%s\" % (db_info.name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_a6137365","line":104,"in_reply_to":"da6895a0_c66f8cc3","updated":"2016-10-25 13:29:41.000000000","message":"It isn\u0027t? Do deleted instances not count? I don\u0027t know the behaviour of find_all in this case.","commit_id":"749e1cce6dcc786cbbb9612a2d9326451a45063f"},{"author":{"_account_id":18627,"name":"yuanpeng","email":"ypnuaa037@126.com","username":"yuanpeng"},"change_message_id":"49b7dda827518b2aebe732f0ae5993f4ea0be911","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        member_config \u003d {\"id\": db_info.id,"},{"line_number":102,"context_line":"                         \"instance_type\": \"member\"}"},{"line_number":103,"context_line":"        db_instances \u003d DBInstance.find_all(cluster_id\u003ddb_info.id).all()"},{"line_number":104,"context_line":"        name_index \u003d 1 + len(db_instances)"},{"line_number":105,"context_line":"        for instance in instances:"},{"line_number":106,"context_line":"            if not instance.get(\"name\"):"},{"line_number":107,"context_line":"                instance[\u0027name\u0027] \u003d \"%s-member-%s\" % (db_info.name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_df690127","line":104,"in_reply_to":"da6895a0_dc559850","updated":"2016-10-26 03:09:58.000000000","message":"Amrith, thanks for your reply, I didn\u0027t go into the behaviour of find_all in this case, I just took \u0027shrink\u0027 code for reference. For that case you said, maybe the method of judging empty cluster in shrink api also has problem. I will further test the code, and make this change better, thanks","commit_id":"749e1cce6dcc786cbbb9612a2d9326451a45063f"},{"author":{"_account_id":15321,"name":"Matthew Van Dijk","email":"mvandijk@tesora.com","username":"mvandijk"},"change_message_id":"883669074e755b4d4cc65dee6d3f4a81a357c12a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        member_config \u003d {\"id\": db_info.id,"},{"line_number":102,"context_line":"                         \"instance_type\": \"member\"}"},{"line_number":103,"context_line":"        db_instances \u003d DBInstance.find_all(cluster_id\u003ddb_info.id).all()"},{"line_number":104,"context_line":"        name_index \u003d 1 + len(db_instances)"},{"line_number":105,"context_line":"        for instance in instances:"},{"line_number":106,"context_line":"            if not instance.get(\"name\"):"},{"line_number":107,"context_line":"                instance[\u0027name\u0027] \u003d \"%s-member-%s\" % (db_info.name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6895a0_bf0d3639","line":104,"in_reply_to":"da6895a0_dc559850","updated":"2016-10-25 14:34:53.000000000","message":"Ok good to know. This change is at least better than the current implementation and is the same method we use for other datastores. We either block this and ask \"please fix everything\" (which we don\u0027t know how to do yet) or approve this to make the behaviour consistent.","commit_id":"749e1cce6dcc786cbbb9612a2d9326451a45063f"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"2a5aa93639b041bd56102c2399c9421283772286","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        max_db_index \u003d 0"},{"line_number":106,"context_line":"        default_name_prefix \u003d \"%s-member-\" % db_info.name"},{"line_number":107,"context_line":"        for db_instance in db_instances:"},{"line_number":108,"context_line":"            if default_name_prefix in db_instance.name:"},{"line_number":109,"context_line":"                index_string \u003d db_instance.name[len(default_name_prefix):]"},{"line_number":110,"context_line":"                if index_string.isdigit():"},{"line_number":111,"context_line":"                    max_db_index \u003d max(max_db_index, int(index_string))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_af3aa6cb","line":108,"range":{"start_line":108,"start_character":15,"end_line":108,"end_character":54},"updated":"2016-10-27 15:54:15.000000000","message":"This will count user-defined names that contain this substring which is probably wrong. It should be startswith() instead","commit_id":"29db2ee6f1339fc37e227223b5617196cf1d298c"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"7e81b47eacf5ef474b3b0c057cb6dc92390e1a5c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        member_config \u003d {\"id\": db_info.id,"},{"line_number":102,"context_line":"                         \"instance_type\": \"member\"}"},{"line_number":103,"context_line":"        # Prevent duplicates of name index under certain condition"},{"line_number":104,"context_line":"        db_instances \u003d DBInstance.find_all(cluster_id\u003ddb_info.id).all()"},{"line_number":105,"context_line":"        max_db_index \u003d 0"},{"line_number":106,"context_line":"        default_name_prefix \u003d \"%s-member-\" % db_info.name"},{"line_number":107,"context_line":"        for db_instance in db_instances:"},{"line_number":108,"context_line":"            if default_name_prefix in db_instance.name:"},{"line_number":109,"context_line":"                index_string \u003d db_instance.name[len(default_name_prefix):]"},{"line_number":110,"context_line":"                if index_string.isdigit():"},{"line_number":111,"context_line":"                    max_db_index \u003d max(max_db_index, int(index_string))"},{"line_number":112,"context_line":"        name_index \u003d 1 + max_db_index"},{"line_number":113,"context_line":"        for instance in instances:"},{"line_number":114,"context_line":"            if not instance.get(\"name\"):"},{"line_number":115,"context_line":"                instance[\u0027name\u0027] \u003d \"%s-member-%s\" % (db_info.name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_74aa21d6","line":112,"range":{"start_line":104,"start_character":8,"end_line":112,"end_character":37},"updated":"2016-10-27 15:50:32.000000000","message":"This feels like a lot of complexity for a very non-critical task.\n\nNow we will have the same problem with other clusters as well. Replica names will suffer this issue too...\n\nThe \u0027real\u0027 fix to this would be keeping the unique index in database which is a big thing for something like this.\n\nThe purpose of the index really is to make the name unique not count instances.\nAn alternative solution that has been suggested to me is appending date/time to it. That would make it unique without need to go into database + it would also provide additional information (age) on the node.","commit_id":"29db2ee6f1339fc37e227223b5617196cf1d298c"}]}
