File tree Expand file tree Collapse file tree 1 file changed +12
-10
lines changed
Expand file tree Collapse file tree 1 file changed +12
-10
lines changed Original file line number Diff line number Diff line change @@ -45,12 +45,14 @@ let rec worker_loop ~bucket ~process_queue ~process_queue_lock
4545 Token_bucket. delay_then_consume bucket cost ;
4646 callback ()
4747 in
48- Mutex. lock process_queue_lock ;
49- while Queue. is_empty process_queue && not ! should_terminate do
50- Condition. wait worker_thread_cond process_queue_lock
51- done ;
52- let item_opt = Queue. take_opt process_queue in
53- Mutex. unlock process_queue_lock ;
48+ let item_opt =
49+ with_lock process_queue_lock (fun () ->
50+ while Queue. is_empty process_queue && not ! should_terminate do
51+ Condition. wait worker_thread_cond process_queue_lock
52+ done ;
53+ Queue. take_opt process_queue
54+ )
55+ in
5456 match item_opt with
5557 | None ->
5658 (* Queue is empty only when termination was signalled *)
@@ -102,10 +104,10 @@ let delete_bucket t ~user_agent =
102104 | None ->
103105 ()
104106 | Some data ->
105- Mutex. lock data.process_queue_lock ;
106- data.should_terminate := true ;
107- Condition. signal data.worker_thread_cond ;
108- Mutex. unlock data.process_queue_lock ;
107+ with_lock data.process_queue_lock ( fun () ->
108+ data.should_terminate := true ;
109+ Condition. signal data.worker_thread_cond
110+ ) ;
109111 Atomic. set t (StringMap. remove user_agent map)
110112
111113let try_consume t ~user_agent amount =
You can’t perform that action at this time.
0 commit comments