)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"50718dbe4ec1743e117bf2249ed5f4709cf43b51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2744d2e6_6aaacbc9","updated":"2026-08-26 12:09:26.000000000","message":"recheck","commit_id":"d184fea9c2176b925b1e4053b0daedd46a5adedd"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"39ed48b9a8e1a743aad94f1c0becbc31d275e367","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ace852f4_93cd8b06","updated":"2026-09-02 08:53:06.000000000","message":"recheck","commit_id":"aa8ee050bc778697b6110991b10b8cb0d95b281e"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"6d06b5573339cb3307ad33a216d5c4e38d21487c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9c60c563_11913f7a","updated":"2026-09-15 08:03:12.000000000","message":"recheck","commit_id":"1c5ad55a02d34fda9f665a12c8a73ba794db7abc"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"1ee3b9b19c19825c32d6f6e02be183c7e8745c0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b1e70300_f83bbb53","updated":"2026-09-16 03:17:01.000000000","message":"recheck","commit_id":"136904d2658852ae99892499cf47171ca05e32b4"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"e763bdd8c49deac0da43a488fcf879df13423ac1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7391eded_d55f37ce","updated":"2026-09-21 04:08:14.000000000","message":"recheck","commit_id":"173c3d4a51bb53372a1a3082a49eda4b0fc88df3"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"8ad0c9e0bcd379339864d80b19c2b3a1ac92b1d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8aed7c47_d2449e40","updated":"2026-09-20 03:27:29.000000000","message":"recheck","commit_id":"173c3d4a51bb53372a1a3082a49eda4b0fc88df3"},{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"erkin.mussurmankulov@ps.kz","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"62702fdc9466e8e9f8db09e0c71bc1a54800bbd4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8cd37ec1_25c58c59","updated":"2026-09-21 04:03:14.000000000","message":"recheck","commit_id":"173c3d4a51bb53372a1a3082a49eda4b0fc88df3"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"da0d78fb46a9eb9a4d6f0bea98c7f135e08811ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"adc71382_7b9806f3","updated":"2026-09-21 06:11:17.000000000","message":"recheck","commit_id":"173c3d4a51bb53372a1a3082a49eda4b0fc88df3"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"d1a194adfee184f20b82933135d7f62a8c84948c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b5379a32_64eabe9d","updated":"2026-09-20 06:10:07.000000000","message":"recheck","commit_id":"173c3d4a51bb53372a1a3082a49eda4b0fc88df3"},{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"erkin.mussurmankulov@ps.kz","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"65ad1c18511392cc0b25772e339bfd46efdab366","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"afc5535e_7a5917ed","updated":"2026-10-05 17:12:17.000000000","message":"recheck","commit_id":"02e888cdbed1c8c5a4f57386f5311f442527c3c8"}],"trove/guestagent/datastore/mysql_common/service.py":[{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"erkin.mussurmankulov@ps.kz","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"27b101c1a411fe190245edcd244c79164e7d6e74","unresolved":true,"context_lines":[{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def get_replication_health(self):"},{"line_number":823,"context_line":"        \"\"\"Return replica health, or None when this is not a replica.\"\"\""},{"line_number":824,"context_line":"        replica_status \u003d self._get_slave_status()"},{"line_number":825,"context_line":"        if replica_status is None:"},{"line_number":826,"context_line":"            return None"},{"line_number":827,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b2851b68_c79f2afa","line":824,"updated":"2026-08-25 16:05:26.000000000","message":"I can see that the implementation is working and the code is clean, but there\u0027s an opportunity to make it better.\n\nThe guestagent knows at the instance creation and other replication-related methods that the current instance is a replica, or it stops being a replica. So we can leverage this and avoid repeated checks. I\u0027m concerned that these checks will run against a standalone database instance as well, generating requests to the DB which may be avoided. Also, for replicas, this approach will reduce the number of check requests in half. I think this goal is worth complicating the code a little bit.\nYou can leverage `/etc/trove/guest_info.conf`. Right now, we may use the `override_guest_info` method for that. Also, don\u0027t forget to pass the configuration option during create/rebuild.\n\nAs far as I remember, the original implementation in our fork was doing it that way; it was just buried under the logic behind status classes.\n\nAlso, considering the nontrivial functionality of this feature, I think that we require additional test scenarios dedicated to the `UNSYNC` status; for example, we can extend the existing test after `if not CONF.database.run_full_tests: return` in `replication_test`.","commit_id":"ff35202d076d0209e4c99c51deaf1f2a96e0cccc"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"bb5515da6a8b21597d98c9ea0ecf19213cc5ad92","unresolved":false,"context_lines":[{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def get_replication_health(self):"},{"line_number":823,"context_line":"        \"\"\"Return replica health, or None when this is not a replica.\"\"\""},{"line_number":824,"context_line":"        replica_status \u003d self._get_slave_status()"},{"line_number":825,"context_line":"        if replica_status is None:"},{"line_number":826,"context_line":"            return None"},{"line_number":827,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"eefeb99c_030eace5","line":824,"in_reply_to":"b2851b68_c79f2afa","updated":"2026-08-26 13:00:52.000000000","message":"Done!\n\nAdded the `is_replica` opt to `guest_info.conf`, its initial value comes from `slave_of_id` during create/rebuild, and the guestagent updates it after successful attach/detach/promote operations.\n\nStandalone instances no longer run replication queries. For thread-based replicas, the replication status query also confirms that the database is responsive, so no additional requests to DB.\n\nI also extended the existing replication scenario in [trove-tempest-plugin](https://review.opendev.org/c/openstack/trove-tempest-plugin/+/1001771). It checks the `UNSYNC` -\u003e `HEALTHY` transition with the first replica, and repeats the check after promotion in the full scenario to make sure the persisted role is updated correctly.","commit_id":"ff35202d076d0209e4c99c51deaf1f2a96e0cccc"}]}
