@@ -116,26 +116,29 @@ impl<PubS: Storage + Send + Sync + 'static, PrivS: StorageExt + Send + Sync + 's
116116 let mut guarded_meta_storage = meta_store. write ( ) . await ;
117117
118118 // Step 1: Serialize server_key to public storage FIRST (before consuming it)
119- let mut pub_storage = self . inner . public_storage . lock ( ) . await ;
120- let server_result = store_versioned_at_request_id (
121- & mut ( * pub_storage) ,
122- key_id,
123- & fhe_key_set. server_key ,
124- & PubDataType :: ServerKey . to_string ( ) ,
125- )
126- . await ;
127-
128- if let Err ( e) = & server_result {
129- tracing:: error!( "Failed to store server key for request {}: {}" , key_id, e) ;
130- } else {
131- log_storage_success (
119+ let server_result = {
120+ let mut pub_storage = self . inner . public_storage . lock ( ) . await ;
121+ let result = store_versioned_at_request_id (
122+ & mut ( * pub_storage) ,
132123 key_id,
133- pub_storage . info ( ) ,
124+ & fhe_key_set . server_key ,
134125 & PubDataType :: ServerKey . to_string ( ) ,
135- true ,
136- true ,
137- ) ;
138- }
126+ )
127+ . await ;
128+
129+ if let Err ( e) = & result {
130+ tracing:: error!( "Failed to store server key for request {}: {}" , key_id, e) ;
131+ } else {
132+ log_storage_success (
133+ key_id,
134+ pub_storage. info ( ) ,
135+ & PubDataType :: ServerKey . to_string ( ) ,
136+ true ,
137+ true ,
138+ ) ;
139+ }
140+ result
141+ } ; // pub_storage lock released here
139142
140143 // Step 2: Consume server_key to extract components
141144 let (
@@ -160,6 +163,7 @@ impl<PubS: Storage + Send + Sync + 'static, PrivS: StorageExt + Send + Sync + 's
160163
161164 // Step 4: Run remaining storage operations in parallel
162165 let ( r1, r2, r3) = {
166+ let mut pub_storage = self . inner . public_storage . lock ( ) . await ;
163167 let mut priv_storage = self . inner . private_storage . lock ( ) . await ;
164168 let back_vault = match self . inner . backup_vault {
165169 Some ( ref x) => Some ( x. lock ( ) . await ) ,
0 commit comments