)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"ef3303a84ccb512715c3e0921896fc62c2c2de21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4a7973c0_a0958396","updated":"2025-05-21 13:01:14.000000000","message":"Also, remember to add ds verion here [0];\n\nthe reason for this approach are：\n1. we can support 10.3 \u0026 10.4 or later easily.\n2. user can upgrade trove more smoothly without changing anything.\n3. which binary will be used should be determined by the driver itself, the cloud provider should not care about this. \n\n[0]: https://opendev.org/openstack/trove/src/branch/master/trove/guestagent/datastore/service.py#L448","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1a131b68b7fa010886239e425fb28b6ec6714c01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"47d94df9_a0a89962","updated":"2025-05-16 03:15:24.000000000","message":"LGTM","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"3eccced54e5fb3f09d664a1f3062b8c9c13aac19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d295edf4_d218cbad","updated":"2025-05-17 07:13:58.000000000","message":"recheck","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"a91d5380fb0646971b76af00a3c104d0565b58e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d9c65dca_cb906291","updated":"2025-05-16 03:16:46.000000000","message":"recheck","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bb1002f8f1df0cc52e6156b0b19c918413d7c010","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"631525b1_a97b580a","updated":"2025-05-16 07:54:23.000000000","message":"recheck - likely intermittent - failed on trove_tempest_plugin.tests.scenario.test_instance_basic.TestInstanceBasicMariaDB.test_user_database","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1edabc9c7628a5ae0f399d29e8e82dcd7f756934","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8a9577ea_976a776c","updated":"2025-05-16 12:40:44.000000000","message":"recheck intermittent","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ca298c49b2e02f672ecc696dd093dd8b33b1d457","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"96bae50b_cb23246e","updated":"2025-05-22 13:33:29.000000000","message":"requested logic is implemented, existing behaviour should not change nor break anyone","commit_id":"d6a54ea9592eb4d4f850633f070c7dae64df295f"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"46533369b66d06dca52c23ed199de1e692e677a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ab63c652_f3494dd0","updated":"2025-05-23 06:53:07.000000000","message":"Btw another proof of my point of maintenance of really old engines.\n\nThere\u0027s nothing older then percona-xtrabackup-80 for ubuntu 24.04 in the percona repo.","commit_id":"bcdec128e4f96b2d931e6a67cf6401eff5bb1cd4"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"049646848ee5616af49852d7b12e58e597169430","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"305223e4_50c596ca","updated":"2025-05-27 13:51:17.000000000","message":"nice work! thanks.","commit_id":"bcdec128e4f96b2d931e6a67cf6401eff5bb1cd4"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"049646848ee5616af49852d7b12e58e597169430","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"eddced6d_d10bf476","in_reply_to":"ab63c652_f3494dd0","updated":"2025-05-27 13:51:17.000000000","message":"Hi, thanks for the feedback, I agree that we should not maintain such an old engine. Also i am going to remove these old engine and to support latest TLS version for Trove. but i also think we need to keep the existed instance working fine, as there are many customers still using these old engine, what we can do is to try our best to make the existing instance compatible. but we can remove the tests from the CI tests now.","commit_id":"bcdec128e4f96b2d931e6a67cf6401eff5bb1cd4"}],"backup/drivers/mariabackup.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"ef3303a84ccb512715c3e0921896fc62c2c2de21","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        super(MariaBackup, self).__init__(*args, **kwargs)"},{"line_number":35,"context_line":"        self.backup_log \u003d f\u0027/tmp/{self.backup_binary}.log\u0027"},{"line_number":36,"context_line":"        self._gzip \u003d True"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @property"},{"line_number":39,"context_line":"    def cmd(self):"},{"line_number":40,"context_line":"        cmd \u003d (f\u0027{self.backup_binary} --backup --stream\u003dxbstream \u0027 +"}],"source_content_type":"text/x-python","patch_set":5,"id":"a3e5a010_7be1aa2b","line":37,"updated":"2025-05-21 13:01:14.000000000","message":"here we can get the ds_version and determine which binary should be used.","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ca298c49b2e02f672ecc696dd093dd8b33b1d457","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(MariaBackup, self).__init__(*args, **kwargs)"},{"line_number":35,"context_line":"        self.backup_log \u003d f\u0027/tmp/{self.backup_binary}.log\u0027"},{"line_number":36,"context_line":"        self._gzip \u003d True"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @property"},{"line_number":39,"context_line":"    def cmd(self):"},{"line_number":40,"context_line":"        cmd \u003d (f\u0027{self.backup_binary} --backup --stream\u003dxbstream \u0027 +"}],"source_content_type":"text/x-python","patch_set":5,"id":"eb46c3e8_2d9b1ff6","line":37,"in_reply_to":"4b04daac_e367ec00","updated":"2025-05-22 13:33:29.000000000","message":"Done","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"aaedb20bb7823bf295a79eef9aea0d3f53379f9a","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        super(MariaBackup, self).__init__(*args, **kwargs)"},{"line_number":35,"context_line":"        self.backup_log \u003d f\u0027/tmp/{self.backup_binary}.log\u0027"},{"line_number":36,"context_line":"        self._gzip \u003d True"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @property"},{"line_number":39,"context_line":"    def cmd(self):"},{"line_number":40,"context_line":"        cmd \u003d (f\u0027{self.backup_binary} --backup --stream\u003dxbstream \u0027 +"}],"source_content_type":"text/x-python","patch_set":5,"id":"4b04daac_e367ec00","line":37,"in_reply_to":"a3e5a010_7be1aa2b","updated":"2025-05-22 13:03:54.000000000","message":"I don\u0027t think we can?\n\nAs binary name is inside of the class attributes, but what we can pass from outside are class arguments. And I don\u0027t think you can override attribute with argument?","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"}],"backup/main.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"ef3303a84ccb512715c3e0921896fc62c2c2de21","unresolved":true,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"cli_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027backup-id\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt("},{"line_number":33,"context_line":"        \u0027storage-driver\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"abc977c4_080781d2","line":30,"updated":"2025-05-21 13:01:14.000000000","message":"I prefer to add a new parameter \"ds-version\" here.","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"aaedb20bb7823bf295a79eef9aea0d3f53379f9a","unresolved":true,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"cli_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027backup-id\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt("},{"line_number":33,"context_line":"        \u0027storage-driver\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"f03a03e3_7eb4e190","line":30,"in_reply_to":"abc977c4_080781d2","updated":"2025-05-22 13:03:54.000000000","message":"There is no need in that. Datastore version is already passed as `swift_extra_metadata`.","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ca298c49b2e02f672ecc696dd093dd8b33b1d457","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"cli_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027backup-id\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt("},{"line_number":33,"context_line":"        \u0027storage-driver\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"c709af15_a7665295","line":30,"in_reply_to":"f03a03e3_7eb4e190","updated":"2025-05-22 13:33:29.000000000","message":"Done","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"ef3303a84ccb512715c3e0921896fc62c2c2de21","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        LOG.info(\u0027Starting restore database from %s, location: %s\u0027,"},{"line_number":178,"context_line":"                 CONF.storage_driver, CONF.restore_from)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        stream_restore_from_storage(runner_cls, storage)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"6c9e1f6a_e4f6afa8","line":180,"range":{"start_line":180,"start_character":7,"end_line":180,"end_character":56},"updated":"2025-05-21 13:01:14.000000000","message":"And pass the “ds-version\" here.","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"aaedb20bb7823bf295a79eef9aea0d3f53379f9a","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        LOG.info(\u0027Starting restore database from %s, location: %s\u0027,"},{"line_number":178,"context_line":"                 CONF.storage_driver, CONF.restore_from)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        stream_restore_from_storage(runner_cls, storage)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ae28a36c_552b3491","line":180,"range":{"start_line":180,"start_character":7,"end_line":180,"end_character":56},"in_reply_to":"6c9e1f6a_e4f6afa8","updated":"2025-05-22 13:03:54.000000000","message":"We can do like this:\n`ds_version \u003d CONF.swift_extra_metadata.get(\u0027datastore_version\u0027)`","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ca298c49b2e02f672ecc696dd093dd8b33b1d457","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        LOG.info(\u0027Starting restore database from %s, location: %s\u0027,"},{"line_number":178,"context_line":"                 CONF.storage_driver, CONF.restore_from)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        stream_restore_from_storage(runner_cls, storage)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bd52df8a_895fe376","line":180,"range":{"start_line":180,"start_character":7,"end_line":180,"end_character":56},"in_reply_to":"ae28a36c_552b3491","updated":"2025-05-22 13:33:29.000000000","message":"Done","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"}],"trove/common/cfg.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"ef3303a84ccb512715c3e0921896fc62c2c2de21","unresolved":true,"context_lines":[{"line_number":1378,"context_line":"                help\u003d\u0027List of UDP ports and/or port ranges to open \u0027"},{"line_number":1379,"context_line":"                     \u0027in the security group (only applicable \u0027"},{"line_number":1380,"context_line":"                     \u0027if trove_security_groups_support is True).\u0027),"},{"line_number":1381,"context_line":"    cfg.StrOpt(\u0027backup_strategy\u0027, default\u003d\u0027mariadb_backup\u0027,"},{"line_number":1382,"context_line":"               help\u003d\u0027Default strategy to perform backups.\u0027,"},{"line_number":1383,"context_line":"               deprecated_name\u003d\u0027backup_strategy\u0027,"},{"line_number":1384,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"65f9f4d6_3d44219e","line":1381,"range":{"start_line":1381,"start_character":3,"end_line":1381,"end_character":59},"updated":"2025-05-21 13:01:14.000000000","message":"I don\u0027t think changing the default setting is a good idea. And the `mariabackup` and `mariadb_backup` are exactly the same strategy. The difference is only the binary name. So i suggest passing datastore version parameter to driver. and let the driver to determine which binary should be used.\n\nAdditionally, if the default value is `mariadb_backup`, the previous built image(such as mariadb10.3 backup image) will not work after upgrading to this code in dev mode.","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ca298c49b2e02f672ecc696dd093dd8b33b1d457","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"                help\u003d\u0027List of UDP ports and/or port ranges to open \u0027"},{"line_number":1379,"context_line":"                     \u0027in the security group (only applicable \u0027"},{"line_number":1380,"context_line":"                     \u0027if trove_security_groups_support is True).\u0027),"},{"line_number":1381,"context_line":"    cfg.StrOpt(\u0027backup_strategy\u0027, default\u003d\u0027mariadb_backup\u0027,"},{"line_number":1382,"context_line":"               help\u003d\u0027Default strategy to perform backups.\u0027,"},{"line_number":1383,"context_line":"               deprecated_name\u003d\u0027backup_strategy\u0027,"},{"line_number":1384,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"e9d29bde_51607a6f","line":1381,"range":{"start_line":1381,"start_character":3,"end_line":1381,"end_character":59},"in_reply_to":"3f32031d_6b44d8cb","updated":"2025-05-22 13:33:29.000000000","message":"Done","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"aaedb20bb7823bf295a79eef9aea0d3f53379f9a","unresolved":true,"context_lines":[{"line_number":1378,"context_line":"                help\u003d\u0027List of UDP ports and/or port ranges to open \u0027"},{"line_number":1379,"context_line":"                     \u0027in the security group (only applicable \u0027"},{"line_number":1380,"context_line":"                     \u0027if trove_security_groups_support is True).\u0027),"},{"line_number":1381,"context_line":"    cfg.StrOpt(\u0027backup_strategy\u0027, default\u003d\u0027mariadb_backup\u0027,"},{"line_number":1382,"context_line":"               help\u003d\u0027Default strategy to perform backups.\u0027,"},{"line_number":1383,"context_line":"               deprecated_name\u003d\u0027backup_strategy\u0027,"},{"line_number":1384,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f32031d_6b44d8cb","line":1381,"range":{"start_line":1381,"start_character":3,"end_line":1381,"end_character":59},"in_reply_to":"59b3b5d8_9dc99ccc","updated":"2025-05-22 13:03:54.000000000","message":"So in fact I don\u0027t think there\u0027s a way to override the binary name through passed argument.\n\nSimply because passed arguments are","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"97f59bd6422e6ec900e7c38fc0d38c370398ef6e","unresolved":true,"context_lines":[{"line_number":1378,"context_line":"                help\u003d\u0027List of UDP ports and/or port ranges to open \u0027"},{"line_number":1379,"context_line":"                     \u0027in the security group (only applicable \u0027"},{"line_number":1380,"context_line":"                     \u0027if trove_security_groups_support is True).\u0027),"},{"line_number":1381,"context_line":"    cfg.StrOpt(\u0027backup_strategy\u0027, default\u003d\u0027mariadb_backup\u0027,"},{"line_number":1382,"context_line":"               help\u003d\u0027Default strategy to perform backups.\u0027,"},{"line_number":1383,"context_line":"               deprecated_name\u003d\u0027backup_strategy\u0027,"},{"line_number":1384,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"59b3b5d8_9dc99ccc","line":1381,"range":{"start_line":1381,"start_character":3,"end_line":1381,"end_character":59},"in_reply_to":"65f9f4d6_3d44219e","updated":"2025-05-22 06:54:36.000000000","message":"Well. You know my opinion, that it\u0027s not feasible to support whole history of database engines for the eternity and they must be phased out at some point.\n\nI also have huge doubts that 10.3 will even execute on Ubuntu 24.04 image, as it was never built against it - the last 10.3.39 was released on 2023-05-10.\n\n\u003e `mariabackup` and `mariadb_backup` are exactly the same strategy.\n\nmariadb-backup has evolved quite a lot and I am worried that they actually will diverge for MariaDB 11.8.\n\nBut yeah, probably we can add required logic there if version is passed indeed. But such logic can easily be comparable with the strategy itself... And that\u0027s to support EOLed software which is 7yo...\n\nAnyway. I will propose another alternative patch then which implements passing datastore.","commit_id":"388d81c698104fec974124f7fd72e20c8fe6064c"}]}
