Skip to content

Commit 955a3bb

Browse files
author
snorochevskiy
committed
Metrics changes for code review
1 parent 8eba2fb commit 955a3bb

File tree

3 files changed

+353
-318
lines changed

3 files changed

+353
-318
lines changed

grpc/src/consistencyapi_impl.rs

+36-60
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ use interface::checksums_storage::{
66
BbgmChangeRecord, BbgmChecksumServiceApi, BbgmEpochCksm, BbgmGrandEpochCksm,
77
BbgmGrandEpochCksmWithNumber,
88
};
9-
use metrics_utils::{
10-
AccoountConsistencyGrpcClientMetricsConfig, BubblegumConsistencyGrpcClientMetricsConfig,
11-
};
9+
use metrics_utils::{AccoountConsistencyGrpcClientMetrics, BubblegumConsistencyGrpcClientMetrics};
1210
use solana_sdk::pubkey::Pubkey;
1311
use tokio::time::Instant;
1412
use tonic::async_trait;
@@ -399,21 +397,19 @@ impl Into<BbgmChangePos> for BbgmChangePosition {
399397

400398
pub struct BbgmConsistencyApiClientImpl {
401399
client: tokio::sync::Mutex<BbgmConsistencyServiceClient<Channel>>,
402-
peer: String,
403-
metrics: Option<Arc<BubblegumConsistencyGrpcClientMetricsConfig>>,
400+
metrics: Option<Arc<dyn BubblegumConsistencyGrpcClientMetrics + Send + Sync>>,
404401
}
405402

406403
impl BbgmConsistencyApiClientImpl {
407404
pub async fn new(
408405
peer: &str,
409-
metrics: Option<Arc<BubblegumConsistencyGrpcClientMetricsConfig>>,
406+
metrics: Option<Arc<dyn BubblegumConsistencyGrpcClientMetrics + Send + Sync>>,
410407
) -> Result<BbgmConsistencyApiClientImpl, GrpcError> {
411408
let url = Uri::from_str(peer).map_err(|e| GrpcError::UriCreate(e.to_string()))?;
412409
let channel = Channel::builder(url).connect().await?;
413410

414411
Ok(BbgmConsistencyApiClientImpl {
415412
client: tokio::sync::Mutex::new(BbgmConsistencyServiceClient::new(channel)),
416-
peer: peer.to_string(),
417413
metrics,
418414
})
419415
}
@@ -439,16 +435,16 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
439435
let mut client = self.client.lock().await;
440436
let start = Instant::now();
441437
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());
447441
}
442+
448443
let grpc_response = call_result?;
449444
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+
);
452448
}
453449
let list = grpc_response.into_inner().list;
454450
let mut result = Vec::with_capacity(list.len());
@@ -484,16 +480,13 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
484480

485481
let start = Instant::now();
486482
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());
492485
}
486+
493487
let grpc_response = call_result?;
494488
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());
497490
}
498491

499492
let list = grpc_response.into_inner().list;
@@ -533,16 +526,13 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
533526
let call_result = client
534527
.get_bbgm_epoch_checksums_in_grand_epoch(grpc_request)
535528
.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());
541531
}
532+
542533
let grpc_response = call_result?;
543534
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());
546536
}
547537

548538
let list = grpc_response.into_inner().list;
@@ -585,16 +575,13 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
585575

586576
let start = Instant::now();
587577
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());
593580
}
581+
594582
let grpc_response = call_result?;
595583
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());
598585
}
599586

600587
let list = grpc_response.into_inner().list;
@@ -643,21 +630,19 @@ impl BbgmChecksumServiceApi for BbgmConsistencyApiClientImpl {
643630

644631
pub struct AccConsistencyApiClientImpl {
645632
client: tokio::sync::Mutex<AccConsistencyServiceClient<Channel>>,
646-
peer: String,
647-
metrics: Option<Arc<AccoountConsistencyGrpcClientMetricsConfig>>,
633+
metrics: Option<Arc<dyn AccoountConsistencyGrpcClientMetrics + Send + Sync>>,
648634
}
649635

650636
impl AccConsistencyApiClientImpl {
651637
pub async fn new(
652638
peer: &str,
653-
metrics: Option<Arc<AccoountConsistencyGrpcClientMetricsConfig>>,
639+
metrics: Option<Arc<dyn AccoountConsistencyGrpcClientMetrics + Send + Sync>>,
654640
) -> Result<AccConsistencyApiClientImpl, GrpcError> {
655641
let url = Uri::from_str(peer).map_err(|e| GrpcError::UriCreate(e.to_string()))?;
656642
let channel = Channel::builder(url).connect().await?;
657643

658644
Ok(AccConsistencyApiClientImpl {
659645
client: tokio::sync::Mutex::new(AccConsistencyServiceClient::new(channel)),
660-
peer: peer.to_string(),
661646
metrics,
662647
})
663648
}
@@ -671,16 +656,13 @@ impl AccChecksumServiceApi for AccConsistencyApiClientImpl {
671656

672657
let start = Instant::now();
673658
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());
679661
}
662+
680663
let grpc_response = call_result?;
681664
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());
684666
}
685667

686668
let list = grpc_response.into_inner().list;
@@ -712,16 +694,13 @@ impl AccChecksumServiceApi for AccConsistencyApiClientImpl {
712694
let call_result = client
713695
.get_acc_bucket_checksums_in_grand_bucket(grpc_request)
714696
.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());
720699
}
700+
721701
let grpc_response = call_result?;
722702
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());
725704
}
726705

727706
let list = grpc_response.into_inner().list;
@@ -754,16 +733,13 @@ impl AccChecksumServiceApi for AccConsistencyApiClientImpl {
754733

755734
let start = Instant::now();
756735
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());
762738
}
739+
763740
let grpc_response = call_result?;
764741
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());
767743
}
768744

769745
let list = grpc_response.into_inner().list;

0 commit comments

Comments
 (0)