Skip to content

Commit 78df744

Browse files
committed
Use a forwarder so each component updates their depth and chunk size
The other Observer components e.g. xenops need a forwarder to notify them of any changes to the export_chunk_size and max_depth as they do not have access to xapi_globs/xapi.conf Signed-off-by: Steven Woods <[email protected]>
1 parent 3876773 commit 78df744

File tree

9 files changed

+113
-2
lines changed

9 files changed

+113
-2
lines changed

ocaml/tests/test_cluster.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@ let test_clusterd_rpc ~__context call =
3434
| "Observer.init"
3535
| "Observer.set_trace_log_dir"
3636
| "Observer.set_export_interval"
37+
| "Observer.set_export_chunk_size"
3738
| "Observer.set_host_id"
3839
| "Observer.set_max_traces"
3940
| "Observer.set_max_spans"
41+
| "Observer.set_max_depth"
4042
| "Observer.set_max_file_size"
4143
| "Observer.set_compress_tracing_files" )
4244
, _ ) ->

ocaml/xapi-idl/cluster/cli-help.t

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@
2121

2222
Observer.set_endpoints [OPTION]… dbg uuid endpoints
2323

24+
Observer.set_export_chunk_size [OPTION]… dbg int
25+
2426
Observer.set_export_interval [OPTION]… dbg float
2527

2628
Observer.set_host_id [OPTION]… dbg string
2729

30+
Observer.set_max_depth [OPTION]… dbg int
31+
2832
Observer.set_max_file_size [OPTION]… dbg int
2933

3034
Observer.set_max_spans [OPTION]… dbg int

ocaml/xapi-idl/lib/observer_helpers.ml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@ module ObserverAPI (R : RPC) = struct
138138
declare "Observer.set_export_interval" []
139139
(dbg_p @-> float_p @-> returning unit_p err)
140140

141+
let set_export_chunk_size =
142+
declare "Observer.set_export_chunk_size" []
143+
(dbg_p @-> int_p @-> returning unit_p err)
144+
141145
let set_max_spans =
142146
declare "Observer.set_max_spans" []
143147
(dbg_p @-> int_p @-> returning unit_p err)
@@ -146,6 +150,10 @@ module ObserverAPI (R : RPC) = struct
146150
declare "Observer.set_max_traces" []
147151
(dbg_p @-> int_p @-> returning unit_p err)
148152

153+
let set_max_depth =
154+
declare "Observer.set_max_depth" []
155+
(dbg_p @-> int_p @-> returning unit_p err)
156+
149157
let set_max_file_size =
150158
declare "Observer.set_max_file_size" []
151159
(dbg_p @-> int_p @-> returning unit_p err)
@@ -193,10 +201,14 @@ module type Server_impl = sig
193201

194202
val set_export_interval : context -> dbg:debug_info -> interval:float -> unit
195203

204+
val set_export_chunk_size : context -> dbg:debug_info -> size:int -> unit
205+
196206
val set_max_spans : context -> dbg:debug_info -> spans:int -> unit
197207

198208
val set_max_traces : context -> dbg:debug_info -> traces:int -> unit
199209

210+
val set_max_depth : context -> dbg:debug_info -> depth:int -> unit
211+
200212
val set_max_file_size : context -> dbg:debug_info -> file_size:int -> unit
201213

202214
val set_host_id : context -> dbg:debug_info -> host_id:string -> unit
@@ -227,8 +239,12 @@ module Server (Impl : Server_impl) () = struct
227239
S.set_export_interval (fun dbg interval ->
228240
Impl.set_export_interval () ~dbg ~interval
229241
) ;
242+
S.set_export_chunk_size (fun dbg size ->
243+
Impl.set_export_chunk_size () ~dbg ~size
244+
) ;
230245
S.set_max_spans (fun dbg spans -> Impl.set_max_spans () ~dbg ~spans) ;
231246
S.set_max_traces (fun dbg traces -> Impl.set_max_traces () ~dbg ~traces) ;
247+
S.set_max_depth (fun dbg depth -> Impl.set_max_depth () ~dbg ~depth) ;
232248
S.set_max_file_size (fun dbg file_size ->
233249
Impl.set_max_file_size () ~dbg ~file_size
234250
) ;

ocaml/xapi-idl/lib/observer_helpers.mli

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ module ObserverAPI : functor (R : Idl.RPC) -> sig
7777
(** [set_export_interval dbg interval] notifies the fowarder that the interval
7878
between trace exports has been set to [interval]. *)
7979

80+
val set_export_chunk_size :
81+
(debug_info -> int -> (unit, Errors.error) R.comp) R.res
82+
(** [set_export_chunk_size dbg size] notifies the fowarder that the max size
83+
of each chunk of finished spans exported has been set to [size]. *)
84+
8085
val set_max_spans : (debug_info -> int -> (unit, Errors.error) R.comp) R.res
8186
(** [set_max_spans dbg spans] notifies the fowarder that the max number of
8287
spans has been set to [spans]. *)
@@ -85,6 +90,10 @@ module ObserverAPI : functor (R : Idl.RPC) -> sig
8590
(** [set_max_traces dbg traces] notifies the fowarder that the max number of
8691
traces has been set to [traces]. *)
8792

93+
val set_max_depth : (debug_info -> int -> (unit, Errors.error) R.comp) R.res
94+
(** [set_max_depth dbg depth] notifies the fowarder that the max depth of
95+
a span in a trace has been set to [depth]. *)
96+
8897
val set_max_file_size :
8998
(debug_info -> int -> (unit, Errors.error) R.comp) R.res
9099
(** [set_max_file_size dbg file_size] notifies the fowarder that the max file
@@ -135,10 +144,14 @@ module type Server_impl = sig
135144

136145
val set_export_interval : context -> dbg:debug_info -> interval:float -> unit
137146

147+
val set_export_chunk_size : context -> dbg:debug_info -> size:int -> unit
148+
138149
val set_max_spans : context -> dbg:debug_info -> spans:int -> unit
139150

140151
val set_max_traces : context -> dbg:debug_info -> traces:int -> unit
141152

153+
val set_max_depth : context -> dbg:debug_info -> depth:int -> unit
154+
142155
val set_max_file_size : context -> dbg:debug_info -> file_size:int -> unit
143156

144157
val set_host_id : context -> dbg:debug_info -> host_id:string -> unit
@@ -176,10 +189,14 @@ module Server : functor (_ : Server_impl) () -> sig
176189

177190
val set_export_interval : (debug_info -> float -> unit) -> unit
178191

192+
val set_export_chunk_size : (debug_info -> int -> unit) -> unit
193+
179194
val set_max_spans : (debug_info -> int -> unit) -> unit
180195

181196
val set_max_traces : (debug_info -> int -> unit) -> unit
182197

198+
val set_max_depth : (debug_info -> int -> unit) -> unit
199+
183200
val set_max_file_size : (debug_info -> int -> unit) -> unit
184201

185202
val set_host_id : (debug_info -> string -> unit) -> unit
@@ -215,10 +232,14 @@ module Client : sig
215232

216233
val set_export_interval : debug_info -> float -> unit
217234

235+
val set_export_chunk_size : debug_info -> int -> unit
236+
218237
val set_max_spans : debug_info -> int -> unit
219238

220239
val set_max_traces : debug_info -> int -> unit
221240

241+
val set_max_depth : debug_info -> int -> unit
242+
222243
val set_max_file_size : debug_info -> int -> unit
223244

224245
val set_host_id : debug_info -> string -> unit

ocaml/xapi-idl/lib/observer_skeleton.ml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,14 @@ module Observer = struct
3636

3737
let set_export_interval ctx ~dbg ~interval = unimplemented __FUNCTION__
3838

39+
let set_export_chunk_size ctx ~dbg ~size = unimplemented __FUNCTION__
40+
3941
let set_max_spans ctx ~dbg ~spans = unimplemented __FUNCTION__
4042

4143
let set_max_traces ctx ~dbg ~traces = unimplemented __FUNCTION__
4244

45+
let set_max_depth ctx ~dbg ~depth = unimplemented __FUNCTION__
46+
4347
let set_max_file_size ctx ~dbg ~file_size = unimplemented __FUNCTION__
4448

4549
let set_host_id ctx ~dbg ~host_id = unimplemented __FUNCTION__

ocaml/xapi-idl/lib/observer_skeleton.mli

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,14 @@ module Observer : sig
3434

3535
val set_export_interval : context -> dbg:string -> interval:float -> unit
3636

37+
val set_export_chunk_size : context -> dbg:string -> size:int -> unit
38+
3739
val set_max_spans : context -> dbg:string -> spans:int -> unit
3840

3941
val set_max_traces : context -> dbg:string -> traces:int -> unit
4042

43+
val set_max_depth : context -> dbg:string -> depth:int -> unit
44+
4145
val set_max_file_size : context -> dbg:string -> file_size:int -> unit
4246

4347
val set_host_id : context -> dbg:string -> host_id:string -> unit

ocaml/xapi/xapi_observer.ml

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,14 @@ module type ObserverInterface = sig
4848

4949
val set_export_interval : __context:Context.t -> interval:float -> unit
5050

51+
val set_export_chunk_size : __context:Context.t -> size:int -> unit
52+
5153
val set_max_spans : __context:Context.t -> spans:int -> unit
5254

5355
val set_max_traces : __context:Context.t -> traces:int -> unit
5456

57+
val set_max_depth : __context:Context.t -> depth:int -> unit
58+
5559
val set_max_file_size : __context:Context.t -> file_size:int -> unit
5660

5761
val set_host_id : __context:Context.t -> host_id:string -> unit
@@ -93,6 +97,10 @@ module Observer : ObserverInterface = struct
9397
debug "xapi Observer.set_export_interval" ;
9498
Tracing_export.set_export_interval interval
9599

100+
let set_export_chunk_size ~__context ~size =
101+
debug "xapi Observer.set_export_chunk_size" ;
102+
Tracing_export.set_export_chunk_size size
103+
96104
let set_max_spans ~__context ~spans =
97105
debug "xapi Observer.set_max_spans" ;
98106
Tracing.Spans.set_max_spans spans
@@ -101,6 +109,10 @@ module Observer : ObserverInterface = struct
101109
debug "xapi Observer.set_max_traces" ;
102110
Tracing.Spans.set_max_traces traces
103111

112+
let set_max_depth ~__context ~depth =
113+
debug "xapi Observer.set_max_depth" ;
114+
Tracing.Spans.set_max_depth depth
115+
104116
let set_max_file_size ~__context ~file_size =
105117
debug "xapi Observer.set_max_file_size" ;
106118
Tracing_export.Destination.File.set_max_file_size file_size
@@ -189,6 +201,12 @@ module Xapi_cluster = struct
189201
let dbg = Context.string_of_task __context in
190202
S.Observer.set_export_interval dbg interval
191203

204+
let set_export_chunk_size ~__context ~size =
205+
debug "xapi_cluster Observer.set_export_chunk_size" ;
206+
let module S = (val local_client ~__context : XAPI_CLUSTER) in
207+
let dbg = Context.string_of_task __context in
208+
S.Observer.set_export_chunk_size dbg size
209+
192210
let set_max_spans ~__context ~spans =
193211
debug "xapi_cluster Observer.set_max_spans" ;
194212
let module S = (val local_client ~__context : XAPI_CLUSTER) in
@@ -201,6 +219,12 @@ module Xapi_cluster = struct
201219
let dbg = Context.string_of_task __context in
202220
S.Observer.set_max_traces dbg traces
203221

222+
let set_max_depth ~__context ~depth =
223+
debug "xapi_cluster Observer.set_max_depth" ;
224+
let module S = (val local_client ~__context : XAPI_CLUSTER) in
225+
let dbg = Context.string_of_task __context in
226+
S.Observer.set_max_depth dbg depth
227+
204228
let set_max_file_size ~__context ~file_size =
205229
debug "xapi_cluster Observer.set_max_file_size" ;
206230
let module S = (val local_client ~__context : XAPI_CLUSTER) in
@@ -370,10 +394,14 @@ module Dom0ObserverConfig (ObserverComponent : OBSERVER_COMPONENT) :
370394

371395
let set_export_interval ~__context:_ ~interval:_ = ()
372396

397+
let set_export_chunk_size ~__context:_ ~size:_ = ()
398+
373399
let set_max_spans ~__context:_ ~spans:_ = ()
374400

375401
let set_max_traces ~__context:_ ~traces:_ = ()
376402

403+
let set_max_depth ~__context:_ ~depth:_ = ()
404+
377405
let set_max_file_size ~__context:_ ~file_size:_ = ()
378406

379407
let set_host_id ~__context:_ ~host_id:_ = ()
@@ -542,6 +570,10 @@ let set_export_interval ~__context interval component =
542570
let module Forwarder = (val get_forwarder component : ObserverInterface) in
543571
Forwarder.set_export_interval ~__context ~interval
544572

573+
let set_export_chunk_size ~__context size component =
574+
let module Forwarder = (val get_forwarder component : ObserverInterface) in
575+
Forwarder.set_export_chunk_size ~__context ~size
576+
545577
let set_max_spans ~__context spans component =
546578
let module Forwarder = (val get_forwarder component : ObserverInterface) in
547579
Forwarder.set_max_spans ~__context ~spans
@@ -550,6 +582,10 @@ let set_max_traces ~__context traces component =
550582
let module Forwarder = (val get_forwarder component : ObserverInterface) in
551583
Forwarder.set_max_traces ~__context ~traces
552584

585+
let set_max_depth ~__context depth component =
586+
let module Forwarder = (val get_forwarder component : ObserverInterface) in
587+
Forwarder.set_max_depth ~__context ~depth
588+
553589
let set_max_file_size ~__context file_size component =
554590
let module Forwarder = (val get_forwarder component : ObserverInterface) in
555591
Forwarder.set_max_file_size ~__context ~file_size
@@ -585,8 +621,10 @@ let initialise_observer_component ~__context component =
585621
let initialise_observer_meta ~__context component =
586622
set_trace_log_dir ~__context !Xapi_globs.trace_log_dir component ;
587623
set_export_interval ~__context !Xapi_globs.export_interval component ;
624+
set_export_chunk_size ~__context !Xapi_globs.export_chunk_size component ;
588625
set_max_spans ~__context !Xapi_globs.max_spans component ;
589626
set_max_traces ~__context !Xapi_globs.max_traces component ;
627+
set_max_depth ~__context !Xapi_globs.max_span_depth component ;
590628
set_max_file_size ~__context !Xapi_globs.max_observer_file_size component ;
591629
set_host_id ~__context (Helpers.get_localhost_uuid ()) component ;
592630
set_compress_tracing_files ~__context
@@ -599,8 +637,6 @@ let initialise_observer ~__context component =
599637
initialise_observer_component ~__context component
600638

601639
let initialise ~__context =
602-
Tracing.Spans.set_max_depth !Xapi_globs.max_span_depth ;
603-
Tracing_export.set_export_chunk_size !Xapi_globs.export_chunk_size ;
604640
List.iter (initialise_observer_meta ~__context) (startup_components ()) ;
605641
Db.Observer.get_all ~__context
606642
|> List.iter (fun self ->

ocaml/xapi/xapi_xenops.ml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4493,6 +4493,11 @@ module Observer = struct
44934493
let dbg = Context.string_of_task __context in
44944494
Client.Observer.set_export_interval dbg interval
44954495

4496+
let set_export_chunk_size ~__context ~size =
4497+
let module Client = (val make_client (default_xenopsd ()) : XENOPS) in
4498+
let dbg = Context.string_of_task __context in
4499+
Client.Observer.set_export_chunk_size dbg size
4500+
44964501
let set_max_spans ~__context ~spans =
44974502
let module Client = (val make_client (default_xenopsd ()) : XENOPS) in
44984503
let dbg = Context.string_of_task __context in
@@ -4503,6 +4508,11 @@ module Observer = struct
45034508
let dbg = Context.string_of_task __context in
45044509
Client.Observer.set_max_traces dbg traces
45054510

4511+
let set_max_depth ~__context ~depth =
4512+
let module Client = (val make_client (default_xenopsd ()) : XENOPS) in
4513+
let dbg = Context.string_of_task __context in
4514+
Client.Observer.set_max_depth dbg depth
4515+
45064516
let set_max_file_size ~__context ~file_size =
45074517
let module Client = (val make_client (default_xenopsd ()) : XENOPS) in
45084518
let dbg = Context.string_of_task __context in

ocaml/xenopsd/lib/xenops_server.ml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4311,6 +4311,12 @@ module Observer = struct
43114311
(fun () -> Tracing_export.set_export_interval interval)
43124312
()
43134313

4314+
let set_export_chunk_size _ dbg size =
4315+
debug "Observer.set_export_chunk_size : dbg=%s" dbg ;
4316+
Debug.with_thread_associated dbg
4317+
(fun () -> Tracing_export.set_export_chunk_size size)
4318+
()
4319+
43144320
let set_max_spans _ dbg spans =
43154321
debug "Observer.set_max_spans : dbg=%s" dbg ;
43164322
Debug.with_thread_associated dbg
@@ -4323,6 +4329,12 @@ module Observer = struct
43234329
(fun () -> Tracing.Spans.set_max_traces traces)
43244330
()
43254331

4332+
let set_max_depth _ dbg depth =
4333+
debug "Observer.set_max_depth : dbg=%s" dbg ;
4334+
Debug.with_thread_associated dbg
4335+
(fun () -> Tracing.Spans.set_max_depth depth)
4336+
()
4337+
43264338
let set_max_file_size _ dbg file_size =
43274339
debug "Observer.set_max_file_size : dbg=%s" dbg ;
43284340
Debug.with_thread_associated dbg
@@ -4446,8 +4458,10 @@ let _ =
44464458
Server.Observer.init (Observer.init ()) ;
44474459
Server.Observer.set_trace_log_dir (Observer.set_trace_log_dir ()) ;
44484460
Server.Observer.set_export_interval (Observer.set_export_interval ()) ;
4461+
Server.Observer.set_export_chunk_size (Observer.set_export_chunk_size ()) ;
44494462
Server.Observer.set_max_spans (Observer.set_max_spans ()) ;
44504463
Server.Observer.set_max_traces (Observer.set_max_traces ()) ;
4464+
Server.Observer.set_max_depth (Observer.set_max_depth ()) ;
44514465
Server.Observer.set_max_file_size (Observer.set_max_file_size ()) ;
44524466
Server.Observer.set_host_id (Observer.set_host_id ()) ;
44534467
Server.Observer.set_compress_tracing_files

0 commit comments

Comments
 (0)