@@ -12,6 +12,7 @@ type t = {
1212
1313let ocaml = OpamPackage.Name. of_string " ocaml"
1414
15+
1516module Metrics = struct
1617 open Prometheus
1718
@@ -26,13 +27,13 @@ module Metrics = struct
2627 let help = " Number of handled requests by state" in
2728 Gauge. v_label ~label_name: " state" ~help ~namespace ~subsystem " solve_request_state"
2829
29- let update_request_handling pool =
30- let running = Pool. running_workers pool in
31- let waiting = (Pool. n_workers pool) - running in
30+ let update_request_handling pool n_requests =
31+ let workers = Pool. n_workers pool in
32+ let waiting = Pool. wait_requests pool in
33+ let running = min ! n_requests workers in
3234 Gauge. set (request_handling " running" ) (float_of_int running);
3335 Gauge. set (request_handling " waiting" ) (float_of_int waiting)
3436
35-
3637 let request_ok =
3738 let help = " Total number of success solve requests" in
3839 Counter. v ~help ~namespace ~subsystem " success_solve"
@@ -160,14 +161,16 @@ let solve ?cancelled t ~log request =
160161 Log. info log " Solving for %a" Fmt. (list ~sep: comma string ) root_pkgs;
161162 let serious_errors = ref [] in
162163 let cancels_without_running = ref 0 in
164+ let n_requests = ref 0 in
163165 let *! root_pkgs = parse_opams request.root_pkgs in
164166 let *! pinned_pkgs = parse_opams request.pinned_pkgs in
165167 let *! packages = Stores. packages t.stores opam_repository_commits in
166168 let results =
167169 platforms
168170 |> Fiber.List. map (fun (id , vars ) ->
169171 Prometheus.Counter. inc_one Metrics. request_handling_total;
170- Metrics. update_request_handling t.pool;
172+ incr n_requests;
173+ Metrics. update_request_handling t.pool n_requests;
171174 let result =
172175 solve_for_platform t id
173176 ?cancelled
@@ -179,7 +182,8 @@ let solve ?cancelled t ~log request =
179182 ~pins
180183 ~vars
181184 in
182- Metrics. update_request_handling t.pool;
185+ decr n_requests;
186+ Metrics. update_request_handling t.pool n_requests;
183187 (id, result)
184188 )
185189 |> List. filter_map (fun (id , result ) ->
0 commit comments