@@ -240,90 +240,90 @@ impl FetchState {
240240 async_runtime:: block_in_place ( || {
241241 block_on ( async {
242242 cas_client. fetch ( & digests, CasDigestType :: Tree ) . await . for_each ( |results| match results {
243- Ok ( ( stats, results) ) => {
244- reqs += 1 ;
245- total_stats. add ( & stats) ;
246- for ( digest, data) in results {
247- let Some ( mut keys) = digest_to_key. remove ( & digest) else {
248- tracing:: error!( "got CAS result for unrequested digest {:?}" , digest) ;
249- continue ;
250- } ;
251-
252- match data {
253- Err ( err) => {
254- tracing:: error!( ?err, ?keys, ?digest, "CAS fetch error" ) ;
255- tracing:: error!( target: "cas" , ?err, ?keys, ?digest, "tree fetch error" ) ;
256- error += keys. len ( ) ;
257- self . errors . multiple_keyed_error ( keys, "CAS fetch error" , err) ;
258- }
259- Ok ( None ) => {
260- tracing:: trace!( target: "cas" , ?keys, ?digest, "tree not in cas" ) ;
261- // miss
262- }
263- Ok ( Some ( data) ) => match AugmentedTree :: try_deserialize ( & * data) {
264- Ok ( tree) => {
265- keys_found_count += keys. len ( ) ;
266- tracing:: trace!( target: "cas" , ?keys, ?digest, "tree found in cas" ) ;
267-
268- let lazy_tree = LazyTree :: Cas ( AugmentedTreeWithDigest {
269- augmented_manifest_id : digest. hash ,
270- augmented_manifest_size : digest. size ,
271- augmented_tree : tree,
272- } ) ;
273-
274- if let Err ( err) =
275- cache_child_aux_data (
276- & lazy_tree,
277- aux_cache,
278- tree_aux_store,
279- // read_before_write=true - check presence in indexedlog before appending (to avoid duplicate entries on every CAS fetch)
280- true ,
281- )
282- {
283- self . errors . multiple_keyed_error ( keys, "cache child aux data failed" , err) ;
284- } else if !keys. is_empty ( ) {
285- let last = keys. pop ( ) . unwrap ( ) ;
286- for key in keys {
243+ Ok ( ( stats, results) ) => {
244+ reqs += 1 ;
245+ total_stats. add ( & stats) ;
246+ for ( digest, data) in results {
247+ let Some ( mut keys) = digest_to_key. remove ( & digest) else {
248+ tracing:: error!( "got CAS result for unrequested digest {:?}" , digest) ;
249+ continue ;
250+ } ;
251+
252+ match data {
253+ Err ( err) => {
254+ tracing:: error!( ?err, ?keys, ?digest, "CAS fetch error" ) ;
255+ tracing:: error!( target: "cas" , ?err, ?keys, ?digest, "tree fetch error" ) ;
256+ error += keys. len ( ) ;
257+ self . errors . multiple_keyed_error ( keys, "CAS fetch error" , err) ;
258+ }
259+ Ok ( None ) => {
260+ tracing:: trace!( target: "cas" , ?keys, ?digest, "tree not in cas" ) ;
261+ // miss
262+ }
263+ Ok ( Some ( data) ) => match AugmentedTree :: try_deserialize ( & * data) {
264+ Ok ( tree) => {
265+ keys_found_count += keys. len ( ) ;
266+ tracing:: trace!( target: "cas" , ?keys, ?digest, "tree found in cas" ) ;
267+
268+ let lazy_tree = LazyTree :: Cas ( AugmentedTreeWithDigest {
269+ augmented_manifest_id : digest. hash ,
270+ augmented_manifest_size : digest. size ,
271+ augmented_tree : tree,
272+ } ) ;
273+
274+ if let Err ( err) =
275+ cache_child_aux_data (
276+ & lazy_tree,
277+ aux_cache,
278+ tree_aux_store,
279+ // read_before_write=true - check presence in indexedlog before appending (to avoid duplicate entries on every CAS fetch)
280+ true ,
281+ )
282+ {
283+ self . errors . multiple_keyed_error ( keys, "cache child aux data failed" , err) ;
284+ } else if !keys. is_empty ( ) {
285+ let last = keys. pop ( ) . unwrap ( ) ;
286+ for key in keys {
287+ self . common . found (
288+ key,
289+ StoreTree {
290+ content : Some ( lazy_tree. clone ( ) ) ,
291+ parents : None ,
292+ aux_data : None ,
293+ } ,
294+ ) ;
295+ }
296+ // no clones needed
287297 self . common . found (
288- key ,
298+ last ,
289299 StoreTree {
290- content : Some ( lazy_tree. clone ( ) ) ,
300+ content : Some ( lazy_tree) ,
291301 parents : None ,
292302 aux_data : None ,
293303 } ,
294304 ) ;
295305 }
296- // no clones needed
297- self . common . found (
298- last,
299- StoreTree {
300- content : Some ( lazy_tree) ,
301- parents : None ,
302- aux_data : None ,
303- } ,
304- ) ;
305306 }
306- }
307- Err ( err ) => {
308- error += keys. len ( ) ;
309- tracing :: error! ( target : "cas" , ?err , ? keys, ?digest , "error deserializing tree" ) ;
310- self . errors . multiple_keyed_error ( keys , "CAS tree deserialization failed" , err ) ;
311- }
312- } ,
307+ Err ( err ) => {
308+ error += keys . len ( ) ;
309+ tracing :: error! ( target : "cas" , ?err , ? keys, ?digest , "error deserializing tree" ) ;
310+ self . errors . multiple_keyed_error ( keys, "CAS tree deserialization failed" , err ) ;
311+ }
312+ } ,
313+ }
313314 }
315+ future:: ready ( ( ) )
314316 }
315- future:: ready ( ( ) )
316- }
317- Err ( err) => {
318- tracing:: error!( ?err, "overall CAS error" ) ;
319- tracing:: error!( target: "cas" , ?err, "CAS error fetching trees" ) ;
320-
321- // Don't propagate CAS error - we want to fall back to SLAPI.
322- reqs += 1 ;
323- error += 1 ;
324- future:: ready ( ( ) )
325- }
326- } ) . await ;
317+ Err ( err) => {
318+ tracing:: error!( ?err, "overall CAS error" ) ;
319+ tracing:: error!( target: "cas" , ?err, "CAS error fetching trees" ) ;
320+
321+ // Don't propagate CAS error - we want to fall back to SLAPI.
322+ reqs += 1 ;
323+ error += 1 ;
324+ future:: ready ( ( ) )
325+ }
326+ } ) . await ;
327327 } )
328328 } ) ;
329329
0 commit comments