)]}'
{"/PATCHSET_LEVEL":[{"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":"151b087badba2a9b5aa9f30d3e8865a5e4c71937","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"96138a40_1f57f708","updated":"2026-05-21 23:22:32.000000000","message":"The commit message \"Add mongo/rosetta ycsb driver\" lacks detail. It does not describe the specific changes made or the purpose of these changes. A clearer commit message would be: \"Introduce MongoDB and Rosetta support in YCSB driver. Added tasks for MongoDB data load and workload, and implemented Rosetta target iterator and throughput test.\"","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"},{"author":{"_account_id":1005024,"name":"Salim Salim","email":"salim.salim@couchbase.com","username":"sudosalim","avatars":[{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7043ee15b43832c828a96e7ecfc2e6808f4b78e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0c62a1d0_69157558","in_reply_to":"96138a40_1f57f708","updated":"2026-05-22 11:39:47.000000000","message":"Acknowledged","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"}],"perfrunner/helpers/worker.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":"151b087badba2a9b5aa9f30d3e8865a5e4c71937","unresolved":true,"context_lines":[{"line_number":148,"context_line":"def ycsb_data_load_task(*args):"},{"line_number":149,"context_line":"    ycsb_data_load(*args)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"@celery.task"},{"line_number":152,"context_line":"def ycsb_mongo_data_load_task(*args):"},{"line_number":153,"context_line":"    ycsb_mongo_data_load(*args)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"@celery.task"},{"line_number":156,"context_line":"def ycsb_mongo_workload_task(*args):"},{"line_number":157,"context_line":"    ycsb_mongo_workload(*args)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"@celery.task"},{"line_number":160,"context_line":"def ycsb_task(*args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"e706f3fc_8dcb7acc","line":157,"range":{"start_line":151,"start_character":0,"end_line":157,"end_character":30},"updated":"2026-05-21 23:22:32.000000000","message":"The new `ycsb_mongo_data_load_task` and `ycsb_mongo_workload_task` functions in `perfrunner/helpers/worker.py` lack any form of error handling or logging. Consider adding error handling to manage potential exceptions and logging to track task execution.","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"},{"author":{"_account_id":1005024,"name":"Salim Salim","email":"salim.salim@couchbase.com","username":"sudosalim","avatars":[{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7043ee15b43832c828a96e7ecfc2e6808f4b78e8","unresolved":false,"context_lines":[{"line_number":148,"context_line":"def ycsb_data_load_task(*args):"},{"line_number":149,"context_line":"    ycsb_data_load(*args)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"@celery.task"},{"line_number":152,"context_line":"def ycsb_mongo_data_load_task(*args):"},{"line_number":153,"context_line":"    ycsb_mongo_data_load(*args)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"@celery.task"},{"line_number":156,"context_line":"def ycsb_mongo_workload_task(*args):"},{"line_number":157,"context_line":"    ycsb_mongo_workload(*args)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"@celery.task"},{"line_number":160,"context_line":"def ycsb_task(*args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"45cc31d4_993b8cbd","line":157,"range":{"start_line":151,"start_character":0,"end_line":157,"end_character":30},"in_reply_to":"e706f3fc_8dcb7acc","updated":"2026-05-22 11:39:47.000000000","message":"Acknowledged","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"}],"perfrunner/tests/ycsb.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":"151b087badba2a9b5aa9f30d3e8865a5e4c71937","unresolved":true,"context_lines":[{"line_number":184,"context_line":"        super().__init__(*args, **kwargs)"},{"line_number":185,"context_line":"        self.target_iterator \u003d RosettaTargetIterator(self.cluster_spec, self.test_config)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def generate_haproxy_config(self):"},{"line_number":188,"context_line":"        rosetta_nodes \u003d self.cluster_spec.stellar_rosettas"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        config_lines \u003d ["},{"line_number":191,"context_line":"            \"frontend cng_frontend\","},{"line_number":192,"context_line":"            \"    mode tcp\","},{"line_number":193,"context_line":"            \"    bind *:27017\","},{"line_number":194,"context_line":"            \"    default_backend cng_backend\","},{"line_number":195,"context_line":"            \"\","},{"line_number":196,"context_line":"            \"backend cng_backend\","},{"line_number":197,"context_line":"            \"    mode tcp\","},{"line_number":198,"context_line":"            \"    balance roundrobin\""},{"line_number":199,"context_line":"        ]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        for i in range(0, len(rosetta_nodes)):"},{"line_number":202,"context_line":"            config_lines.append(f\"    server cng{i} {rosetta_nodes[i]}:27017 check\")"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        config \u003d \"\\n\".join(config_lines)"},{"line_number":205,"context_line":"        logger.info(f\"Generated HAProxy config: {config}\")"},{"line_number":206,"context_line":"        return config"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def start_haproxy(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"522765a9_cc2100aa","line":206,"range":{"start_line":187,"start_character":4,"end_line":206,"end_character":21},"updated":"2026-05-21 23:22:32.000000000","message":"The `YCSBThroughputRosettaTest` class in `perfrunner/tests/ycsb.py` introduces a method `generate_haproxy_config` that constructs a configuration string without validating the input data. Consider adding validation to ensure that the `rosetta_nodes` list is not empty and contains valid data.","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"},{"author":{"_account_id":1005024,"name":"Salim Salim","email":"salim.salim@couchbase.com","username":"sudosalim","avatars":[{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7043ee15b43832c828a96e7ecfc2e6808f4b78e8","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        super().__init__(*args, **kwargs)"},{"line_number":185,"context_line":"        self.target_iterator \u003d RosettaTargetIterator(self.cluster_spec, self.test_config)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def generate_haproxy_config(self):"},{"line_number":188,"context_line":"        rosetta_nodes \u003d self.cluster_spec.stellar_rosettas"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        config_lines \u003d ["},{"line_number":191,"context_line":"            \"frontend cng_frontend\","},{"line_number":192,"context_line":"            \"    mode tcp\","},{"line_number":193,"context_line":"            \"    bind *:27017\","},{"line_number":194,"context_line":"            \"    default_backend cng_backend\","},{"line_number":195,"context_line":"            \"\","},{"line_number":196,"context_line":"            \"backend cng_backend\","},{"line_number":197,"context_line":"            \"    mode tcp\","},{"line_number":198,"context_line":"            \"    balance roundrobin\""},{"line_number":199,"context_line":"        ]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        for i in range(0, len(rosetta_nodes)):"},{"line_number":202,"context_line":"            config_lines.append(f\"    server cng{i} {rosetta_nodes[i]}:27017 check\")"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        config \u003d \"\\n\".join(config_lines)"},{"line_number":205,"context_line":"        logger.info(f\"Generated HAProxy config: {config}\")"},{"line_number":206,"context_line":"        return config"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def start_haproxy(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4013b7bd_1617ec1e","line":206,"range":{"start_line":187,"start_character":4,"end_line":206,"end_character":21},"in_reply_to":"522765a9_cc2100aa","updated":"2026-05-22 11:39:47.000000000","message":"Acknowledged","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"}],"perfrunner/workloads/ycsb.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":"151b087badba2a9b5aa9f30d3e8865a5e4c71937","unresolved":true,"context_lines":[{"line_number":165,"context_line":"    if target.cloud:"},{"line_number":166,"context_line":"        host \u003d target.cloud.get(\"cluster_svc\", host)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    run_mongo_ycsb("},{"line_number":169,"context_line":"        hosts\u003d[host],"},{"line_number":170,"context_line":"        database\u003dtarget.bucket,"},{"line_number":171,"context_line":"        username\u003dtarget.username,"},{"line_number":172,"context_line":"        password\u003dtarget.password,"},{"line_number":173,"context_line":"        action\u003d\"load\","},{"line_number":174,"context_line":"        ycsb_client\u003dworkload_settings.ycsb_client,"},{"line_number":175,"context_line":"        workload\u003dworkload_settings.workload_path,"},{"line_number":176,"context_line":"        items\u003dint(workload_settings.items),"},{"line_number":177,"context_line":"        workers\u003dworkload_settings.workers,"},{"line_number":178,"context_line":"        target\u003dint(workload_settings.target),"},{"line_number":179,"context_line":"        instance\u003dinstance,"},{"line_number":180,"context_line":"        fieldlength\u003dworkload_settings.field_length,"},{"line_number":181,"context_line":"        fieldcount\u003dworkload_settings.field_count,"},{"line_number":182,"context_line":"        upsert\u003dbool(workload_settings.upsert),"},{"line_number":183,"context_line":"        batch_size\u003dworkload_settings.mongo_batch_size or 1,"},{"line_number":184,"context_line":"        write_concern\u003dworkload_settings.mongo_durability_level or \"majority\","},{"line_number":185,"context_line":"        rosetta\u003dtarget.rosetta,"},{"line_number":186,"context_line":"        requestdistribution\u003dworkload_settings.requestdistribution,"},{"line_number":187,"context_line":"        ycsb_jvm_args\u003dworkload_settings.ycsb_jvm_args,"},{"line_number":188,"context_line":"        timeseries\u003dworkload_settings.timeseries,"},{"line_number":189,"context_line":"        phase_params\u003dphase_params,"},{"line_number":190,"context_line":"    )"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"def ycsb_mongo_workload(workload_settings: PhaseSettings,"}],"source_content_type":"text/x-python","patch_set":1,"id":"8ec6393d_bc6d43fc","line":190,"range":{"start_line":168,"start_character":4,"end_line":190,"end_character":5},"updated":"2026-05-21 23:22:32.000000000","message":"The `run_mongo_ycsb` function in `perfrunner/workloads/ycsb.py` is called without any validation of the input parameters. Consider adding input validation to ensure that the parameters are correct and to prevent runtime errors.","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"},{"author":{"_account_id":1005024,"name":"Salim Salim","email":"salim.salim@couchbase.com","username":"sudosalim","avatars":[{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/130e9e93bf02bbfade74e9470215dec1.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7043ee15b43832c828a96e7ecfc2e6808f4b78e8","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    if target.cloud:"},{"line_number":166,"context_line":"        host \u003d target.cloud.get(\"cluster_svc\", host)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    run_mongo_ycsb("},{"line_number":169,"context_line":"        hosts\u003d[host],"},{"line_number":170,"context_line":"        database\u003dtarget.bucket,"},{"line_number":171,"context_line":"        username\u003dtarget.username,"},{"line_number":172,"context_line":"        password\u003dtarget.password,"},{"line_number":173,"context_line":"        action\u003d\"load\","},{"line_number":174,"context_line":"        ycsb_client\u003dworkload_settings.ycsb_client,"},{"line_number":175,"context_line":"        workload\u003dworkload_settings.workload_path,"},{"line_number":176,"context_line":"        items\u003dint(workload_settings.items),"},{"line_number":177,"context_line":"        workers\u003dworkload_settings.workers,"},{"line_number":178,"context_line":"        target\u003dint(workload_settings.target),"},{"line_number":179,"context_line":"        instance\u003dinstance,"},{"line_number":180,"context_line":"        fieldlength\u003dworkload_settings.field_length,"},{"line_number":181,"context_line":"        fieldcount\u003dworkload_settings.field_count,"},{"line_number":182,"context_line":"        upsert\u003dbool(workload_settings.upsert),"},{"line_number":183,"context_line":"        batch_size\u003dworkload_settings.mongo_batch_size or 1,"},{"line_number":184,"context_line":"        write_concern\u003dworkload_settings.mongo_durability_level or \"majority\","},{"line_number":185,"context_line":"        rosetta\u003dtarget.rosetta,"},{"line_number":186,"context_line":"        requestdistribution\u003dworkload_settings.requestdistribution,"},{"line_number":187,"context_line":"        ycsb_jvm_args\u003dworkload_settings.ycsb_jvm_args,"},{"line_number":188,"context_line":"        timeseries\u003dworkload_settings.timeseries,"},{"line_number":189,"context_line":"        phase_params\u003dphase_params,"},{"line_number":190,"context_line":"    )"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"def ycsb_mongo_workload(workload_settings: PhaseSettings,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7bf5aa4b_ec729c2e","line":190,"range":{"start_line":168,"start_character":4,"end_line":190,"end_character":5},"in_reply_to":"8ec6393d_bc6d43fc","updated":"2026-05-22 11:39:47.000000000","message":"Acknowledged","commit_id":"44271229064be0b3f7e1bbc1928742685e5f8573"}]}
