)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"bee5321d617bc47a0a0a617f39bedca412b798c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"646b7955_c99c0e07","updated":"2026-05-13 05:19:48.000000000","message":"Also triggered a copilot review now.","commit_id":"167624ecf5ff67965371d692177ec2fe14be81c8"},{"author":{"_account_id":1003869,"name":"Couchbase Robot","email":"build-team@couchbase.com","username":"cb-robot","avatars":[{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"d72c1919551150692c551ab0476272b091a58085","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b4c24dc9_c401f064","updated":"2026-05-13 12:08:41.000000000","message":"The commit message lacks detail about the specific changes made in the tests and configurations. A clearer commit message would be: \u0027Add tests for KV rate limiting scenarios including SDK exceptions, Prometheus metrics, storage backend parametrization, Sync Gateway backoff simulation, and upgrade scenarios. Update configuration to include new test cases.\u0027","commit_id":"a9f071b965ead7d5841b2b9beb5d80438d72121a"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"db3519b5947fe978dce2fb475c2cb02545adeef7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c26bf9bb_94d95226","in_reply_to":"b4c24dc9_c401f064","updated":"2026-05-15 08:56:10.000000000","message":"Done","commit_id":"a9f071b965ead7d5841b2b9beb5d80438d72121a"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e98991331a3edf2b0085d0882e9cf4a6e4acb2b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"fd137020_77ea6411","updated":"2026-05-15 10:49:31.000000000","message":"ai review","commit_id":"363df318cb5321add5572671a38ac16bbd546576"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e51ce38f2429c30f13afbf1bc595c60c98d6e12b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5daf5ec3_d5431b61","updated":"2026-05-15 10:57:40.000000000","message":"ai review model\u003dgpt-5.2-codex effort\u003dhigh","commit_id":"363df318cb5321add5572671a38ac16bbd546576"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"98bc9764cad2d982bc49e80f22a91364af2f59f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"abccca92_80a7fee8","updated":"2026-05-15 16:28:03.000000000","message":"ai review","commit_id":"e4b37236e77faa6ce8f169f4a06318c3c30b22e8"}],"conf/ep_engine/rate_limiting_steady_state.conf":[{"author":{"_account_id":1003869,"name":"Couchbase Robot","email":"build-team@couchbase.com","username":"cb-robot","avatars":[{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2c124bf67353198496a342a5a0590f7f2b16b08f","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    test_soft_limit_throttling,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dmagma,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":6,"context_line":"    test_hard_limit_rejection,nodes_init\u003d1,GROUP\u003dP0,bucket_type\u003dephemeral,bucket_eviction_policy\u003dnoEviction,bucket_throttle_reserved\u003d50,bucket_throttle_hard_limit\u003d100"},{"line_number":7,"context_line":"    test_transaction_rate_limiting,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d500,bucket_throttle_hard_limit\u003d1000"},{"line_number":8,"context_line":"    test_sdk_rate_limited_exception,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d50,bucket_throttle_hard_limit\u003d100"},{"line_number":9,"context_line":"    test_prometheus_throttle_metrics,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":10,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dcouchstore,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":11,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dmagma,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":12,"context_line":"    test_sync_gateway_backoff_simulation,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d200"},{"line_number":13,"context_line":"    test_rate_limit_in_mixed_mode_cluster,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"},{"line_number":14,"context_line":"    test_rate_limit_after_full_upgrade,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"}],"source_content_type":"text/plain","patch_set":1,"id":"62220b7b_dfb6d35c","line":14,"range":{"start_line":8,"start_character":4,"end_line":14,"end_character":168},"updated":"2026-05-10 19:38:13.000000000","message":"The configuration file \u0027conf/ep_engine/rate_limiting_steady_state.conf\u0027 has been updated with new test cases. Ensure that these configurations are well-documented and that any dependencies or requirements for running these tests are clearly stated.","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"db3519b5947fe978dce2fb475c2cb02545adeef7","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    test_soft_limit_throttling,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dmagma,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":6,"context_line":"    test_hard_limit_rejection,nodes_init\u003d1,GROUP\u003dP0,bucket_type\u003dephemeral,bucket_eviction_policy\u003dnoEviction,bucket_throttle_reserved\u003d50,bucket_throttle_hard_limit\u003d100"},{"line_number":7,"context_line":"    test_transaction_rate_limiting,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d500,bucket_throttle_hard_limit\u003d1000"},{"line_number":8,"context_line":"    test_sdk_rate_limited_exception,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d50,bucket_throttle_hard_limit\u003d100"},{"line_number":9,"context_line":"    test_prometheus_throttle_metrics,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":10,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dcouchstore,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":11,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dmagma,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":12,"context_line":"    test_sync_gateway_backoff_simulation,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d200"},{"line_number":13,"context_line":"    test_rate_limit_in_mixed_mode_cluster,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"},{"line_number":14,"context_line":"    test_rate_limit_after_full_upgrade,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"}],"source_content_type":"text/plain","patch_set":1,"id":"f163c0cc_02e17d39","line":14,"range":{"start_line":8,"start_character":4,"end_line":14,"end_character":168},"in_reply_to":"62220b7b_dfb6d35c","updated":"2026-05-15 08:56:10.000000000","message":"Done","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2bea01b2b320ccb2cb0bd0c76735ea4f3980b836","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dcouchstore,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":11,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dmagma,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":12,"context_line":"    test_sync_gateway_backoff_simulation,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d200"},{"line_number":13,"context_line":"    test_rate_limit_in_mixed_mode_cluster,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"},{"line_number":14,"context_line":"    test_rate_limit_after_full_upgrade,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"}],"source_content_type":"text/plain","patch_set":14,"id":"26a00966_3f4e9c2d","line":13,"in_reply_to":"17a80932_33208760","updated":"2026-05-15 12:56:37.000000000","message":"Done","commit_id":"363df318cb5321add5572671a38ac16bbd546576"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"03e3e880dd3be534cadb7247a6334e18606fe5ea","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dcouchstore,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":11,"context_line":"    test_couchstore_and_magma_throttle,nodes_init\u003d1,GROUP\u003dP0,bucket_storage\u003dmagma,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d10000"},{"line_number":12,"context_line":"    test_sync_gateway_backoff_simulation,nodes_init\u003d1,GROUP\u003dP0,bucket_throttle_reserved\u003d100,bucket_throttle_hard_limit\u003d200"},{"line_number":13,"context_line":"    test_rate_limit_in_mixed_mode_cluster,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"},{"line_number":14,"context_line":"    test_rate_limit_after_full_upgrade,nodes_init\u003d3,upgrade_type\u003donline_swap,upgrade_chain\u003d7.6.7,bucket_throttle_reserved\u003d6000,bucket_throttle_hard_limit\u003d12000,GROUP\u003dP0"}],"source_content_type":"text/plain","patch_set":14,"id":"17a80932_33208760","line":13,"in_reply_to":"8b2aba80_06e56d59","updated":"2026-05-15 12:41:55.000000000","message":"\u003e These entries are under `KVRateLimitingTests`, but the methods are defined on `RateLimitingUpgradeTests`, so testrunner will skip them. Move them under a `epengine.rate_limiting_tests.RateLimitingUpgradeTests:` section, e.g.:\n\u003e \n\u003e epengine.rate_limiting_tests.RateLimitingUpgradeTests:\n\u003e     test_rate_limit_in_mixed_mode_cluster,...\n\u003e     test_rate_limit_after_full_upgrade,...\n\u003e \n\u003e \n\nPlease fix.","commit_id":"363df318cb5321add5572671a38ac16bbd546576"}],"lib/sdk_exceptions.py":[{"author":{"_account_id":1003869,"name":"Couchbase Robot","email":"build-team@couchbase.com","username":"cb-robot","avatars":[{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2c124bf67353198496a342a5a0590f7f2b16b08f","unresolved":true,"context_lines":[{"line_number":101,"context_line":"        \"ServerOutOfMemoryException\","},{"line_number":102,"context_line":"    ]"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    RateLimitedException \u003d ["},{"line_number":105,"context_line":"        \"com.couchbase.client.core.error.RateLimitedException\","},{"line_number":106,"context_line":"        \"RateLimitedException\","},{"line_number":107,"context_line":"        \"EWouldThrottle\","},{"line_number":108,"context_line":"        \"WouldThrottle\","},{"line_number":109,"context_line":"        \"rate_limited\","},{"line_number":110,"context_line":"        \"rate limit\","},{"line_number":111,"context_line":"    ]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    class RetryReason(object):"},{"line_number":114,"context_line":"        SyncWriteAmbiguous \u003d \"SyncWriteAmbiguous\""}],"source_content_type":"text/x-python","patch_set":1,"id":"b19d2723_22700e54","line":111,"range":{"start_line":104,"start_character":4,"end_line":111,"end_character":5},"updated":"2026-05-10 19:38:13.000000000","message":"In \u0027lib/sdk_exceptions.py\u0027, the addition of \u0027RateLimitedException\u0027 should be documented to explain its purpose and how it integrates with the existing exception handling framework.","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"db3519b5947fe978dce2fb475c2cb02545adeef7","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        \"ServerOutOfMemoryException\","},{"line_number":102,"context_line":"    ]"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    RateLimitedException \u003d ["},{"line_number":105,"context_line":"        \"com.couchbase.client.core.error.RateLimitedException\","},{"line_number":106,"context_line":"        \"RateLimitedException\","},{"line_number":107,"context_line":"        \"EWouldThrottle\","},{"line_number":108,"context_line":"        \"WouldThrottle\","},{"line_number":109,"context_line":"        \"rate_limited\","},{"line_number":110,"context_line":"        \"rate limit\","},{"line_number":111,"context_line":"    ]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    class RetryReason(object):"},{"line_number":114,"context_line":"        SyncWriteAmbiguous \u003d \"SyncWriteAmbiguous\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff30e42a_16bf59ec","line":111,"range":{"start_line":104,"start_character":4,"end_line":111,"end_character":5},"in_reply_to":"b19d2723_22700e54","updated":"2026-05-15 08:56:10.000000000","message":"Done","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"bee5321d617bc47a0a0a617f39bedca412b798c8","unresolved":true,"context_lines":[{"line_number":107,"context_line":"        \"EWouldThrottle\","},{"line_number":108,"context_line":"        \"WouldThrottle\","},{"line_number":109,"context_line":"        \"rate_limited\","},{"line_number":110,"context_line":"        \"rate limit\","},{"line_number":111,"context_line":"    ]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    class RetryReason(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"0e492453_d5a42709","line":110,"range":{"start_line":110,"start_character":9,"end_line":110,"end_character":20},"updated":"2026-05-13 05:19:48.000000000","message":"Can you paste a sample exception to understand these patterns better.\n\nReg. the `rate limit` value, we generally won\u0027t get space separated exceptions. Please double check on this.\nAnd `EWouldThrottle` and `WouldThrottle` looks similar. Are we getting two diff exceptions here ?","commit_id":"167624ecf5ff67965371d692177ec2fe14be81c8"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e51ce38f2429c30f13afbf1bc595c60c98d6e12b","unresolved":true,"context_lines":[{"line_number":107,"context_line":"        \"EWouldThrottle\","},{"line_number":108,"context_line":"        \"WouldThrottle\","},{"line_number":109,"context_line":"        \"rate_limited\","},{"line_number":110,"context_line":"        \"rate limit\","},{"line_number":111,"context_line":"    ]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    class RetryReason(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"6949887b_255c2741","line":110,"range":{"start_line":110,"start_character":9,"end_line":110,"end_character":20},"in_reply_to":"0b9abc53_3173229e","updated":"2026-05-15 10:57:40.000000000","message":"Sure Shiva, then we should remove  the following strings:\n RateLimitedException\n WouldThrottle\n rate_limited\n rate limit","commit_id":"167624ecf5ff67965371d692177ec2fe14be81c8"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"db3519b5947fe978dce2fb475c2cb02545adeef7","unresolved":true,"context_lines":[{"line_number":107,"context_line":"        \"EWouldThrottle\","},{"line_number":108,"context_line":"        \"WouldThrottle\","},{"line_number":109,"context_line":"        \"rate_limited\","},{"line_number":110,"context_line":"        \"rate limit\","},{"line_number":111,"context_line":"    ]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    class RetryReason(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"0b9abc53_3173229e","line":110,"range":{"start_line":110,"start_character":9,"end_line":110,"end_character":20},"in_reply_to":"0e492453_d5a42709","updated":"2026-05-15 08:56:10.000000000","message":"The Python SDK throws AmbiguousTimeoutException when ops are throttled and the timeout expires:\n\nAmbiguousTimeoutException(\u003cec\u003d13, category\u003dcouchbase.common, message\u003dambiguous_timeout (13),\ncontext\u003dKeyValueErrorContext:{\u0027retry_attempts\u0027: 0, \u0027key\u0027: \u0027burst_7_1354\u0027, \u0027bucket_name\u0027: \u0027default\u0027,\n\u0027scope_name\u0027: \u0027_default\u0027, \u0027collection_name\u0027: \u0027_default\u0027, \u0027opaque\u0027: 679},\nC Source\u003d/couchbase-python-client/src/kv_ops.cxx:680\u003e)The Python SDK handles EWOULD_THROTTLE internally with retry/backoff and never surfaces it as a RateLimitedException — it times out as AmbiguousTimeoutException if the op exceeds the timeout. The EWOULD_THROTTLE / RATE_LIMITED patterns are Java SDK strings that don\u0027t appear in Python SDK exceptions, so removed them.\n\nAmbiguousTimeoutException is already in SDKException and is used for the detection now.\n\nhttp://qe-jenkins1.sc.couchbase.com/job/temp_job_shiva/223/\nAll 7 tests passed. sdk_throttle_count\u003d2 was caught via AmbiguousTimeoutException on couchstore (burst of 8 clients × 5000 ops against hard_limit\u003d10000); the remaining tests confirmed throttling via throttle_count_total stat increase (e.g., 0→120, 0→222, 0→312). Both detection paths work.","commit_id":"167624ecf5ff67965371d692177ec2fe14be81c8"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e93177e98cf0609b7be2cebd74a88f2ad639c8f7","unresolved":true,"context_lines":[{"line_number":107,"context_line":"        \"EWouldThrottle\","},{"line_number":108,"context_line":"        \"WouldThrottle\","},{"line_number":109,"context_line":"        \"rate_limited\","},{"line_number":110,"context_line":"        \"rate limit\","},{"line_number":111,"context_line":"    ]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    class RetryReason(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ef4cd44f_91400092","line":110,"range":{"start_line":110,"start_character":9,"end_line":110,"end_character":20},"in_reply_to":"6949887b_255c2741","updated":"2026-05-15 12:28:38.000000000","message":"Yes Ashwin, they are removed","commit_id":"167624ecf5ff67965371d692177ec2fe14be81c8"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2bea01b2b320ccb2cb0bd0c76735ea4f3980b836","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        \"EWouldThrottle\","},{"line_number":108,"context_line":"        \"WouldThrottle\","},{"line_number":109,"context_line":"        \"rate_limited\","},{"line_number":110,"context_line":"        \"rate limit\","},{"line_number":111,"context_line":"    ]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    class RetryReason(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"536ca81e_3cfdc9fa","line":110,"range":{"start_line":110,"start_character":9,"end_line":110,"end_character":20},"in_reply_to":"ef4cd44f_91400092","updated":"2026-05-15 12:56:37.000000000","message":"Done","commit_id":"167624ecf5ff67965371d692177ec2fe14be81c8"}],"pytests/epengine/rate_limiting_tests.py":[{"author":{"_account_id":1003869,"name":"Couchbase Robot","email":"build-team@couchbase.com","username":"cb-robot","avatars":[{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2c124bf67353198496a342a5a0590f7f2b16b08f","unresolved":true,"context_lines":[{"line_number":6,"context_line":"from cb_tools.cbstats import Cbstats"},{"line_number":7,"context_line":"from cb_server_rest_util.cluster_nodes.cluster_nodes_api import ClusterRestAPI"},{"line_number":8,"context_line":"from cb_server_rest_util.buckets.buckets_api import BucketRestApi"},{"line_number":9,"context_line":"from sdk_client3 import SDKClient"},{"line_number":10,"context_line":"from sdk_exceptions import SDKException"},{"line_number":11,"context_line":"from StatsLib.StatsOperations import StatsHelper"},{"line_number":12,"context_line":"from upgrade.upgrade_base import UpgradeBase"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5512f9b7_fc75b33c","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":39},"updated":"2026-05-10 19:38:13.000000000","message":"The import statement for \u0027SDKClient\u0027 and \u0027SDKException\u0027 in \u0027pytests/epengine/rate_limiting_tests.py\u0027 should be checked for necessity. If these imports are not used in the file, they should be removed to avoid unnecessary dependencies.","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"db3519b5947fe978dce2fb475c2cb02545adeef7","unresolved":false,"context_lines":[{"line_number":6,"context_line":"from cb_tools.cbstats import Cbstats"},{"line_number":7,"context_line":"from cb_server_rest_util.cluster_nodes.cluster_nodes_api import ClusterRestAPI"},{"line_number":8,"context_line":"from cb_server_rest_util.buckets.buckets_api import BucketRestApi"},{"line_number":9,"context_line":"from sdk_client3 import SDKClient"},{"line_number":10,"context_line":"from sdk_exceptions import SDKException"},{"line_number":11,"context_line":"from StatsLib.StatsOperations import StatsHelper"},{"line_number":12,"context_line":"from upgrade.upgrade_base import UpgradeBase"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5c14bf33_347dec0d","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":39},"in_reply_to":"5512f9b7_fc75b33c","updated":"2026-05-15 08:56:10.000000000","message":"Done","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1003869,"name":"Couchbase Robot","email":"build-team@couchbase.com","username":"cb-robot","avatars":[{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2c124bf67353198496a342a5a0590f7f2b16b08f","unresolved":true,"context_lines":[{"line_number":264,"context_line":"            self.assertGreater(final_wu, initial_wu,"},{"line_number":265,"context_line":"                               \"Write units should increase after transactions\")"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def test_sdk_rate_limited_exception(self):"},{"line_number":268,"context_line":"        \"\"\""},{"line_number":269,"context_line":"        Validate new SDK clients receive a rate-limited / EWouldThrottle"},{"line_number":270,"context_line":"        exception (or rejection count increases) when ops exceed hard limit."},{"line_number":271,"context_line":"        \"\"\""},{"line_number":272,"context_line":"        bucket_name \u003d self.bucket.name"},{"line_number":273,"context_line":"        initial_stats \u003d self.get_throttle_stats(bucket_name)"},{"line_number":274,"context_line":"        initial_reject \u003d int(initial_stats.get(\"reject_count_total\", 0))"}],"source_content_type":"text/x-python","patch_set":1,"id":"b4aba3a2_d5c09982","line":271,"range":{"start_line":267,"start_character":4,"end_line":271,"end_character":11},"updated":"2026-05-10 19:38:13.000000000","message":"In \u0027pytests/epengine/rate_limiting_tests.py\u0027, the method \u0027test_sdk_rate_limited_exception\u0027 could benefit from additional comments explaining the logic behind the exception handling and the conditions under which the test is expected to pass or fail.","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"db3519b5947fe978dce2fb475c2cb02545adeef7","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            self.assertGreater(final_wu, initial_wu,"},{"line_number":265,"context_line":"                               \"Write units should increase after transactions\")"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def test_sdk_rate_limited_exception(self):"},{"line_number":268,"context_line":"        \"\"\""},{"line_number":269,"context_line":"        Validate new SDK clients receive a rate-limited / EWouldThrottle"},{"line_number":270,"context_line":"        exception (or rejection count increases) when ops exceed hard limit."},{"line_number":271,"context_line":"        \"\"\""},{"line_number":272,"context_line":"        bucket_name \u003d self.bucket.name"},{"line_number":273,"context_line":"        initial_stats \u003d self.get_throttle_stats(bucket_name)"},{"line_number":274,"context_line":"        initial_reject \u003d int(initial_stats.get(\"reject_count_total\", 0))"}],"source_content_type":"text/x-python","patch_set":1,"id":"14887d66_61d2db74","line":271,"range":{"start_line":267,"start_character":4,"end_line":271,"end_character":11},"in_reply_to":"b4aba3a2_d5c09982","updated":"2026-05-15 08:56:10.000000000","message":"Done","commit_id":"2603430d7ae66071b1aa634b44f2a49addeef295"},{"author":{"_account_id":1003869,"name":"Couchbase Robot","email":"build-team@couchbase.com","username":"cb-robot","avatars":[{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/d465bd97bd9f40f1453c5b112ef4a021.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"33990b0890d1e47585b7065d595075e23650b43e","unresolved":true,"context_lines":[{"line_number":24,"context_line":"        self.log.info(\"Starting KVRateLimitingTests synchronized with latest framework\")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        # Cluster-wide throttle enable; node_capacity kept low to trip throttler"},{"line_number":27,"context_line":"        status, content \u003d self.cluster_rest.manage_global_memcached_setting("},{"line_number":28,"context_line":"            throttle_enabled\u003d\"true\","},{"line_number":29,"context_line":"            node_capacity\u003dself.input.param(\"node_capacity\", 500))"},{"line_number":30,"context_line":"        self.log.info(f\"Cluster-wide throttle enable: status\u003d{status}, \""},{"line_number":31,"context_line":"                      f\"content\u003d{content}\")"},{"line_number":32,"context_line":"        self.assertTrue(status,"}],"source_content_type":"text/x-python","patch_set":7,"id":"a9ac172a_40f20ab5","line":29,"range":{"start_line":27,"start_character":8,"end_line":29,"end_character":65},"updated":"2026-05-11 17:00:37.000000000","message":"In \u0027pytests/epengine/rate_limiting_tests.py\u0027, the setup method enables cluster-wide throttling but does not provide a mechanism to verify if the throttling settings are correctly applied across all nodes. Consider adding a verification step to ensure consistency.","commit_id":"e430bdb4a364b8d7e1a4c677ecfeaf6eb2d57209"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"db3519b5947fe978dce2fb475c2cb02545adeef7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        self.log.info(\"Starting KVRateLimitingTests synchronized with latest framework\")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        # Cluster-wide throttle enable; node_capacity kept low to trip throttler"},{"line_number":27,"context_line":"        status, content \u003d self.cluster_rest.manage_global_memcached_setting("},{"line_number":28,"context_line":"            throttle_enabled\u003d\"true\","},{"line_number":29,"context_line":"            node_capacity\u003dself.input.param(\"node_capacity\", 500))"},{"line_number":30,"context_line":"        self.log.info(f\"Cluster-wide throttle enable: status\u003d{status}, \""},{"line_number":31,"context_line":"                      f\"content\u003d{content}\")"},{"line_number":32,"context_line":"        self.assertTrue(status,"}],"source_content_type":"text/x-python","patch_set":7,"id":"e27e7e59_e01ccd7e","line":29,"range":{"start_line":27,"start_character":8,"end_line":29,"end_character":65},"in_reply_to":"a9ac172a_40f20ab5","updated":"2026-05-15 08:56:10.000000000","message":"Done","commit_id":"e430bdb4a364b8d7e1a4c677ecfeaf6eb2d57209"},{"author":{"_account_id":1005411,"name":"shivanand-adky","email":"shiva.adky@couchbase.com","username":"shivanand-adky","avatars":[{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0737c76cdc8fc973d9953211db8cd7b0.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2bea01b2b320ccb2cb0bd0c76735ea4f3980b836","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        self.log.info(\"Starting KVRateLimitingTests synchronized with latest framework\")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        # Cluster-wide throttle enable; node_capacity kept low to trip throttler"},{"line_number":27,"context_line":"        status, content \u003d self.cluster_rest.manage_global_memcached_setting("},{"line_number":28,"context_line":"            throttle_enabled\u003d\"true\","},{"line_number":29,"context_line":"            node_capacity\u003dself.input.param(\"node_capacity\", 500))"},{"line_number":30,"context_line":"        self.log.info(f\"Cluster-wide throttle enable: status\u003d{status}, \""}],"source_content_type":"text/x-python","patch_set":14,"id":"f519ed52_1c259dce","line":27,"in_reply_to":"c740ece4_cee58fb9","updated":"2026-05-15 12:56:37.000000000","message":"Done","commit_id":"363df318cb5321add5572671a38ac16bbd546576"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"03e3e880dd3be534cadb7247a6334e18606fe5ea","unresolved":true,"context_lines":[{"line_number":24,"context_line":"        self.log.info(\"Starting KVRateLimitingTests synchronized with latest framework\")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        # Cluster-wide throttle enable; node_capacity kept low to trip throttler"},{"line_number":27,"context_line":"        status, content \u003d self.cluster_rest.manage_global_memcached_setting("},{"line_number":28,"context_line":"            throttle_enabled\u003d\"true\","},{"line_number":29,"context_line":"            node_capacity\u003dself.input.param(\"node_capacity\", 500))"},{"line_number":30,"context_line":"        self.log.info(f\"Cluster-wide throttle enable: status\u003d{status}, \""}],"source_content_type":"text/x-python","patch_set":14,"id":"c740ece4_cee58fb9","line":27,"in_reply_to":"ff75b0a4_af665c6d","updated":"2026-05-15 12:41:55.000000000","message":"\u003e Enabling cluster-wide throttle unconditionally will fail CE runs: `ce.conf` executes `test_rate_limiting_unavailable_in_ce` and expects the REST call to be rejected, but setUp now asserts success before the test can run. Guard this call by edition or a test param. For example:\n\u003e \n\u003e if self.cluster_util.is_enterprise_edition(self.cluster):\n\u003e     status, content \u003d self.cluster_rest.manage_global_memcached_setting(\n\u003e         throttle_enabled\u003d\u0027true\u0027,\n\u003e         node_capacity\u003dself.input.param(\u0027node_capacity\u0027, 500))\n\u003e     self.assertTrue(\n\u003e         status, f\u0027Failed to enable cluster-wide throttle: {content}\u0027)\n\u003e else:\n\u003e     self.log.info(\u0027Skipping global throttle enable on CE\u0027)\n\u003e \n\u003e \n\nPlease fix.","commit_id":"363df318cb5321add5572671a38ac16bbd546576"},{"author":{"_account_id":1004304,"name":"Ashwin","email":"ashwin.govindarajulu@couchbase.com","username":"ashwin2002","avatars":[{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/2ee592846162e058ddc8e055dd3f55ce.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"acf7152a11503778be90c0991b764045a2f89ba8","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        # Cluster-wide throttle enable; node_capacity kept low to trip throttler"},{"line_number":27,"context_line":"        # CE does not support throttling — skip to allow CE-specific tests to run"},{"line_number":28,"context_line":"        if self.cluster_util.is_enterprise_edition(self.cluster):"},{"line_number":29,"context_line":"            status, content \u003d self.cluster_rest.manage_global_memcached_setting("},{"line_number":30,"context_line":"                throttle_enabled\u003d\"true\","},{"line_number":31,"context_line":"                node_capacity\u003dself.input.param(\"node_capacity\", 500))"}],"source_content_type":"text/x-python","patch_set":17,"id":"cfdf4aec_c3091ffc","line":28,"range":{"start_line":28,"start_character":11,"end_line":28,"end_character":64},"updated":"2026-05-15 13:21:36.000000000","message":"We can use `self.cluster.edition \u003d\u003d \"enterprise\"`","commit_id":"e4b37236e77faa6ce8f169f4a06318c3c30b22e8"}]}
