)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"d062120bb414f5183af42f057fb79bb1c313ab5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"157c8dcd_29167c6f","updated":"2024-01-11 03:48:00.000000000","message":"A small tip: you can run tox -e pep8 locally.","commit_id":"84ab42d73fcbfff158749cd42f8f9a2f8f178950"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"2c537ff8add2b850ad707d3b760060d857874247","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"eda09382_5174ceea","in_reply_to":"157c8dcd_29167c6f","updated":"2024-03-30 01:59:11.000000000","message":"thank you","commit_id":"84ab42d73fcbfff158749cd42f8f9a2f8f178950"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"0384e63e3999f7b9281a1c6f76be1868a8a6584e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"91482102_958ba7d9","updated":"2024-04-02 06:31:24.000000000","message":"It\u0027s a great feature. It would be better to add CI tests","commit_id":"3b370ca6ce39afed7346718910656c6ccae04502"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"09742ac3f6d1130c63e312c0461e11f764afdeca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a82b5189_0a078ea4","in_reply_to":"91482102_958ba7d9","updated":"2024-04-02 06:42:02.000000000","message":"this feature it release in next cycle.","commit_id":"3b370ca6ce39afed7346718910656c6ccae04502"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"e5c36eccb165f690880753d0f133526dffcbd630","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d7bc247d_703c6977","updated":"2024-05-09 06:48:11.000000000","message":"@wu.chunyang Help me review this patch, please.","commit_id":"91aceeca34f994044941106f4606ea0bfe94cf01"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"58928abc1675ecadd3bbeafe7da8226c4ec9a01e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"636558fd_f4111d95","updated":"2024-05-11 02:58:58.000000000","message":"CI test is here: https://review.opendev.org/c/openstack/trove/+/919421","commit_id":"91aceeca34f994044941106f4606ea0bfe94cf01"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"4e6143f2cb09837a7687ec7d5c42af0287a4bcd1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d0ae3484_76c9f65b","updated":"2024-05-11 10:53:21.000000000","message":"Hi, CI with trove backend failed.\n`oslo_config.cfg.NoSuchOptError: no such option database_service_gid in group [DEFAULT]\\n\u0027`\n\nas per: https://zuul.opendev.org/t/openstack/build/04213fba2c7f4f10ad597938c5b316ec/log/controller/logs/screen-tr-cond.txt","commit_id":"91aceeca34f994044941106f4606ea0bfe94cf01"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"55935d9c7a35811aac087e53e967ba5259cb38b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a856e845_56036514","in_reply_to":"d0ae3484_76c9f65b","updated":"2024-05-13 01:58:41.000000000","message":"sorry about my problem. can you help me review before this patch https://review.opendev.org/c/openstack/trove/+/889797?","commit_id":"91aceeca34f994044941106f4606ea0bfe94cf01"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"bd1ea9a9dd2495bea1a2a8719a258fb2dec47e37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ac64e48c_bc89603d","in_reply_to":"d7bc247d_703c6977","updated":"2024-05-10 14:24:09.000000000","message":"Ok, this is really a large patch. I will add a CI tests for this patch, thanks for your great work!!!","commit_id":"91aceeca34f994044941106f4606ea0bfe94cf01"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"a5080931d5fbeb70648a0c61640a5d64fbb7256f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4f0091db_5f2621bc","updated":"2024-05-31 06:32:08.000000000","message":"Hi Bo, Trove CI is broken now, we need to wait for this https://review.opendev.org/c/openstack/trove/+/918661 merged.","commit_id":"3353bab8d4a69ab10a02a4d7dbf4228bb62d64b0"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"141c18b1d3fbf830d29ecd556cf136cfbeb257d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"b0782f14_be07957d","in_reply_to":"4f0091db_5f2621bc","updated":"2024-06-18 01:30:47.000000000","message":"I had rebease this patch on top of master branch","commit_id":"3353bab8d4a69ab10a02a4d7dbf4228bb62d64b0"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"2a6c9889f4ee5ad6088fe29a94af4ddf94ba4850","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"c8f45573_92a6aca4","updated":"2024-06-20 01:29:54.000000000","message":"Currently, I too busy, I will write some unitest to pass tox-cover in the next time.","commit_id":"bf21ffc1048f9cd2e23dd0828be8872680743171"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"c7c8c05833e939cf20938b1f0dc95856d377e3c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"b48891a5_2370fe80","updated":"2024-07-11 02:28:01.000000000","message":"As per: https://zuul.opendev.org/t/openstack/build/b14bee38ae8342ae9ef41edd89e65523/log/controller/logs/screen-tr-cond.txt#833","commit_id":"c1e03f96d6cd1bfe3b7119f319533c05b561b9b8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"9caf70d71dabdb369cb4ffeb3b6ef21f58c67076","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"02c20d02_3f183f02","updated":"2024-07-11 02:27:21.000000000","message":"Hi, The tests wasn\u0027t passed. ``oslo_config.cfg.NoSuchOptError: no such option database_service_gid in group [DEFAULT]``","commit_id":"c1e03f96d6cd1bfe3b7119f319533c05b561b9b8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"e8635ffc193f2a83f0bcf4798fb7c5ecc62cdb32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"d59e7c82_c67343a4","in_reply_to":"02c20d02_3f183f02","updated":"2024-07-11 02:32:04.000000000","message":"ok. I need you help me review this patch: https://review.opendev.org/c/openstack/trove/+/889797 before.\n\nIt\u0027s depend on above patch","commit_id":"c1e03f96d6cd1bfe3b7119f319533c05b561b9b8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"2c878c45e6c39399b54daa3555e782239c9e2d31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"5ff120a4_cb31cf31","in_reply_to":"d59e7c82_c67343a4","updated":"2024-07-11 03:00:37.000000000","message":"ok, i will review it later.  you can also add \"Depends-On\" directive in this commit message. so that we can test these commits together. please refer to: https://review.opendev.org/c/openstack/trove/+/919421","commit_id":"c1e03f96d6cd1bfe3b7119f319533c05b561b9b8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"7924f3ca08ee4c6128f7ead23dcdf015a380ea10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"ebb39c11_7990b924","updated":"2024-07-30 03:49:21.000000000","message":"recheck","commit_id":"11624dc9e2999c93f4734f7e20c4dd2def24e5eb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"6e0ba5df924f430120a684fc1fa2b3520c452f70","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"b3c8fed0_f149abb0","updated":"2024-07-30 14:57:40.000000000","message":"there were still errors here. https://zuul.opendev.org/t/openstack/build/b14bee38ae8342ae9ef41edd89e65523/log/controller/logs/guest-agent-logs/8db0cf98-4067-492d-8040-3a0ea2664908/log/trove/trove-guestagent_log.txt\n\n`oslo_config.cfg.NoSuchOptError: no such option database_service_gid in group [DEFAULT]`","commit_id":"11624dc9e2999c93f4734f7e20c4dd2def24e5eb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"2ffd48a8561c23dbe723acc6bd12a9e3594f6bd7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"05f6ded3_c480101e","in_reply_to":"b3c8fed0_f149abb0","updated":"2024-07-31 01:38:24.000000000","message":"yup. I need review and merged this patch: https://review.opendev.org/c/openstack/trove/+/889797 before.\nLet\u0027s help me.","commit_id":"11624dc9e2999c93f4734f7e20c4dd2def24e5eb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"bf8b1ea75216bcd23bf7e14715c06aadd0810815","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"f184aa4c_0acfee45","updated":"2024-08-21 06:56:31.000000000","message":"Hi, Great work! the cinder backend has been tested successfully. however, in our gate, we can\u0027t test s3 backend, Did you test s3 backend in your environment?","commit_id":"fbf055916cbb9928319e9f7d7abb84fa9d935447"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cad4bfab5715e166fa75b4aa6a33c942059ebfc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"e4987224_e30fa7ae","in_reply_to":"4c247272_c533c6f2","updated":"2024-08-21 07:04:15.000000000","message":"s3 just is work with in my environment. i don\u0027t sure it can match with any other company\u0027s business.","commit_id":"fbf055916cbb9928319e9f7d7abb84fa9d935447"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"001c91fa0310d898416daa20ab0d2e9ece06ef50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"9342ffb4_0cc69045","in_reply_to":"e4987224_e30fa7ae","updated":"2024-08-21 07:39:25.000000000","message":"s3 backend can be like a swift. in the my environment. it can work right.","commit_id":"fbf055916cbb9928319e9f7d7abb84fa9d935447"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"df3591892b81573dec791c8086e2fdc1963d5a1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"4c247272_c533c6f2","in_reply_to":"f184aa4c_0acfee45","updated":"2024-08-21 07:02:08.000000000","message":"yup. ok. i will review my code again.","commit_id":"fbf055916cbb9928319e9f7d7abb84fa9d935447"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"f9dcf1c8_ec07339c","updated":"2024-08-28 07:50:02.000000000","message":"It LGTM overall, thanks for the great work!\nAlso, did you test this patch in your production? are there any limits for cinder driver?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cf71b8a5b5211fd538ea8a9e308ad0daa270ac26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"6f07d0e3_ebe57b78","updated":"2024-08-27 04:17:56.000000000","message":"recheck","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"428839103ff15f92dfe2a24fba771e42acdd6678","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"98ab3fc2_be39c602","updated":"2024-08-27 10:51:23.000000000","message":"recheck","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b24a8cec8e1919df24209edf8056bc3d49104d1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"6137e291_2c5c1723","updated":"2024-08-29 07:02:27.000000000","message":"well, It would be nice to add a release note, this is a wonderful feature~","commit_id":"df219dbe278d5a1a21dbec783b09ef76ffc83b48"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1d5b36c8cd1e517aaf07706b2822f4918c5f05f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"69280cb1_81af3c97","updated":"2024-09-24 08:19:25.000000000","message":"also remember the release note.","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"168356ed19687c8fafdc4d1265d8a2e05ba4e1ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"28904738_cc42a87e","updated":"2024-09-12 01:39:58.000000000","message":"i need support review this patch.","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"32efa5857f24566e4751e8ac8e09bbf667f4c455","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"842afa03_c6974d39","in_reply_to":"28904738_cc42a87e","updated":"2024-09-12 13:53:47.000000000","message":"Ok, generally, It looks good to me. however, we should deal with the cross_az storage carefully. I think It\u0027s reasonable to switch to the swift driver if not the same az. Also How did you handle it in your production?","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8656ab8d9c2627b570f50c8cec300c3568fd9f4b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"c4d7eb12_b67ecc3b","in_reply_to":"58941e50_232cd6ca","updated":"2024-09-20 06:39:18.000000000","message":"this feature will create a snapshot of volumes to handle faster backup progress. this logic same_az just have mean when create a new replica. otherwise trove still do backup to swift to backup as normal.\n\u003e Hi， Does it work when we use same_az to do backup? how Does it recovery from another AZ?","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"490e826fb926245cf3a5fad6f7931cdf506fc327","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"97dd2ec9_50fd2f14","in_reply_to":"673ef79d_315d1acf","updated":"2024-09-24 02:17:37.000000000","message":"I need to review this part carefully, I have not reviewed it yet","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"43fae33238399c393a86db7830c77570c5bb9de8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"58941e50_232cd6ca","in_reply_to":"842afa03_c6974d39","updated":"2024-09-13 03:08:12.000000000","message":"use can config `use_snapshot_cross_az` to use snapshot cross az. it isn\u0027t related with swift. this feature will create a snapshot of volumes to handle faster backup progress. this logic `same_az` just have mean when create a new replica. otherwise trove still do backup to swift to backup as normal.\n\nin my production, we push backup to simple storage (aka s3) and it just is global system.","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"e3c7f971ee99d726e3926fc45a6662a233749324","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"673ef79d_315d1acf","in_reply_to":"c4d7eb12_b67ecc3b","updated":"2024-09-20 07:32:48.000000000","message":"any new something? i need review this patch to going to merged.","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"aa243520c799c63f9d044de99ca763ce2d16299b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"b8d7c5f5_7f546bba","updated":"2024-10-07 06:35:27.000000000","message":"recheck","commit_id":"0c784e7751f140b6119eaea705840204ce5fde9e"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"73cdd93232fe9d1ebb48083a3f5d173ae351dc2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":54,"id":"2b3daac6_8be8ccff","updated":"2024-10-12 07:56:38.000000000","message":"Hi, thanks for the update.  after you fix the issue, please comment a recheck in this patch \u0027https://review.opendev.org/c/openstack/trove/+/919421\u0027","commit_id":"16c7c20597cb1be0f6614818a90806c19a0958f6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1c0df65df1f8ef7f20eba530e0c2fce70761c78c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":54,"id":"f2c3c1af_234219b6","updated":"2024-11-01 08:33:28.000000000","message":"Hi, when same_az is set to  true. all the tests are failed. refer to : https://review.opendev.org/c/openstack/trove/+/919421\n\nspecific error is here https://zuul.opendev.org/t/openstack/build/c9b1261eea964643bd387c08e283dda3/log/controller/logs/screen-tr-cond.txt#862","commit_id":"16c7c20597cb1be0f6614818a90806c19a0958f6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"bcc838f37fb9ef10fbecf385e5899b1551925689","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":54,"id":"5d65316c_a05606b7","in_reply_to":"511d5d16_1ddf8578","updated":"2024-12-04 12:31:13.000000000","message":"Hi bo,  I have updated this patch. please help to review when you are free.  i tested it in my dev environment, and it works well.","commit_id":"16c7c20597cb1be0f6614818a90806c19a0958f6"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"b8fe9a5a97a83266bbc5279919dc4b2dec3bab42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":54,"id":"511d5d16_1ddf8578","in_reply_to":"f2c3c1af_234219b6","updated":"2024-11-14 09:31:47.000000000","message":"okay. i will fix this error in the next time. currently, i\u0027m too busy.","commit_id":"16c7c20597cb1be0f6614818a90806c19a0958f6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"fd3b5c858aadf61ec1f6728417168e14c36cf8da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":61,"id":"42d271b7_337c4fb5","updated":"2025-01-08 08:19:14.000000000","message":"recheck","commit_id":"a852d9148f1a58e6784f25bb256c47f0a66a5e4a"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"29fa67ed08c19e371ea12d9bad57650d4fc7937d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":62,"id":"e3edc077_d78d6884","updated":"2025-01-13 04:51:19.000000000","message":"I see this log: https://zuul.opendev.org/t/openstack/build/fce336c3fe024076888b8b49598baf24/log/controller/logs/screen-tr-cond.txt#956\n\nThis is log about error in swift, wihout trove and I don\u0027t edit anything in this logic. I think we can ignore this error.","commit_id":"795bb36086e390d2595b4d6bc577c166e03691e1"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"ab55a4c803183a3336752b5826d4b4b26fe48ccb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":62,"id":"cc9a0d94_20e5c398","in_reply_to":"2ae0160a_7bc7ffb3","updated":"2025-01-15 04:55:43.000000000","message":"ok. let me see. this code I had run about 3 years and don\u0027t have anything problems.","commit_id":"795bb36086e390d2595b4d6bc577c166e03691e1"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"dfa14781da0eb70f782f740ef1fb139e53e4bd91","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":62,"id":"583bb163_24ed3a38","in_reply_to":"cc9a0d94_20e5c398","updated":"2025-01-15 07:19:56.000000000","message":"ok, you can test the following cases.\n\n1. before applying this patch. create a backup with swift driver. then, apply this patch and change the storage strategy to cinder.  finally try to restore the backup.\n2. applying this patch, don\u0027t set storage strategy to cinder, then do the following steps. \n  1. create a postgresql instance, and insert some test data\n  2. create a full backup and insert some incremental data\n  3. create a incremental backup. \n  4. restore from the incremental backup, you will find the data was lost.\n\n3. setting storage_strategy to cinder and the snapshot_driver(which may be `use_snapshot_cross_az` in your case to false ) to swift, in this case. replicas were created failed for all datastores due to the backup created by swift driver missing the storage_driver value in the DB, and then restoring from this backup, the code gets the `conf.storage_strategy` instead which is cinder.","commit_id":"795bb36086e390d2595b4d6bc577c166e03691e1"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"fc6e670e8318e770c80bebf594f8d7e0e425462d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":62,"id":"2ae0160a_7bc7ffb3","in_reply_to":"e3edc077_d78d6884","updated":"2025-01-13 11:59:13.000000000","message":"Yes，this is a issue about swift. I am now fixing the CI problem. if you have time, please help me review this patch again. I updated the following content:\n1. Fix pre_backup failure  due to the sqlachemy 2.0\n2. Fix a bug where  restore from the existing  backup which was backed up with swift storage failed after the storage strategy changed to cinder\n3. Fix a bug where the replicas were created failed when the storage strategy is cinder and the snapshot driver is swift.\n4. Update docs and release notes\n5. Fix  postgresql restore failed with the swift driver due to the absence of  the recovery.signal file\n6. Remove the use_snapshot_cross_az option and add the replica_snapshot_driver config option instead. whether using cinder as a snapshot_driver is totally depended on cloud administrator now.\n\nAs you add a new column \u0027storage_driver\u0027 in DB, but the default value is null. i also add the default value \"swift\" instead.","commit_id":"795bb36086e390d2595b4d6bc577c166e03691e1"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8eed60bffb1c0615b02b66cc7fbed05edfbf6fd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":63,"id":"a0f7eb4a_8daa4ed1","updated":"2025-01-14 11:10:29.000000000","message":"recheck","commit_id":"ead51e3a604dc4a3afc03ee8983cfde690af985f"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"7facb5451e472b4db6c9f323b4a089e21d16c54e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":65,"id":"b6e09d14_52c585e5","updated":"2025-02-06 15:20:09.000000000","message":"recheck","commit_id":"e4113c556ff41c9d52cd3a94a61b7749685d02e7"}],"trove/backup/models.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8cb2263f161ae25ab7f3e26a1ab208aa716ad5ce","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    @classmethod"},{"line_number":53,"context_line":"    def create(cls, context, instance, name, description\u003dNone,"},{"line_number":54,"context_line":"               parent_id\u003dNone, incremental\u003dFalse, swift_container\u003dNone,"},{"line_number":55,"context_line":"               restore_from\u003dNone, storage_driver\u003dNone):"},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        create db record for Backup"},{"line_number":58,"context_line":"        :param cls:"}],"source_content_type":"text/x-python","patch_set":50,"id":"919677a9_e9107161","line":55,"updated":"2024-09-24 07:58:07.000000000","message":"we add a new parameter for create api, please update the AI docs as well. \n\nhttps://docs.openstack.org/api-ref/database/#create-database-backup","commit_id":"36964540475342459421667d17283d594f3281d2"}],"trove/common/cfg.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1d5b36c8cd1e517aaf07706b2822f4918c5f05f0","unresolved":true,"context_lines":[{"line_number":539,"context_line":"             \u0027instance\u0027),"},{"line_number":540,"context_line":"    cfg.BoolOpt("},{"line_number":541,"context_line":"        \u0027use_snapshot_cross_az\u0027, default\u003dFalse,"},{"line_number":542,"context_line":"        help\u003d\u0027If true create the snapshot to backup/ initial new instances \u0027"},{"line_number":543,"context_line":"             \u0027cross available zone\u0027)"},{"line_number":544,"context_line":"]"},{"line_number":545,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"d8955a03_98561144","line":542,"range":{"start_line":542,"start_character":52,"end_line":542,"end_character":53},"updated":"2024-09-24 08:19:25.000000000","message":"please improve the sentence.\n\nIf true, create the snapshot to back up/initialize new instances across the available zone. This only works when the storage driver is Cinder.","commit_id":"36964540475342459421667d17283d594f3281d2"}],"trove/db/sqlalchemy/migrate_repo/versions/050_add_storage_driver_to_backup.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2023 Bizfly Cloud"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":47,"id":"b2352d77_a8ecacb6","line":1,"updated":"2024-08-28 07:50:02.000000000","message":"remove this file. we don\u0027t use sqlalchemy migration any more","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b24a8cec8e1919df24209edf8056bc3d49104d1e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2023 Bizfly Cloud"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":47,"id":"9592b621_16d8b998","line":1,"in_reply_to":"47725763_4e441bb0","updated":"2024-08-29 07:02:27.000000000","message":"Acknowledged","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"62b5090f528803ad215c5ca1124be2d1118023ef","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2023 Bizfly Cloud"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":47,"id":"47725763_4e441bb0","line":1,"in_reply_to":"b2352d77_a8ecacb6","updated":"2024-08-28 09:16:38.000000000","message":"ok","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"}],"trove/guestagent/api.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    When updating this API, also update API_LATEST_VERSION"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # API_LATEST_VERSION should bump the minor number each time"},{"line_number":48,"context_line":"    # a method signature is added or changed"},{"line_number":49,"context_line":"    API_LATEST_VERSION \u003d \u00271.1\u0027"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # API_BASE_VERSION should only change on major version upgrade"},{"line_number":52,"context_line":"    API_BASE_VERSION \u003d \u00271.0\u0027"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    VERSION_ALIASES \u003d {"},{"line_number":55,"context_line":"        \u0027icehouse\u0027: \u00271.0\u0027,"},{"line_number":56,"context_line":"        \u0027juno\u0027: \u00271.0\u0027,"},{"line_number":57,"context_line":"        \u0027kilo\u0027: \u00271.0\u0027,"},{"line_number":58,"context_line":"        \u0027liberty\u0027: \u00271.0\u0027,"},{"line_number":59,"context_line":"        \u0027mitaka\u0027: \u00271.0\u0027,"},{"line_number":60,"context_line":"        \u0027newton\u0027: \u00271.0\u0027,"},{"line_number":61,"context_line":"        \u0027ussuri\u0027: \u00271.0\u0027,"},{"line_number":62,"context_line":"        \u0027victoria\u0027: \u00271.1\u0027,"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        \u0027latest\u0027: API_LATEST_VERSION"},{"line_number":65,"context_line":"    }"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def __init__(self, context, id):"},{"line_number":68,"context_line":"        self.context \u003d context"},{"line_number":69,"context_line":"        self.id \u003d id"}],"source_content_type":"text/x-python","patch_set":47,"id":"eb7eca96_1df312dd","line":66,"range":{"start_line":47,"start_character":4,"end_line":66,"end_character":0},"updated":"2024-08-28 07:50:02.000000000","message":"as you have added new methods, so i think we need to bump this version","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"62b5090f528803ad215c5ca1124be2d1118023ef","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    When updating this API, also update API_LATEST_VERSION"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # API_LATEST_VERSION should bump the minor number each time"},{"line_number":48,"context_line":"    # a method signature is added or changed"},{"line_number":49,"context_line":"    API_LATEST_VERSION \u003d \u00271.1\u0027"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # API_BASE_VERSION should only change on major version upgrade"},{"line_number":52,"context_line":"    API_BASE_VERSION \u003d \u00271.0\u0027"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    VERSION_ALIASES \u003d {"},{"line_number":55,"context_line":"        \u0027icehouse\u0027: \u00271.0\u0027,"},{"line_number":56,"context_line":"        \u0027juno\u0027: \u00271.0\u0027,"},{"line_number":57,"context_line":"        \u0027kilo\u0027: \u00271.0\u0027,"},{"line_number":58,"context_line":"        \u0027liberty\u0027: \u00271.0\u0027,"},{"line_number":59,"context_line":"        \u0027mitaka\u0027: \u00271.0\u0027,"},{"line_number":60,"context_line":"        \u0027newton\u0027: \u00271.0\u0027,"},{"line_number":61,"context_line":"        \u0027ussuri\u0027: \u00271.0\u0027,"},{"line_number":62,"context_line":"        \u0027victoria\u0027: \u00271.1\u0027,"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        \u0027latest\u0027: API_LATEST_VERSION"},{"line_number":65,"context_line":"    }"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def __init__(self, context, id):"},{"line_number":68,"context_line":"        self.context \u003d context"},{"line_number":69,"context_line":"        self.id \u003d id"}],"source_content_type":"text/x-python","patch_set":47,"id":"fa63255a_0d7a00f1","line":66,"range":{"start_line":47,"start_character":4,"end_line":66,"end_character":0},"in_reply_to":"eb7eca96_1df312dd","updated":"2024-08-28 09:16:38.000000000","message":"ok.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b24a8cec8e1919df24209edf8056bc3d49104d1e","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    When updating this API, also update API_LATEST_VERSION"},{"line_number":45,"context_line":"    \"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # API_LATEST_VERSION should bump the minor number each time"},{"line_number":48,"context_line":"    # a method signature is added or changed"},{"line_number":49,"context_line":"    API_LATEST_VERSION \u003d \u00271.1\u0027"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # API_BASE_VERSION should only change on major version upgrade"},{"line_number":52,"context_line":"    API_BASE_VERSION \u003d \u00271.0\u0027"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    VERSION_ALIASES \u003d {"},{"line_number":55,"context_line":"        \u0027icehouse\u0027: \u00271.0\u0027,"},{"line_number":56,"context_line":"        \u0027juno\u0027: \u00271.0\u0027,"},{"line_number":57,"context_line":"        \u0027kilo\u0027: \u00271.0\u0027,"},{"line_number":58,"context_line":"        \u0027liberty\u0027: \u00271.0\u0027,"},{"line_number":59,"context_line":"        \u0027mitaka\u0027: \u00271.0\u0027,"},{"line_number":60,"context_line":"        \u0027newton\u0027: \u00271.0\u0027,"},{"line_number":61,"context_line":"        \u0027ussuri\u0027: \u00271.0\u0027,"},{"line_number":62,"context_line":"        \u0027victoria\u0027: \u00271.1\u0027,"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        \u0027latest\u0027: API_LATEST_VERSION"},{"line_number":65,"context_line":"    }"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def __init__(self, context, id):"},{"line_number":68,"context_line":"        self.context \u003d context"},{"line_number":69,"context_line":"        self.id \u003d id"}],"source_content_type":"text/x-python","patch_set":47,"id":"4761735b_70f322ef","line":66,"range":{"start_line":47,"start_character":4,"end_line":66,"end_character":0},"in_reply_to":"fa63255a_0d7a00f1","updated":"2024-08-29 07:02:27.000000000","message":"please also consider how to make it compatible with old trove instance.\nFor example: when do snapshot backup, please ensure that the guest-agent supports 1.2 api version. \n\nyou can refer to this usage: https://github.com/openstack/trove/blob/master/trove/guestagent/api.py#L513","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8cb2263f161ae25ab7f3e26a1ab208aa716ad5ce","unresolved":true,"context_lines":[{"line_number":60,"context_line":"        \u0027newton\u0027: \u00271.0\u0027,"},{"line_number":61,"context_line":"        \u0027ussuri\u0027: \u00271.0\u0027,"},{"line_number":62,"context_line":"        \u0027victoria\u0027: \u00271.1\u0027,"},{"line_number":63,"context_line":"        \u0027dalmatian\u0027: \u00271.2\u0027,"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        \u0027latest\u0027: API_LATEST_VERSION"},{"line_number":66,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":50,"id":"d76c2227_0a29bb2e","line":63,"updated":"2024-09-24 07:58:07.000000000","message":"dalmatian will be released soon, so this patch should be merged into next cycle(Epoxy), thus we have a whole cycle to test this patch.\n\nrefer to \nhttps://releases.openstack.org/#release-series","commit_id":"36964540475342459421667d17283d594f3281d2"}],"trove/guestagent/datastore/mariadb/manager.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":49,"context_line":"        status \u003d {}"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            INFO_FILE \u003d \"%s/xtrabackup_binlog_info\" % self.app.get_data_dir()"},{"line_number":52,"context_line":"            self.app.execute_sql(\"FLUSH TABLES WITH READ LOCK;\")"},{"line_number":53,"context_line":"            stt \u003d self.app.execute_sql(\"SHOW MASTER STATUS;\")"},{"line_number":54,"context_line":"            for row in stt:"}],"source_content_type":"text/x-python","patch_set":47,"id":"6076edb7_a2e4829b","line":51,"updated":"2024-08-28 07:50:02.000000000","message":"what will happen if this file is empty? for single trove instance case","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"62b5090f528803ad215c5ca1124be2d1118023ef","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":49,"context_line":"        status \u003d {}"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            INFO_FILE \u003d \"%s/xtrabackup_binlog_info\" % self.app.get_data_dir()"},{"line_number":52,"context_line":"            self.app.execute_sql(\"FLUSH TABLES WITH READ LOCK;\")"},{"line_number":53,"context_line":"            stt \u003d self.app.execute_sql(\"SHOW MASTER STATUS;\")"},{"line_number":54,"context_line":"            for row in stt:"}],"source_content_type":"text/x-python","patch_set":47,"id":"b47bc588_3ff774c9","line":51,"in_reply_to":"6076edb7_a2e4829b","updated":"2024-08-28 09:16:38.000000000","message":"in this logic, we trying create a file named xtrabackup_binlog_info. this is do repeat an action like when we run command with normal backup. so, if thhis file is empty will haven\u0027t any problems.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b24a8cec8e1919df24209edf8056bc3d49104d1e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":49,"context_line":"        status \u003d {}"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            INFO_FILE \u003d \"%s/xtrabackup_binlog_info\" % self.app.get_data_dir()"},{"line_number":52,"context_line":"            self.app.execute_sql(\"FLUSH TABLES WITH READ LOCK;\")"},{"line_number":53,"context_line":"            stt \u003d self.app.execute_sql(\"SHOW MASTER STATUS;\")"},{"line_number":54,"context_line":"            for row in stt:"}],"source_content_type":"text/x-python","patch_set":47,"id":"e54b2254_3c87df0c","line":51,"in_reply_to":"b47bc588_3ff774c9","updated":"2024-08-29 07:02:27.000000000","message":"Acknowledged","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"}],"trove/guestagent/datastore/mariadb/service.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        extra_volumes \u003d {"},{"line_number":92,"context_line":"            \"/etc/mysql\": {\"bind\": \"/etc/mysql\", \"mode\": \"rw\"},"},{"line_number":93,"context_line":"            \"/var/run/mysqld\": {\"bind\": \"/var/run/mysqld\", \"mode\": \"rw\"},"},{"line_number":94,"context_line":"            data_dir: {\"bind\": data_dir, \"mode\": \"rw\"},"},{"line_number":95,"context_line":"        }"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"4d598957_64db3e3e","line":93,"range":{"start_line":93,"start_character":13,"end_line":93,"end_character":28},"updated":"2024-08-28 07:50:02.000000000","message":"we don\u0027t use this directory now. use \u0027constants.MYSQL_HOST_SOCKET_PATH\u0027 instead","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8cb2263f161ae25ab7f3e26a1ab208aa716ad5ce","unresolved":true,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        extra_volumes \u003d {"},{"line_number":92,"context_line":"            \"/etc/mysql\": {\"bind\": \"/etc/mysql\", \"mode\": \"rw\"},"},{"line_number":93,"context_line":"            \"/var/run/mysqld\": {\"bind\": \"/var/run/mysqld\", \"mode\": \"rw\"},"},{"line_number":94,"context_line":"            data_dir: {\"bind\": data_dir, \"mode\": \"rw\"},"},{"line_number":95,"context_line":"        }"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"c488d6e2_fb2e0b81","line":93,"range":{"start_line":93,"start_character":13,"end_line":93,"end_character":28},"in_reply_to":"4d598957_64db3e3e","updated":"2024-09-24 07:58:07.000000000","message":"the same as mysql comment","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"}],"trove/guestagent/datastore/mysql/service.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        extra_volumes \u003d {"},{"line_number":112,"context_line":"            \"/etc/mysql\": {\"bind\": \"/etc/mysql\", \"mode\": \"rw\"},"},{"line_number":113,"context_line":"            \"/var/run/mysqld\": {\"bind\": \"/var/run/mysqld\", \"mode\": \"rw\"},"},{"line_number":114,"context_line":"            data_dir: {\"bind\": data_dir, \"mode\": \"rw\"},"},{"line_number":115,"context_line":"        }"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"aa556926_0e12ef74","line":113,"range":{"start_line":113,"start_character":11,"end_line":113,"end_character":29},"updated":"2024-08-28 07:50:02.000000000","message":"constants.MYSQL_HOST_SOCKET_PATH","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8cb2263f161ae25ab7f3e26a1ab208aa716ad5ce","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        extra_volumes \u003d {"},{"line_number":112,"context_line":"            \"/etc/mysql\": {\"bind\": \"/etc/mysql\", \"mode\": \"rw\"},"},{"line_number":113,"context_line":"            \"/var/run/mysqld\": {\"bind\": \"/var/run/mysqld\", \"mode\": \"rw\"},"},{"line_number":114,"context_line":"            data_dir: {\"bind\": data_dir, \"mode\": \"rw\"},"},{"line_number":115,"context_line":"        }"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"be7d9d86_ffb08ce3","line":113,"range":{"start_line":113,"start_character":11,"end_line":113,"end_character":29},"in_reply_to":"258940a6_98e23c16","updated":"2024-09-24 07:58:07.000000000","message":"though \u0027/var/run/mysqld\u0027 is fine here(will be deleted soon.), I also suggest to use `constants.MYSQL_HOST_SOCKET_PATH` to avoid confusion.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"62b5090f528803ad215c5ca1124be2d1118023ef","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        extra_volumes \u003d {"},{"line_number":112,"context_line":"            \"/etc/mysql\": {\"bind\": \"/etc/mysql\", \"mode\": \"rw\"},"},{"line_number":113,"context_line":"            \"/var/run/mysqld\": {\"bind\": \"/var/run/mysqld\", \"mode\": \"rw\"},"},{"line_number":114,"context_line":"            data_dir: {\"bind\": data_dir, \"mode\": \"rw\"},"},{"line_number":115,"context_line":"        }"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"258940a6_98e23c16","line":113,"range":{"start_line":113,"start_character":11,"end_line":113,"end_character":29},"in_reply_to":"aa556926_0e12ef74","updated":"2024-08-28 09:16:38.000000000","message":"ok. i will rebase this patch soon.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        try:"},{"line_number":118,"context_line":"            self.start_db(ds_version\u003dCONF.datastore_version, command\u003dcommand,"},{"line_number":119,"context_line":"                          extra_volumes\u003dextra_volumes)"},{"line_number":120,"context_line":"            self.stop_slave(for_failover\u003dFalse)"},{"line_number":121,"context_line":"        except Exception as e:"},{"line_number":122,"context_line":"            LOG.error(\"Failed to start db to restore snapshot: %s\", str(e))"},{"line_number":123,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":47,"id":"95b4b9bb_662a7d5a","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":47},"updated":"2024-08-28 07:50:02.000000000","message":"could you explain why we need to stop slave here?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b24a8cec8e1919df24209edf8056bc3d49104d1e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        try:"},{"line_number":118,"context_line":"            self.start_db(ds_version\u003dCONF.datastore_version, command\u003dcommand,"},{"line_number":119,"context_line":"                          extra_volumes\u003dextra_volumes)"},{"line_number":120,"context_line":"            self.stop_slave(for_failover\u003dFalse)"},{"line_number":121,"context_line":"        except Exception as e:"},{"line_number":122,"context_line":"            LOG.error(\"Failed to start db to restore snapshot: %s\", str(e))"},{"line_number":123,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":47,"id":"b6acafc2_6f002976","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":47},"in_reply_to":"511ece28_a30535de","updated":"2024-08-29 07:02:27.000000000","message":"Acknowledged","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"62b5090f528803ad215c5ca1124be2d1118023ef","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        try:"},{"line_number":118,"context_line":"            self.start_db(ds_version\u003dCONF.datastore_version, command\u003dcommand,"},{"line_number":119,"context_line":"                          extra_volumes\u003dextra_volumes)"},{"line_number":120,"context_line":"            self.stop_slave(for_failover\u003dFalse)"},{"line_number":121,"context_line":"        except Exception as e:"},{"line_number":122,"context_line":"            LOG.error(\"Failed to start db to restore snapshot: %s\", str(e))"},{"line_number":123,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":47,"id":"511ece28_a30535de","line":120,"range":{"start_line":120,"start_character":12,"end_line":120,"end_character":47},"in_reply_to":"95b4b9bb_662a7d5a","updated":"2024-08-28 09:16:38.000000000","message":"We need restore from old instance to new instance. so when we restore from backup of database instance with role replica. if we restore this snapshot. it can be continue sync with primary of old instance. I think we, don\u0027t need.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"}],"trove/guestagent/datastore/postgres/manager.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def pre_create_backup(self, context, **kwargs):"},{"line_number":310,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":311,"context_line":"        m \u003d RE_DS_VERSION.search(CONF.datastore_version)"},{"line_number":312,"context_line":"        if m:"},{"line_number":313,"context_line":"            ds_version \u003d m.group(1)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"d3f2e85e_b00572c3","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":35},"updated":"2024-08-28 07:50:02.000000000","message":"why don\u0027t we use CONF.datastore_version directly? In which case we need this regex?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"73cdd93232fe9d1ebb48083a3f5d173ae351dc2a","unresolved":true,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def pre_create_backup(self, context, **kwargs):"},{"line_number":310,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":311,"context_line":"        m \u003d RE_DS_VERSION.search(CONF.datastore_version)"},{"line_number":312,"context_line":"        if m:"},{"line_number":313,"context_line":"            ds_version \u003d m.group(1)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"e953793e_e9c2aeec","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":35},"in_reply_to":"35dc4118_eb5bb5a1","updated":"2024-10-12 07:56:38.000000000","message":"thanks for the clarification. do a quick test:\n```\nimport semantic_version\n\nprint(semantic_version.Version.coerce(\"10.a\"))  # Output: 10.0.0+a\nprint(semantic_version.Version.coerce(\"11\"))    # Output: 11.0.0\nprint(semantic_version.Version.coerce(\"12.3.4\")) # Output: 12.3.4\n\nsemantic_version.Version.coerce(\"10.a\") \u003c semantic_version.Version(\u002715.0.0\u0027)  # Output: True\n\n```\n\nAccording to the test result. the semantic_version is already capable of handling the version that contains a string value.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"58437a501ce83a6bf1d9dd9a1ffe8656f6b04ec2","unresolved":true,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def pre_create_backup(self, context, **kwargs):"},{"line_number":310,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":311,"context_line":"        m \u003d RE_DS_VERSION.search(CONF.datastore_version)"},{"line_number":312,"context_line":"        if m:"},{"line_number":313,"context_line":"            ds_version \u003d m.group(1)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"35dc4118_eb5bb5a1","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":35},"in_reply_to":"66b68fd3_5010c973","updated":"2024-10-07 06:35:15.000000000","message":"we need correct this version with a format. assume version is: \"10.a\", we can\u0027t do compare anything","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8cb2263f161ae25ab7f3e26a1ab208aa716ad5ce","unresolved":true,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def pre_create_backup(self, context, **kwargs):"},{"line_number":310,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":311,"context_line":"        m \u003d RE_DS_VERSION.search(CONF.datastore_version)"},{"line_number":312,"context_line":"        if m:"},{"line_number":313,"context_line":"            ds_version \u003d m.group(1)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"66b68fd3_5010c973","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":35},"in_reply_to":"d3f2e85e_b00572c3","updated":"2024-09-24 07:58:07.000000000","message":"again！ why do you need this regex?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8decb5364d17abab68a1ef63cc0eb9343fad776d","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def pre_create_backup(self, context, **kwargs):"},{"line_number":310,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":311,"context_line":"        m \u003d RE_DS_VERSION.search(CONF.datastore_version)"},{"line_number":312,"context_line":"        if m:"},{"line_number":313,"context_line":"            ds_version \u003d m.group(1)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"d3cd50dd_c1391960","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":35},"in_reply_to":"dc364adc_a89c3600","updated":"2024-10-17 15:25:23.000000000","message":"Acknowledged","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1274df41c9caf5f60a219d2d4be4783d58ae4a6e","unresolved":true,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def pre_create_backup(self, context, **kwargs):"},{"line_number":310,"context_line":"        LOG.info(\"Running pre_create_backup\")"},{"line_number":311,"context_line":"        m \u003d RE_DS_VERSION.search(CONF.datastore_version)"},{"line_number":312,"context_line":"        if m:"},{"line_number":313,"context_line":"            ds_version \u003d m.group(1)"},{"line_number":314,"context_line":"        else:"},{"line_number":315,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":47,"id":"dc364adc_a89c3600","line":313,"range":{"start_line":311,"start_character":0,"end_line":313,"end_character":35},"in_reply_to":"e953793e_e9c2aeec","updated":"2024-10-15 10:52:56.000000000","message":"let me see","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"}],"trove/guestagent/datastore/postgres/service.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":373,"context_line":"        ]"},{"line_number":374,"context_line":"        for file in files:"},{"line_number":375,"context_line":"            try:"},{"line_number":376,"context_line":"                operating_system.remove("},{"line_number":377,"context_line":"                    path\u003dfile, force\u003dTrue, recursive\u003dTrue, as_root\u003dTrue)"},{"line_number":378,"context_line":"            except Exception as e:"},{"line_number":379,"context_line":"                LOG.warning(e)"}],"source_content_type":"text/x-python","patch_set":47,"id":"6e1cc024_abd66dae","line":376,"updated":"2024-08-28 07:50:02.000000000","message":"Don\u0027t we need to do something like other drivers? only remove recovery.signal is enough for restore?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"62b5090f528803ad215c5ca1124be2d1118023ef","unresolved":true,"context_lines":[{"line_number":373,"context_line":"        ]"},{"line_number":374,"context_line":"        for file in files:"},{"line_number":375,"context_line":"            try:"},{"line_number":376,"context_line":"                operating_system.remove("},{"line_number":377,"context_line":"                    path\u003dfile, force\u003dTrue, recursive\u003dTrue, as_root\u003dTrue)"},{"line_number":378,"context_line":"            except Exception as e:"},{"line_number":379,"context_line":"                LOG.warning(e)"}],"source_content_type":"text/x-python","patch_set":47,"id":"bba3b525_7784d819","line":376,"in_reply_to":"6e1cc024_abd66dae","updated":"2024-08-28 09:16:38.000000000","message":"yes. this is limitation of postgres. if don\u0027t remove this file. we can\u0027t restore postgres and do start again.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b24a8cec8e1919df24209edf8056bc3d49104d1e","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        ]"},{"line_number":374,"context_line":"        for file in files:"},{"line_number":375,"context_line":"            try:"},{"line_number":376,"context_line":"                operating_system.remove("},{"line_number":377,"context_line":"                    path\u003dfile, force\u003dTrue, recursive\u003dTrue, as_root\u003dTrue)"},{"line_number":378,"context_line":"            except Exception as e:"},{"line_number":379,"context_line":"                LOG.warning(e)"}],"source_content_type":"text/x-python","patch_set":47,"id":"07f564ca_9f9e20bf","line":376,"in_reply_to":"bba3b525_7784d819","updated":"2024-08-29 07:02:27.000000000","message":"Acknowledged","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"}],"trove/taskmanager/manager.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8cb2263f161ae25ab7f3e26a1ab208aa716ad5ce","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                  scheduler_hints, instance_id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        # We just create snapshot if master and slave have same AZ"},{"line_number":343,"context_line":"        same_az \u003d False"},{"line_number":344,"context_line":"        master_az \u003d master_instance_tasks.volume_client.volumes.get("},{"line_number":345,"context_line":"            master_instance_tasks.volume_id).availability_zone"},{"line_number":346,"context_line":"        if master_az \u003d\u003d availability_zone or CONF.use_snapshot_cross_az:"},{"line_number":347,"context_line":"            same_az \u003d True"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        # Create backup for master"},{"line_number":350,"context_line":"        snapshot \u003d None"}],"source_content_type":"text/x-python","patch_set":50,"id":"e230e394_bd99fbfb","line":347,"range":{"start_line":343,"start_character":0,"end_line":347,"end_character":26},"updated":"2024-09-24 07:58:07.000000000","message":"I understand that we force to do an cinder snapshot here despite of the backup storage driver setting.\n\nIf i am correct, I think we should honor the backup driver setting.  if we use swift driver, please keep the previous logic, Don\u0027t force an cinder snapshot. some volume driver may don\u0027t support snapshot action.","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8decb5364d17abab68a1ef63cc0eb9343fad776d","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                  scheduler_hints, instance_id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        # We just create snapshot if master and slave have same AZ"},{"line_number":343,"context_line":"        same_az \u003d False"},{"line_number":344,"context_line":"        master_az \u003d master_instance_tasks.volume_client.volumes.get("},{"line_number":345,"context_line":"            master_instance_tasks.volume_id).availability_zone"},{"line_number":346,"context_line":"        if master_az \u003d\u003d availability_zone or CONF.use_snapshot_cross_az:"},{"line_number":347,"context_line":"            same_az \u003d True"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        # Create backup for master"},{"line_number":350,"context_line":"        snapshot \u003d None"}],"source_content_type":"text/x-python","patch_set":50,"id":"c59d1c2c_e7e72ff2","line":347,"range":{"start_line":343,"start_character":0,"end_line":347,"end_character":26},"in_reply_to":"594ce253_3bd35419","updated":"2024-10-17 15:25:23.000000000","message":"Acknowledged","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"73cdd93232fe9d1ebb48083a3f5d173ae351dc2a","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                  scheduler_hints, instance_id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        # We just create snapshot if master and slave have same AZ"},{"line_number":343,"context_line":"        same_az \u003d False"},{"line_number":344,"context_line":"        master_az \u003d master_instance_tasks.volume_client.volumes.get("},{"line_number":345,"context_line":"            master_instance_tasks.volume_id).availability_zone"},{"line_number":346,"context_line":"        if master_az \u003d\u003d availability_zone or CONF.use_snapshot_cross_az:"},{"line_number":347,"context_line":"            same_az \u003d True"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        # Create backup for master"},{"line_number":350,"context_line":"        snapshot \u003d None"}],"source_content_type":"text/x-python","patch_set":50,"id":"f91e6303_a71a34bd","line":347,"range":{"start_line":343,"start_character":0,"end_line":347,"end_character":26},"in_reply_to":"e230e394_bd99fbfb","updated":"2024-10-12 07:56:38.000000000","message":"thanks for the update. I suggest to use the configure opts name like: `backup_driver_same_az` and `backup_driver_cross_az`. in case we support more drivers in the future.  and then improve the logic.\n\nthe default behavior should honor the default backup driver setting(namely using default backup driver).\n\nwhen `backup_driver_same_az` is setting, we use the cinder backup driver despite of the backup setting. and the same logic of the \u0027backup_driver_cross_az\u0027.","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1274df41c9caf5f60a219d2d4be4783d58ae4a6e","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                  scheduler_hints, instance_id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        # We just create snapshot if master and slave have same AZ"},{"line_number":343,"context_line":"        same_az \u003d False"},{"line_number":344,"context_line":"        master_az \u003d master_instance_tasks.volume_client.volumes.get("},{"line_number":345,"context_line":"            master_instance_tasks.volume_id).availability_zone"},{"line_number":346,"context_line":"        if master_az \u003d\u003d availability_zone or CONF.use_snapshot_cross_az:"},{"line_number":347,"context_line":"            same_az \u003d True"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        # Create backup for master"},{"line_number":350,"context_line":"        snapshot \u003d None"}],"source_content_type":"text/x-python","patch_set":50,"id":"594ce253_3bd35419","line":347,"range":{"start_line":343,"start_character":0,"end_line":347,"end_character":26},"in_reply_to":"f91e6303_a71a34bd","updated":"2024-10-15 10:52:56.000000000","message":"let me see","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"73cdd93232fe9d1ebb48083a3f5d173ae351dc2a","unresolved":true,"context_lines":[{"line_number":352,"context_line":"            instance_tasks \u003d FreshInstanceTasks.load(context, ids[0])"},{"line_number":353,"context_line":"            snapshot \u003d instance_tasks.get_replication_master_snapshot("},{"line_number":354,"context_line":"                context, slave_of_id, flavor,"},{"line_number":355,"context_line":"                parent_backup_id\u003dreplica_backup_id, same_az\u003dsame_az)"},{"line_number":356,"context_line":"            LOG.info(\u0027Snapshot info for creating replica of %s: %s\u0027,"},{"line_number":357,"context_line":"                     slave_of_id, snapshot)"},{"line_number":358,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":50,"id":"d9d2cc77_adff61d0","line":355,"updated":"2024-10-12 07:56:38.000000000","message":"we may need to rename this parameter name?  maybe backup_driver?","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8decb5364d17abab68a1ef63cc0eb9343fad776d","unresolved":false,"context_lines":[{"line_number":352,"context_line":"            instance_tasks \u003d FreshInstanceTasks.load(context, ids[0])"},{"line_number":353,"context_line":"            snapshot \u003d instance_tasks.get_replication_master_snapshot("},{"line_number":354,"context_line":"                context, slave_of_id, flavor,"},{"line_number":355,"context_line":"                parent_backup_id\u003dreplica_backup_id, same_az\u003dsame_az)"},{"line_number":356,"context_line":"            LOG.info(\u0027Snapshot info for creating replica of %s: %s\u0027,"},{"line_number":357,"context_line":"                     slave_of_id, snapshot)"},{"line_number":358,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":50,"id":"09a76b88_20c5be9f","line":355,"in_reply_to":"18d89bdd_6027c883","updated":"2024-10-17 15:25:23.000000000","message":"Acknowledged","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1274df41c9caf5f60a219d2d4be4783d58ae4a6e","unresolved":true,"context_lines":[{"line_number":352,"context_line":"            instance_tasks \u003d FreshInstanceTasks.load(context, ids[0])"},{"line_number":353,"context_line":"            snapshot \u003d instance_tasks.get_replication_master_snapshot("},{"line_number":354,"context_line":"                context, slave_of_id, flavor,"},{"line_number":355,"context_line":"                parent_backup_id\u003dreplica_backup_id, same_az\u003dsame_az)"},{"line_number":356,"context_line":"            LOG.info(\u0027Snapshot info for creating replica of %s: %s\u0027,"},{"line_number":357,"context_line":"                     slave_of_id, snapshot)"},{"line_number":358,"context_line":"        except Exception as err:"}],"source_content_type":"text/x-python","patch_set":50,"id":"18d89bdd_6027c883","line":355,"in_reply_to":"d9d2cc77_adff61d0","updated":"2024-10-15 10:52:56.000000000","message":"let me see","commit_id":"36964540475342459421667d17283d594f3281d2"}],"trove/taskmanager/models.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"001b55cc311535b062aba86b4983ee7b3ede9da5","unresolved":true,"context_lines":[{"line_number":755,"context_line":"            })"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"}],"source_content_type":"text/x-python","patch_set":47,"id":"e8cb3322_c60ed9af","line":758,"updated":"2024-08-28 07:50:02.000000000","message":"else? if not sname_az, we don\u0027t create backup here?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"b327d1d35b7cf8f225c954a8250ef899f732f6fd","unresolved":true,"context_lines":[{"line_number":755,"context_line":"            })"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"}],"source_content_type":"text/x-python","patch_set":47,"id":"4b48933e_2998bcc2","line":758,"in_reply_to":"8f4a5684_779ef798","updated":"2024-09-10 02:10:23.000000000","message":"No, we don\u0027t need raise unsupport error. In this logic, i doing prefer the snapshot to create new replica instance if same_az. if not, the creation can be process normal by backup \u0026 push to swift. This is an improve logic, not more.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1da28ea9681b2b92b3a74d5f0492bc668ac5d24f","unresolved":true,"context_lines":[{"line_number":755,"context_line":"            })"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"}],"source_content_type":"text/x-python","patch_set":47,"id":"8f4a5684_779ef798","line":758,"in_reply_to":"b7edfd7a_0ad27d03","updated":"2024-09-02 02:44:10.000000000","message":"hello, I understand that we are unable to  create a volume from another AZ snapshot when perform restore action. so how do deal with this case? or we just raise an unsupport error?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"62b5090f528803ad215c5ca1124be2d1118023ef","unresolved":true,"context_lines":[{"line_number":755,"context_line":"            })"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"}],"source_content_type":"text/x-python","patch_set":47,"id":"f91730b0_3f879528","line":758,"in_reply_to":"e8cb3322_c60ed9af","updated":"2024-08-28 09:16:38.000000000","message":"this is limitation of system. i going to improve this logic. because, if we use separate the storage between multiple availability zone, maybe, we can\u0027t create a snapshot. what do you think abou when I going to add new config aka `enable_snapshot_cross_az`: if true, we will create snapshot that ignore check this logic?","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b24a8cec8e1919df24209edf8056bc3d49104d1e","unresolved":true,"context_lines":[{"line_number":755,"context_line":"            })"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"}],"source_content_type":"text/x-python","patch_set":47,"id":"b7edfd7a_0ad27d03","line":758,"in_reply_to":"f91730b0_3f879528","updated":"2024-08-29 07:02:27.000000000","message":"I will review this feature again.","commit_id":"7c9c8d4b7d38b99645e46aa5fc1148feaa4f01bb"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"73cdd93232fe9d1ebb48083a3f5d173ae351dc2a","unresolved":true,"context_lines":[{"line_number":748,"context_line":"                \u0027datastore\u0027: master.datastore.name,"},{"line_number":749,"context_line":"                \u0027datastore_version\u0027: master.datastore_version.name,"},{"line_number":750,"context_line":"            })"},{"line_number":751,"context_line":"            snapshot \u003d master.get_replication_snapshot("},{"line_number":752,"context_line":"                snapshot_info, flavor\u003dmaster.flavor_id)"},{"line_number":753,"context_line":"            snapshot.update({"},{"line_number":754,"context_line":"                \u0027config\u0027: self._render_replica_config(flavor).config_contents"},{"line_number":755,"context_line":"            })"}],"source_content_type":"text/x-python","patch_set":50,"id":"66e05bca_6e58c71f","line":752,"range":{"start_line":751,"start_character":0,"end_line":752,"end_character":55},"updated":"2024-10-12 07:56:38.000000000","message":"I understand that we already do a backup here. why do we need to do it again at the following step(line: 758)?","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"73cdd93232fe9d1ebb48083a3f5d173ae351dc2a","unresolved":true,"context_lines":[{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"},{"line_number":762,"context_line":"            return snapshot"}],"source_content_type":"text/x-python","patch_set":50,"id":"cca170ff_d84dbaf0","line":759,"range":{"start_line":759,"start_character":16,"end_line":759,"end_character":51},"updated":"2024-10-12 07:56:38.000000000","message":"please confirm this code. whether we have done the backup at the line 751?","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"8decb5364d17abab68a1ef63cc0eb9343fad776d","unresolved":true,"context_lines":[{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"},{"line_number":762,"context_line":"            return snapshot"}],"source_content_type":"text/x-python","patch_set":50,"id":"5e50b339_ed254889","line":759,"range":{"start_line":759,"start_character":16,"end_line":759,"end_character":51},"in_reply_to":"681bf13e_a48f6b1d","updated":"2024-10-17 15:25:23.000000000","message":"Hi, this function(get_replication_snapshot) will create a backup and return the snapshot information. you can found it in the guest-agent log [0] and the taskmanager log [1] in CI system. so base on the tests, this logic is wrong here, the error is that if the same_az is ture. we will create backup twice. \nAlso, in this test, we enable the cinder backup driver, however the code still uses the swift driver to create the replications \n\n[0]: https://zuul.opendev.org/t/openstack/build/b45be8cf817642b48a70b0fa9a2e6a1f/log/controller/logs/guest-agent-logs/d9e4435b-095e-49ca-a222-077288e2fb05/log/trove/trove-guestagent_log.txt#928\n\n[1]: https://zuul.opendev.org/t/openstack/build/b45be8cf817642b48a70b0fa9a2e6a1f/log/controller/logs/screen-tr-tmgr.txt#915","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1274df41c9caf5f60a219d2d4be4783d58ae4a6e","unresolved":true,"context_lines":[{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            # Create a cinder snapshot without call agent"},{"line_number":758,"context_line":"            if same_az:"},{"line_number":759,"context_line":"                master.create_backup(snapshot_info)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"            snapshot[\u0027dataset\u0027].update(snapshot_info.get(\u0027backup_info\u0027))"},{"line_number":762,"context_line":"            return snapshot"}],"source_content_type":"text/x-python","patch_set":50,"id":"681bf13e_a48f6b1d","line":759,"range":{"start_line":759,"start_character":16,"end_line":759,"end_character":51},"in_reply_to":"cca170ff_d84dbaf0","updated":"2024-10-15 10:52:56.000000000","message":"native code in here: https://opendev.org/openstack/trove/src/branch/master/trove/taskmanager/models.py#L742. \nthis function just return a dict included some information such as: username/ password, ... to set into new replicas.","commit_id":"36964540475342459421667d17283d594f3281d2"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"9b81a34bab32a6c0e8b45c3393ae068b9b49c017","unresolved":true,"context_lines":[{"line_number":1275,"context_line":"        action \u003d RebuildAction(self, image_id)"},{"line_number":1276,"context_line":"        action.execute()"},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"    def create_backup(self, backup_info):"},{"line_number":1279,"context_line":"        LOG.info(\"Initiating backup for instance %s, backup_info: %s\", self.id,"},{"line_number":1280,"context_line":"                 backup_info)"},{"line_number":1281,"context_line":"        storage_driver \u003d backup_info.get(\u0027storage_driver\u0027)"}],"source_content_type":"text/x-python","patch_set":54,"id":"ab69e33e_bf4eaa45","line":1278,"updated":"2024-10-18 10:12:40.000000000","message":"if same_az. it will call this function. why can create backup twice??? Can you help me this logic for test. I don\u0027t understand","commit_id":"16c7c20597cb1be0f6614818a90806c19a0958f6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"f8b4c98bbcecb541f1fa9db8e22b547a8197908f","unresolved":true,"context_lines":[{"line_number":1275,"context_line":"        action \u003d RebuildAction(self, image_id)"},{"line_number":1276,"context_line":"        action.execute()"},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"    def create_backup(self, backup_info):"},{"line_number":1279,"context_line":"        LOG.info(\"Initiating backup for instance %s, backup_info: %s\", self.id,"},{"line_number":1280,"context_line":"                 backup_info)"},{"line_number":1281,"context_line":"        storage_driver \u003d backup_info.get(\u0027storage_driver\u0027)"}],"source_content_type":"text/x-python","patch_set":54,"id":"927f3f75_9ab960ec","line":1278,"in_reply_to":"ab69e33e_bf4eaa45","updated":"2024-10-21 08:51:41.000000000","message":"ok, i will add tests for this logic in ci","commit_id":"16c7c20597cb1be0f6614818a90806c19a0958f6"}]}
