@@ -6,6 +6,16 @@ module Make (Inputs : Intf.Inputs_intf) = struct
66 module Inputs = Inputs
77 module Work_spec = Snark_work_lib.Work.Single. Spec
88
9+ let yojson_summary t =
10+ let f = function
11+ | Work_spec. Merge _ ->
12+ `String " merge"
13+ | Transition (_ , witness ) ->
14+ Inputs.Transaction. yojson_summary
15+ (Inputs.Transaction_witness. transaction witness)
16+ in
17+ `List (One_or_two. map ~f t |> One_or_two. to_list)
18+
919 module State = struct
1020 module Job_key = struct
1121 module T = struct
@@ -71,11 +81,44 @@ module Make (Inputs : Intf.Inputs_intf) = struct
7181 ( Time. diff end_time start_time
7282 |> Time.Span. to_ms ) )
7383 ] ;
84+ let old_available_jobs = t.available_jobs in
85+ let old_job_keys =
86+ List. map ~f: Job_key. of_job old_available_jobs
87+ |> Job_key.Set. of_list
88+ in
7489 t.available_jobs < - new_available_jobs ;
7590 let new_job_keys =
76- List. map ~f: Job_key. of_job t.available_jobs
91+ List. map ~f: Job_key. of_job new_available_jobs
7792 |> Job_key.Set. of_list
7893 in
94+ let removed_job_keys =
95+ Job_key.Set. diff old_job_keys new_job_keys
96+ in
97+ let added_job_keys =
98+ Job_key.Set. diff new_job_keys old_job_keys
99+ in
100+ List. iter old_available_jobs ~f: (fun job ->
101+ if
102+ Job_key.Set. mem removed_job_keys
103+ (Job_key. of_job job)
104+ then
105+ [% log internal] " Snark_work_removed"
106+ ~metadata:
107+ [ ( " work_ids"
108+ , Transaction_snark_work. Statement
109+ .compact_json @@ Job_key. of_job job )
110+ ; (" txs" , yojson_summary job)
111+ ] ) ;
112+ List. iter new_available_jobs ~f: (fun job ->
113+ if Job_key.Set. mem added_job_keys (Job_key. of_job job)
114+ then
115+ [% log internal] " Snark_work_added"
116+ ~metadata:
117+ [ ( " work_ids"
118+ , Transaction_snark_work. Statement
119+ .compact_json @@ Job_key. of_job job )
120+ ; (" txs" , yojson_summary job)
121+ ] ) ;
79122 t.jobs_scheduled < -
80123 Job_key.Set. inter t.jobs_scheduled new_job_keys ) ;
81124 Deferred. unit )
@@ -84,10 +127,15 @@ module Make (Inputs : Intf.Inputs_intf) = struct
84127 |> Deferred. don't_wait_for ;
85128 t
86129
87- let mark_scheduled t x =
88- t.jobs_scheduled < -
89- Job_key.Set. add t.jobs_scheduled
90- (One_or_two. map ~f: Work_spec. statement x)
130+ let mark_scheduled ~logger t job =
131+ let statement = One_or_two. map ~f: Work_spec. statement job in
132+ (* Log to internal trace all of the newly available jobs. *)
133+ [% log internal] " Snark_work_scheduled"
134+ ~metadata:
135+ [ (" work_ids" , Transaction_snark_work.Statement. compact_json statement)
136+ ; (" txs" , yojson_summary job)
137+ ] ;
138+ t.jobs_scheduled < - Job_key.Set. add t.jobs_scheduled statement
91139
92140 let does_not_have_better_fee ~snark_pool ~fee
93141 (statements : Inputs.Transaction_snark_work.Statement.t ) : bool =
0 commit comments