@@ -6,9 +6,7 @@ use interface::checksums_storage::{
6
6
BbgmChangeRecord , BbgmChecksumServiceApi , BbgmEpochCksm , BbgmGrandEpochCksm ,
7
7
BbgmGrandEpochCksmWithNumber ,
8
8
} ;
9
- use metrics_utils:: {
10
- AccoountConsistencyGrpcClientMetricsConfig , BubblegumConsistencyGrpcClientMetricsConfig ,
11
- } ;
9
+ use metrics_utils:: { AccoountConsistencyGrpcClientMetrics , BubblegumConsistencyGrpcClientMetrics } ;
12
10
use solana_sdk:: pubkey:: Pubkey ;
13
11
use tokio:: time:: Instant ;
14
12
use tonic:: async_trait;
@@ -399,21 +397,19 @@ impl Into<BbgmChangePos> for BbgmChangePosition {
399
397
400
398
pub struct BbgmConsistencyApiClientImpl {
401
399
client : tokio:: sync:: Mutex < BbgmConsistencyServiceClient < Channel > > ,
402
- peer : String ,
403
- metrics : Option < Arc < BubblegumConsistencyGrpcClientMetricsConfig > > ,
400
+ metrics : Option < Arc < dyn BubblegumConsistencyGrpcClientMetrics + Send + Sync > > ,
404
401
}
405
402
406
403
impl BbgmConsistencyApiClientImpl {
407
404
pub async fn new (
408
405
peer : & str ,
409
- metrics : Option < Arc < BubblegumConsistencyGrpcClientMetricsConfig > > ,
406
+ metrics : Option < Arc < dyn BubblegumConsistencyGrpcClientMetrics + Send + Sync > > ,
410
407
) -> Result < BbgmConsistencyApiClientImpl , GrpcError > {
411
408
let url = Uri :: from_str ( peer) . map_err ( |e| GrpcError :: UriCreate ( e. to_string ( ) ) ) ?;
412
409
let channel = Channel :: builder ( url) . connect ( ) . await ?;
413
410
414
411
Ok ( BbgmConsistencyApiClientImpl {
415
412
client : tokio:: sync:: Mutex :: new ( BbgmConsistencyServiceClient :: new ( channel) ) ,
416
- peer : peer. to_string ( ) ,
417
413
metrics,
418
414
} )
419
415
}
@@ -439,16 +435,16 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
439
435
let mut client = self . client . lock ( ) . await ;
440
436
let start = Instant :: now ( ) ;
441
437
let call_result = client. get_bbgm_grand_epochs_for_tree ( grpc_request) . await ;
442
- if call_result. is_err ( ) && self . metrics . is_some ( ) {
443
- self . metrics
444
- . as_ref ( )
445
- . unwrap ( )
446
- . track_get_grand_epochs_for_tree_call_error ( & self . peer ) ;
438
+
439
+ if let Some ( m) = self . metrics . as_ref ( ) {
440
+ m. track_get_grand_epochs_for_tree_call ( call_result. is_ok ( ) ) ;
447
441
}
442
+
448
443
let grpc_response = call_result?;
449
444
if let Some ( m) = self . metrics . as_ref ( ) {
450
- m. peers_bubblegum_get_grand_epochs_for_tree_latency
451
- . observe ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
445
+ m. track_peers_bubblegum_get_grand_epochs_for_tree_latency (
446
+ start. elapsed ( ) . as_secs_f64 ( ) ,
447
+ ) ;
452
448
}
453
449
let list = grpc_response. into_inner ( ) . list ;
454
450
let mut result = Vec :: with_capacity ( list. len ( ) ) ;
@@ -484,16 +480,13 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
484
480
485
481
let start = Instant :: now ( ) ;
486
482
let call_result = client. get_bbgm_grand_epoch_checksums ( grpc_request) . await ;
487
- if call_result. is_err ( ) && self . metrics . is_some ( ) {
488
- self . metrics
489
- . as_ref ( )
490
- . unwrap ( )
491
- . track_get_grand_epochs_call_error ( & self . peer ) ;
483
+ if let Some ( m) = self . metrics . as_ref ( ) {
484
+ m. track_get_grand_epochs_call ( call_result. is_ok ( ) ) ;
492
485
}
486
+
493
487
let grpc_response = call_result?;
494
488
if let Some ( m) = self . metrics . as_ref ( ) {
495
- m. peers_bubblegum_get_grand_epochs_latency
496
- . observe ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
489
+ m. track_peers_bubblegum_get_grand_epochs_latency ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
497
490
}
498
491
499
492
let list = grpc_response. into_inner ( ) . list ;
@@ -533,16 +526,13 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
533
526
let call_result = client
534
527
. get_bbgm_epoch_checksums_in_grand_epoch ( grpc_request)
535
528
. await ;
536
- if call_result. is_err ( ) && self . metrics . is_some ( ) {
537
- self . metrics
538
- . as_ref ( )
539
- . unwrap ( )
540
- . track_get_epochs_call_error ( & self . peer ) ;
529
+ if let Some ( m) = self . metrics . as_ref ( ) {
530
+ m. track_get_epochs_call ( call_result. is_ok ( ) ) ;
541
531
}
532
+
542
533
let grpc_response = call_result?;
543
534
if let Some ( m) = self . metrics . as_ref ( ) {
544
- m. peers_bubblegum_get_epochs_latency
545
- . observe ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
535
+ m. track_peers_bubblegum_get_epochs_latency ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
546
536
}
547
537
548
538
let list = grpc_response. into_inner ( ) . list ;
@@ -585,16 +575,13 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
585
575
586
576
let start = Instant :: now ( ) ;
587
577
let call_result = client. get_bbgm_changes_in_epoch ( grpc_request) . await ;
588
- if call_result. is_err ( ) && self . metrics . is_some ( ) {
589
- self . metrics
590
- . as_ref ( )
591
- . unwrap ( )
592
- . track_get_changes_call_error ( & self . peer ) ;
578
+ if let Some ( m) = self . metrics . as_ref ( ) {
579
+ m. track_get_changes_call_error ( call_result. is_ok ( ) ) ;
593
580
}
581
+
594
582
let grpc_response = call_result?;
595
583
if let Some ( m) = self . metrics . as_ref ( ) {
596
- m. peers_bubblegum_get_changes_latency
597
- . observe ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
584
+ m. track_peers_bubblegum_get_changes_latency ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
598
585
}
599
586
600
587
let list = grpc_response. into_inner ( ) . list ;
@@ -643,21 +630,19 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
643
630
644
631
pub struct AccConsistencyApiClientImpl {
645
632
client : tokio:: sync:: Mutex < AccConsistencyServiceClient < Channel > > ,
646
- peer : String ,
647
- metrics : Option < Arc < AccoountConsistencyGrpcClientMetricsConfig > > ,
633
+ metrics : Option < Arc < dyn AccoountConsistencyGrpcClientMetrics + Send + Sync > > ,
648
634
}
649
635
650
636
impl AccConsistencyApiClientImpl {
651
637
pub async fn new (
652
638
peer : & str ,
653
- metrics : Option < Arc < AccoountConsistencyGrpcClientMetricsConfig > > ,
639
+ metrics : Option < Arc < dyn AccoountConsistencyGrpcClientMetrics + Send + Sync > > ,
654
640
) -> Result < AccConsistencyApiClientImpl , GrpcError > {
655
641
let url = Uri :: from_str ( peer) . map_err ( |e| GrpcError :: UriCreate ( e. to_string ( ) ) ) ?;
656
642
let channel = Channel :: builder ( url) . connect ( ) . await ?;
657
643
658
644
Ok ( AccConsistencyApiClientImpl {
659
645
client : tokio:: sync:: Mutex :: new ( AccConsistencyServiceClient :: new ( channel) ) ,
660
- peer : peer. to_string ( ) ,
661
646
metrics,
662
647
} )
663
648
}
@@ -671,16 +656,13 @@ impl AccChecksumServiceApi for AccConsistencyApiClientImpl {
671
656
672
657
let start = Instant :: now ( ) ;
673
658
let call_result = client. get_acc_grand_bucket_checksums ( grpc_request) . await ;
674
- if call_result. is_err ( ) && self . metrics . is_some ( ) {
675
- self . metrics
676
- . as_ref ( )
677
- . unwrap ( )
678
- . track_get_grand_buckets_call_error ( & self . peer ) ;
659
+ if let Some ( m) = self . metrics . as_ref ( ) {
660
+ m. track_get_grand_buckets_call ( call_result. is_ok ( ) ) ;
679
661
}
662
+
680
663
let grpc_response = call_result?;
681
664
if let Some ( m) = self . metrics . as_ref ( ) {
682
- m. peers_account_get_grand_buckets_latency
683
- . observe ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
665
+ m. track_peers_account_get_grand_buckets_latency ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
684
666
}
685
667
686
668
let list = grpc_response. into_inner ( ) . list ;
@@ -712,16 +694,13 @@ impl AccChecksumServiceApi for AccConsistencyApiClientImpl {
712
694
let call_result = client
713
695
. get_acc_bucket_checksums_in_grand_bucket ( grpc_request)
714
696
. await ;
715
- if call_result. is_err ( ) && self . metrics . is_some ( ) {
716
- self . metrics
717
- . as_ref ( )
718
- . unwrap ( )
719
- . track_get_buckets_call_error ( & self . peer ) ;
697
+ if let Some ( m) = self . metrics . as_ref ( ) {
698
+ m. track_get_buckets_call ( call_result. is_ok ( ) ) ;
720
699
}
700
+
721
701
let grpc_response = call_result?;
722
702
if let Some ( m) = self . metrics . as_ref ( ) {
723
- m. peers_account_get_buckets_latency
724
- . observe ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
703
+ m. track_peers_account_get_buckets_latency ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
725
704
}
726
705
727
706
let list = grpc_response. into_inner ( ) . list ;
@@ -754,16 +733,13 @@ impl AccChecksumServiceApi for AccConsistencyApiClientImpl {
754
733
755
734
let start = Instant :: now ( ) ;
756
735
let call_result = client. get_accs_in_bucket ( grpc_request) . await ;
757
- if call_result. is_err ( ) && self . metrics . is_some ( ) {
758
- self . metrics
759
- . as_ref ( )
760
- . unwrap ( )
761
- . track_get_latests_call_error ( & self . peer ) ;
736
+ if let Some ( m) = self . metrics . as_ref ( ) {
737
+ m. track_get_latests_call ( call_result. is_ok ( ) ) ;
762
738
}
739
+
763
740
let grpc_response = call_result?;
764
741
if let Some ( m) = self . metrics . as_ref ( ) {
765
- m. peers_account_get_latests_latency
766
- . observe ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
742
+ m. track_peers_account_get_latests_latency ( start. elapsed ( ) . as_secs_f64 ( ) ) ;
767
743
}
768
744
769
745
let list = grpc_response. into_inner ( ) . list ;
0 commit comments