Skip to content

Commit 08be7f2

Browse files
committed
Update from Thomas's comment
1 parent 9975663 commit 08be7f2

2 files changed

Lines changed: 12 additions & 10 deletions

File tree

service/pool.ml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ type ('request, 'reply) t = {
66

77
let rec run_worker t handle =
88
let request, set_reply = Eio.Stream.take t.requests in
9-
Atomic.incr t.running;
109
handle request |> Promise.resolve set_reply;
11-
Atomic.decr t.running;
1210
run_worker t handle
1311

1412
let create ~sw ~domain_mgr ~n_workers handle =
@@ -25,6 +23,6 @@ let use t request =
2523
Eio.Stream.add t.requests (request, set_reply);
2624
Promise.await reply
2725

28-
let running_workers t = Atomic.get t.running
29-
3026
let n_workers t = t.n_workers
27+
28+
let wait_requests t = Eio.Stream.length t.requests

service/solver.ml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type t = {
1212

1313
let ocaml = OpamPackage.Name.of_string "ocaml"
1414

15+
1516
module 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

Comments
 (0)