From 930e47838710c951504b91e3cb1d3ec5b50432d0 Mon Sep 17 00:00:00 2001 From: Sam Dealy Date: Mon, 29 Aug 2022 12:45:55 -0700 Subject: [PATCH] Fix responder ID usage in FVR --- fog/view/server/src/error.rs | 6 ++++++ fog/view/server/src/router_request_handler.rs | 5 +++-- fog/view/server/src/shard_responses_processor.rs | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/fog/view/server/src/error.rs b/fog/view/server/src/error.rs index ee6786701a..c4fc627407 100644 --- a/fog/view/server/src/error.rs +++ b/fog/view/server/src/error.rs @@ -33,6 +33,12 @@ impl From for RouterServerError { } } +impl From for RouterServerError { + fn from(src: mc_util_uri::UriConversionError) -> Self { + RouterServerError::ViewStoreError(format!("{}", src)) + } +} + pub fn router_server_err_to_rpc_status( context: &str, src: RouterServerError, diff --git a/fog/view/server/src/router_request_handler.rs b/fog/view/server/src/router_request_handler.rs index 22d06b075c..bc65a5d3fa 100644 --- a/fog/view/server/src/router_request_handler.rs +++ b/fog/view/server/src/router_request_handler.rs @@ -19,7 +19,8 @@ use mc_fog_api::{ use mc_fog_uri::FogViewStoreUri; use mc_fog_view_enclave_api::ViewEnclaveProxy; use mc_util_grpc::{rpc_invalid_arg_error, ConnectionUriGrpcioChannel}; -use std::{collections::BTreeMap, str::FromStr, sync::Arc}; +use mc_util_uri::ConnectionUri; +use std::{collections::BTreeMap, sync::Arc}; const RETRY_COUNT: usize = 3; @@ -222,7 +223,7 @@ async fn authenticate_view_store( view_store_url: FogViewStoreUri, logger: Logger, ) -> Result<(), RouterServerError> { - let view_store_id = ResponderId::from_str(&view_store_url.to_string())?; + let view_store_id = view_store_url.responder_id()?; let client_auth_request = enclave.view_store_init(view_store_id.clone())?; let grpc_env = Arc::new( grpcio::EnvBuilder::new() diff --git a/fog/view/server/src/shard_responses_processor.rs b/fog/view/server/src/shard_responses_processor.rs index 74aeaf18d8..e19ac55057 100644 --- a/fog/view/server/src/shard_responses_processor.rs +++ b/fog/view/server/src/shard_responses_processor.rs @@ -8,6 +8,7 @@ use mc_fog_api::{ view_grpc::FogViewStoreApiClient, }; use mc_fog_uri::FogViewStoreUri; +use mc_util_uri::ConnectionUri; use std::{str::FromStr, sync::Arc}; /// The result of processing the MultiViewStoreQueryResponse from each Fog View @@ -52,7 +53,7 @@ pub fn process_shard_responses( let store_uri = FogViewStoreUri::from_str(response.get_fog_view_store_uri())?; match response.get_status() { MultiViewStoreQueryResponseStatus::SUCCESS => { - let store_responder_id = ResponderId::from_str(&store_uri.to_string())?; + let store_responder_id = store_uri.responder_id()?; new_query_responses.push((store_responder_id, response.take_query_response())); } // The shard was unable to produce a query response because the Fog View Store