)]}'
{"/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":"e575d24a5f8a8e1ef29ac66251badb2132726481","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3e5abd07_5ffa289e","updated":"2026-03-20 08:39:15.000000000","message":"The commit message lacks detail about the specific changes made in the code. It should provide a summary of the key modifications and their purpose to give a clearer understanding of the changes.","commit_id":"682ccc6dbccf1328ce136f4153143ad0789c0712"}],"pytests/storage/magma/magma_base.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":"0df1e1c88b5d626eb9512748ebdb02b013819e89","unresolved":true,"context_lines":[{"line_number":10,"context_line":"from cb_constants.CBServer import CbServer"},{"line_number":11,"context_line":"from cb_server_rest_util.cluster_nodes.cluster_nodes_api import ClusterRestAPI"},{"line_number":12,"context_line":"from cb_tools.cbstats import Cbstats"},{"line_number":13,"context_line":"from membase.api.rest_client import RestConnection"},{"line_number":14,"context_line":"from shell_util.remote_connection import RemoteMachineShellConnection"},{"line_number":15,"context_line":"from sdk_client3 import SDKClientPool"},{"line_number":16,"context_line":"from storage.storage_base import StorageBase"}],"source_content_type":"text/x-python","patch_set":24,"id":"e3385f7b_d2488a91","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":50},"updated":"2026-04-22 17:24:25.000000000","message":"The addition of the RestConnection import in the MagmaBaseTest class is not accompanied by any comments or documentation explaining its purpose. Consider adding comments to clarify why this import is necessary.","commit_id":"4b6d6b201fc46d13c86cb910184793ee9fa21509"},{"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":"0df1e1c88b5d626eb9512748ebdb02b013819e89","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        rest_conn \u003d RestConnection(self.cluster.master)"},{"line_number":35,"context_line":"        node_versions \u003d rest_conn.get_nodes_versions()"},{"line_number":36,"context_line":"        cluster_version \u003d node_versions[0].split(\"-\")[0] if node_versions else \"0.0.0\""},{"line_number":37,"context_line":"        fbr_expected \u003d float(cluster_version[:3]) \u003e\u003d 8.1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if \u0027dataServiceFileBasedRebalanceEnabled\u0027 in content:"},{"line_number":40,"context_line":"            file_based_backfill_enabled \u003d content.get(\u0027dataServiceFileBasedRebalanceEnabled\u0027, False)"}],"source_content_type":"text/x-python","patch_set":24,"id":"afba97df_d41bd46a","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":56},"updated":"2026-04-22 17:24:25.000000000","message":"The logic for determining if FBR should be enabled by default based on the cluster version is not clearly documented. Consider adding comments to explain the rationale behind the version check and the expected behavior for different versions.","commit_id":"4b6d6b201fc46d13c86cb910184793ee9fa21509"},{"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":"0df1e1c88b5d626eb9512748ebdb02b013819e89","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        cluster_version \u003d node_versions[0].split(\"-\")[0] if node_versions else \"0.0.0\""},{"line_number":37,"context_line":"        fbr_expected \u003d float(cluster_version[:3]) \u003e\u003d 8.1"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if \u0027dataServiceFileBasedRebalanceEnabled\u0027 in content:"},{"line_number":40,"context_line":"            file_based_backfill_enabled \u003d content.get(\u0027dataServiceFileBasedRebalanceEnabled\u0027, False)"},{"line_number":41,"context_line":"            if fbr_expected:"},{"line_number":42,"context_line":"                self.assertTrue(file_based_backfill_enabled,"}],"source_content_type":"text/x-python","patch_set":24,"id":"aa5c6309_8895ef9b","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":61},"updated":"2026-04-22 17:24:25.000000000","message":"The code snippet that checks for \u0027dataServiceFileBasedRebalanceEnabled\u0027 in the internal settings lacks error handling for cases where the key might not be present. Consider adding a check to handle such scenarios gracefully.","commit_id":"4b6d6b201fc46d13c86cb910184793ee9fa21509"}],"pytests/storage/magma/magma_low_disk_config.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":"d5c94961e1411a7385276e265741717c1c898beb","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        self.log.info(\"Bandwidth limit: {} MB/s\".format(self.bandwidth_limit_mbps))"},{"line_number":65,"context_line":"        self.log.info(\"Update cycles: {}\".format(self.num_update_cycles))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def tearDown(self):"},{"line_number":68,"context_line":"        # Remove disk throttling"},{"line_number":69,"context_line":"        self._remove_disk_throttling()"},{"line_number":70,"context_line":"        super(MagmaLowDiskConfigTests, self).tearDown()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_disk_stats(self):"},{"line_number":73,"context_line":"        \"\"\"Get current disk usage statistics for all nodes\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"c1cbd148_ef00e947","line":70,"range":{"start_line":67,"start_character":4,"end_line":70,"end_character":55},"updated":"2026-03-20 08:51:33.000000000","message":"The test setup does not include any validation or cleanup steps to ensure that the environment is reset after the test. Consider adding validation to confirm that the disk throttling is removed and the system is restored to its original state.","commit_id":"a020126ee98c265c5bef1d314d38a3c0cc3fd204"},{"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":"d5c94961e1411a7385276e265741717c1c898beb","unresolved":true,"context_lines":[{"line_number":127,"context_line":"                device_id, bandwidth_bytes, bandwidth_bytes,"},{"line_number":128,"context_line":"                self.iops_limit, self.iops_limit)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"            cmd \u003d \"sudo sh -c \u0027echo \\\"{}\\\" \u003e {}\u0027\".format(io_max_line, cgroup_path)"},{"line_number":131,"context_line":"            output, error \u003d remote.execute_command(cmd)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            if error:"},{"line_number":134,"context_line":"                self.log.error(\"Error writing to cgroup io.max: {}\".format(error))"},{"line_number":135,"context_line":"                return False"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"            self.log.info(\"Applied cgroup I/O limits: IOPS\u003d{}, Bandwidth\u003d{} MB/s\".format("},{"line_number":138,"context_line":"                self.iops_limit, self.bandwidth_limit_mbps))"}],"source_content_type":"text/x-python","patch_set":2,"id":"55ea09a5_fed35c97","line":135,"range":{"start_line":130,"start_character":12,"end_line":135,"end_character":28},"updated":"2026-03-20 08:51:33.000000000","message":"The method `_apply_disk_throttling_systemd` lacks error handling for the command execution that writes to the cgroup io.max file. Consider adding checks to ensure the command executes successfully and handle any potential errors.","commit_id":"a020126ee98c265c5bef1d314d38a3c0cc3fd204"},{"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":"d5c94961e1411a7385276e265741717c1c898beb","unresolved":true,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":"                time.sleep(self.monitor_interval)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"            except Exception as e:"},{"line_number":332,"context_line":"                self.log.error(\"Error monitoring index status: {}\".format(str(e)))"},{"line_number":333,"context_line":"                time.sleep(self.monitor_interval)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        if not all_indexes_ready:"},{"line_number":336,"context_line":"            self.log.error(\"Index build did not complete within timeout ({} seconds)\".format("}],"source_content_type":"text/x-python","patch_set":2,"id":"5af1577b_f28b2e34","line":333,"range":{"start_line":331,"start_character":12,"end_line":333,"end_character":49},"updated":"2026-03-20 08:51:33.000000000","message":"The `_monitor_index_build_progress` method does not handle the case where the index build progress cannot be retrieved due to an exception. Consider adding a retry mechanism or a more robust error handling strategy to ensure the monitoring process is reliable.","commit_id":"a020126ee98c265c5bef1d314d38a3c0cc3fd204"},{"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":"d5c94961e1411a7385276e265741717c1c898beb","unresolved":true,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        try:"},{"line_number":519,"context_line":"            # Simple query using the first index"},{"line_number":520,"context_line":"            if self.index_fields:"},{"line_number":521,"context_line":"                field \u003d self.index_fields[0]"},{"line_number":522,"context_line":"                query \u003d \"SELECT COUNT(*) FROM `{}` WHERE {} IS NOT NULL\".format("},{"line_number":523,"context_line":"                    bucket.name, field)"},{"line_number":524,"context_line":"                result \u003d self.n1ql_helper.run_cbq_query(query\u003dquery)"},{"line_number":525,"context_line":"                self.log.info(\"Index verification query succeeded: {}\".format(result))"},{"line_number":526,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"b6caafc3_7abe193c","line":523,"range":{"start_line":520,"start_character":12,"end_line":523,"end_character":39},"updated":"2026-03-20 08:51:33.000000000","message":"The `_verify_index_functionality` method assumes the presence of index fields without checking if they exist. Consider adding a validation step to ensure the fields are present before running the query to avoid potential errors.","commit_id":"a020126ee98c265c5bef1d314d38a3c0cc3fd204"},{"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":"ef5f8708ebbf343d1c22fc17131aec8806dc12bb","unresolved":true,"context_lines":[{"line_number":292,"context_line":"                self.task_manager.get_task_result(create_index_task)"},{"line_number":293,"context_line":"                self.assertTrue(create_index_task.result,"},{"line_number":294,"context_line":"                                \"Create Index failed for: {}\".format(index_name))"},{"line_number":295,"context_line":"                "},{"line_number":296,"context_line":"                # Verify index was created and is in deferred state via direct query"},{"line_number":297,"context_line":"                verify_query \u003d \"SELECT state FROM system:indexes WHERE name \u003d \u0027{}\u0027 \" \\"},{"line_number":298,"context_line":"                               \"AND keyspace_id \u003d \u0027{}\u0027\".format(index_name, bucket.name)"}],"source_content_type":"text/x-python","patch_set":30,"id":"5cf4f1c3_1c8b2048","line":295,"updated":"2026-05-11 08:24:46.000000000","message":"pls remove trailing spaces.","commit_id":"6014eb786494303b5902f0c57294eb0085c1bfc2"},{"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":"ef5f8708ebbf343d1c22fc17131aec8806dc12bb","unresolved":true,"context_lines":[{"line_number":335,"context_line":"            "},{"line_number":336,"context_line":"            # Log successful build command"},{"line_number":337,"context_line":"            self.log.info(\"Build index command successfully issued for bucket {}\".format(bucket.name))"},{"line_number":338,"context_line":"            "},{"line_number":339,"context_line":"        except Exception as e:"},{"line_number":340,"context_line":"            self.log.error(\"Failed to build indexes on bucket {}: {}\".format(bucket.name, str(e)))"},{"line_number":341,"context_line":"            raise Exception(\"Index build failed for bucket {}: {}\".format(bucket.name, str(e)))"}],"source_content_type":"text/x-python","patch_set":30,"id":"802fa7a2_8c6b056c","line":338,"updated":"2026-05-11 08:24:46.000000000","message":"pls remove trailing spaces.","commit_id":"6014eb786494303b5902f0c57294eb0085c1bfc2"}]}
