53
53
from deltacat .compute .compactor .model .compactor_version import CompactorVersion
54
54
from deltacat .compute .compactor .utils .sort_key import validate_sort_keys
55
55
from deltacat .utils .resources import get_current_node_peak_memory_usage_in_bytes
56
+ from deltacat .utils .metrics import MetricsConfigSingleton
56
57
57
58
58
59
if importlib .util .find_spec ("memray" ):
@@ -139,6 +140,10 @@ def compact_partition(
139
140
if s3_client_kwargs is None :
140
141
s3_client_kwargs = {}
141
142
143
+ if metrics_config :
144
+ # Initialize MetricsConfigSingleton
145
+ MetricsConfigSingleton .instance (metrics_config )
146
+
142
147
# memray official documentation link:
143
148
# https://bloomberg.github.io/memray/getting_started.html
144
149
with memray .Tracker (
@@ -166,7 +171,6 @@ def compact_partition(
166
171
rebase_source_partition_locator ,
167
172
rebase_source_partition_high_watermark ,
168
173
enable_profiler ,
169
- metrics_config ,
170
174
list_deltas_kwargs ,
171
175
read_kwargs_provider ,
172
176
s3_table_writer_kwargs ,
@@ -217,7 +221,6 @@ def _execute_compaction_round(
217
221
rebase_source_partition_locator : Optional [PartitionLocator ],
218
222
rebase_source_partition_high_watermark : Optional [int ],
219
223
enable_profiler : Optional [bool ],
220
- metrics_config : Optional [MetricsConfig ],
221
224
list_deltas_kwargs : Optional [Dict [str , Any ]],
222
225
read_kwargs_provider : Optional [ReadKwargsProvider ],
223
226
s3_table_writer_kwargs : Optional [Dict [str , Any ]],
@@ -234,6 +237,13 @@ def _execute_compaction_round(
234
237
if rebase_source_partition_locator
235
238
else source_partition_locator
236
239
)
240
+
241
+ # We need to pass in metrics_config to each step, as they are run on separate processes
242
+ try :
243
+ metrics_config = MetricsConfigSingleton .instance ().metrics_config
244
+ except Exception :
245
+ metrics_config = None
246
+
237
247
base_audit_url = rcf_source_partition_locator .path (
238
248
f"s3://{ compaction_artifact_s3_bucket } /compaction-audit"
239
249
)
@@ -438,11 +448,11 @@ def _execute_compaction_round(
438
448
num_buckets = hash_bucket_count ,
439
449
num_groups = max_parallelism ,
440
450
enable_profiler = enable_profiler ,
441
- metrics_config = metrics_config ,
442
451
read_kwargs_provider = read_kwargs_provider ,
443
452
object_store = object_store ,
444
453
deltacat_storage = deltacat_storage ,
445
454
deltacat_storage_kwargs = deltacat_storage_kwargs ,
455
+ metrics_config = metrics_config ,
446
456
** kwargs ,
447
457
)
448
458
hb_invoke_end = time .monotonic ()
@@ -453,7 +463,8 @@ def _execute_compaction_round(
453
463
hb_end = time .monotonic ()
454
464
hb_results_retrieved_at = time .time ()
455
465
456
- telemetry_time_hb = compaction_audit .save_step_stats (
466
+ cluster_util_after_task_latency = 0
467
+ cluster_util_after_task_latency += compaction_audit .save_step_stats (
457
468
CompactionSessionAuditInfo .HASH_BUCKET_STEP_NAME ,
458
469
hb_results ,
459
470
hb_results_retrieved_at ,
@@ -528,8 +539,8 @@ def _execute_compaction_round(
528
539
sort_keys = sort_keys ,
529
540
num_materialize_buckets = num_materialize_buckets ,
530
541
enable_profiler = enable_profiler ,
531
- metrics_config = metrics_config ,
532
542
object_store = object_store ,
543
+ metrics_config = metrics_config ,
533
544
)
534
545
535
546
dedupe_invoke_end = time .monotonic ()
@@ -546,7 +557,7 @@ def _execute_compaction_round(
546
557
total_dd_record_count = sum ([ddr .deduped_record_count for ddr in dd_results ])
547
558
logger .info (f"Deduped { total_dd_record_count } records..." )
548
559
549
- telemetry_time_dd = compaction_audit .save_step_stats (
560
+ cluster_util_after_task_latency + = compaction_audit .save_step_stats (
550
561
CompactionSessionAuditInfo .DEDUPE_STEP_NAME ,
551
562
dd_results ,
552
563
dedupe_results_retrieved_at ,
@@ -605,12 +616,12 @@ def _execute_compaction_round(
605
616
max_records_per_output_file = records_per_compacted_file ,
606
617
compacted_file_content_type = compacted_file_content_type ,
607
618
enable_profiler = enable_profiler ,
608
- metrics_config = metrics_config ,
609
619
read_kwargs_provider = read_kwargs_provider ,
610
620
s3_table_writer_kwargs = s3_table_writer_kwargs ,
611
621
object_store = object_store ,
612
622
deltacat_storage = deltacat_storage ,
613
623
deltacat_storage_kwargs = deltacat_storage_kwargs ,
624
+ metrics_config = metrics_config ,
614
625
)
615
626
616
627
materialize_invoke_end = time .monotonic ()
@@ -623,7 +634,7 @@ def _execute_compaction_round(
623
634
materialize_end = time .monotonic ()
624
635
materialize_results_retrieved_at = time .time ()
625
636
626
- telemetry_time_materialize = compaction_audit .save_step_stats (
637
+ cluster_util_after_task_latency + = compaction_audit .save_step_stats (
627
638
CompactionSessionAuditInfo .MATERIALIZE_STEP_NAME ,
628
639
mat_results ,
629
640
materialize_results_retrieved_at ,
@@ -685,8 +696,15 @@ def _execute_compaction_round(
685
696
session_peak_memory
686
697
)
687
698
699
+ metrics_telemetry_time = 0
700
+ try :
701
+ metrics_telemetry_time = MetricsConfigSingleton .instance ().total_telemetry_time
702
+ except Exception as e :
703
+ logger .warn (
704
+ f"Skipping calculating metrics telemetry time due to exception: { e } "
705
+ )
688
706
compaction_audit .save_round_completion_stats (
689
- mat_results , telemetry_time_hb + telemetry_time_dd + telemetry_time_materialize
707
+ mat_results , cluster_util_after_task_latency + metrics_telemetry_time
690
708
)
691
709
692
710
s3_utils .upload (
0 commit comments