{"task": {"agent_timeout": 3000, "task": "codegen__prometheus__prometheus-10710", "verifier_timeout": 3000, "instruction": "This is a code generation task. You are expected to write working code that solves the described problem.\n<issue>\n      I notice that Thanos ruler API (`/api/v1/rules`) some times slow.\nThe rules api will iterate all rules, for each rule call `(*AlertingRule).LastError()` https://github.com/prometheus/prometheus/blob/v2.35.0/rules/alerting.go#L187 and  `(*AlertingRule).Health()` https://github.com/prometheus/prometheus/blob/v2.35.0/rules/alerting.go#L201 to get the error state and health state, this function will call `(*AlertingRule).mtx.Lock()`.\nAt the same time, ruler may eval rules, call the `(*AlertingRule).Eval` https://github.com/prometheus/prometheus/blob/v2.35.0/rules/alerting.go#L341 , it will also call  `(*AlertingRule).mtx.Lock()`, in the `(*AlertingRule).Eval` function, the `tmpl.Expand()` https://github.com/prometheus/prometheus/blob/v2.35.0/rules/alerting.go#L378  will be a slow operation if we using `query` https://github.com/prometheus/prometheus/blob/main/template/template.go#L150 function in template. \n\n## Proposal\n1. use sync.RWMutex.\n2. make template expanding out of the lock.\n\n## My Work plan\n1. write a unit test to minimum produce.\n2. fix it.\n\n</issue>\nFocus on implementing the required functionality correctly and efficiently. Treat this as a programming challenge.\nYou are not allowed to read git history.\n", "memory": "8192m", "runnable": false, "difficulty": "hard", "language": "", "cpus": "", "instruction_truncated": false, "category": "code-generation", "compose": false, "has_solution": true, "oracle": null, "docker_image": "", "taskset": "devopsgym", "tags": ["code-generation", "devops-bench"]}, "runs": []}