refactor(tvix/store/bin): move service.clone right before async move
Change-Id: I7a2b951d9c9251a053a0de40f31836bda03a922d Reviewed-on: https://cl.tvl.fyi/c/depot/+/10408 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
		
							parent
							
								
									39cddb95be
								
							
						
					
					
						commit
						93a228b9a4
					
				
					 1 changed files with 59 additions and 55 deletions
				
			
		|  | @ -260,73 +260,77 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { | ||||||
|             let tasks = paths |             let tasks = paths | ||||||
|                 .into_iter() |                 .into_iter() | ||||||
|                 .map(|path| { |                 .map(|path| { | ||||||
|                     let blob_service = blob_service.clone(); |                     let task: JoinHandle<io::Result<()>> = tokio::task::spawn({ | ||||||
|                     let directory_service = directory_service.clone(); |                         let blob_service = blob_service.clone(); | ||||||
|                     let path_info_service = path_info_service.clone(); |                         let directory_service = directory_service.clone(); | ||||||
|  |                         let path_info_service = path_info_service.clone(); | ||||||
| 
 | 
 | ||||||
|                     let task: JoinHandle<io::Result<()>> = tokio::task::spawn(async move { |                         async move { | ||||||
|                         // Ingest the path into blob and directory service.
 |                             // Ingest the path into blob and directory service.
 | ||||||
|                         let root_node = import::ingest_path( |                             let root_node = import::ingest_path( | ||||||
|                             blob_service.clone(), |                                 blob_service.clone(), | ||||||
|                             directory_service.clone(), |                                 directory_service.clone(), | ||||||
|                             &path, |                                 &path, | ||||||
|                         ) |                             ) | ||||||
|                         .await |                             .await | ||||||
|                         .expect("failed to ingest path"); |                             .expect("failed to ingest path"); | ||||||
| 
 | 
 | ||||||
|                         // Ask the PathInfoService for the NAR size and sha256
 |                             // Ask the PathInfoService for the NAR size and sha256
 | ||||||
|                         let root_node_copy = root_node.clone(); |                             let root_node_copy = root_node.clone(); | ||||||
|                         let (nar_size, nar_sha256) = |                             let (nar_size, nar_sha256) = | ||||||
|                             path_info_service.calculate_nar(&root_node_copy).await?; |                                 path_info_service.calculate_nar(&root_node_copy).await?; | ||||||
| 
 | 
 | ||||||
|                         let name = path |                             let name = path | ||||||
|                             .file_name() |                                 .file_name() | ||||||
|                             .expect("path must not be ..") |                                 .expect("path must not be ..") | ||||||
|                             .to_str() |                                 .to_str() | ||||||
|                             .expect("path must be valid unicode"); |                                 .expect("path must be valid unicode"); | ||||||
| 
 | 
 | ||||||
|                         let output_path = store_path::build_nar_based_store_path(&nar_sha256, name); |                             let output_path = | ||||||
|  |                                 store_path::build_nar_based_store_path(&nar_sha256, name); | ||||||
| 
 | 
 | ||||||
|                         // assemble a new root_node with a name that is derived from the nar hash.
 |                             // assemble a new root_node with a name that is derived from the nar hash.
 | ||||||
|                         let root_node = |                             let root_node = | ||||||
|                             root_node.rename(output_path.to_string().into_bytes().into()); |                                 root_node.rename(output_path.to_string().into_bytes().into()); | ||||||
| 
 | 
 | ||||||
|                         // assemble the [crate::proto::PathInfo] object.
 |                             // assemble the [crate::proto::PathInfo] object.
 | ||||||
|                         let path_info = PathInfo { |                             let path_info = PathInfo { | ||||||
|                             node: Some(tvix_castore::proto::Node { |                                 node: Some(tvix_castore::proto::Node { | ||||||
|                                 node: Some(root_node), |                                     node: Some(root_node), | ||||||
|                             }), |  | ||||||
|                             // There's no reference scanning on path contents ingested like this.
 |  | ||||||
|                             references: vec![], |  | ||||||
|                             narinfo: Some(NarInfo { |  | ||||||
|                                 nar_size, |  | ||||||
|                                 nar_sha256: nar_sha256.to_vec().into(), |  | ||||||
|                                 signatures: vec![], |  | ||||||
|                                 reference_names: vec![], |  | ||||||
|                                 deriver: None, |  | ||||||
|                                 ca: Some(nar_info::Ca { |  | ||||||
|                                     r#type: tvix_store::proto::nar_info::ca::Hash::NarSha256.into(), |  | ||||||
|                                     digest: nar_sha256.to_vec().into(), |  | ||||||
|                                 }), |                                 }), | ||||||
|                             }), |                                 // There's no reference scanning on path contents ingested like this.
 | ||||||
|                         }; |                                 references: vec![], | ||||||
|  |                                 narinfo: Some(NarInfo { | ||||||
|  |                                     nar_size, | ||||||
|  |                                     nar_sha256: nar_sha256.to_vec().into(), | ||||||
|  |                                     signatures: vec![], | ||||||
|  |                                     reference_names: vec![], | ||||||
|  |                                     deriver: None, | ||||||
|  |                                     ca: Some(nar_info::Ca { | ||||||
|  |                                         r#type: tvix_store::proto::nar_info::ca::Hash::NarSha256 | ||||||
|  |                                             .into(), | ||||||
|  |                                         digest: nar_sha256.to_vec().into(), | ||||||
|  |                                     }), | ||||||
|  |                                 }), | ||||||
|  |                             }; | ||||||
| 
 | 
 | ||||||
|                         // put into [PathInfoService], and return the PathInfo that we get back
 |                             // put into [PathInfoService], and return the PathInfo that we get back
 | ||||||
|                         // from there (it might contain additional signatures).
 |                             // from there (it might contain additional signatures).
 | ||||||
|                         let path_info = path_info_service.put(path_info).await?; |                             let path_info = path_info_service.put(path_info).await?; | ||||||
| 
 | 
 | ||||||
|                         let node = path_info.node.unwrap().node.unwrap(); |                             let node = path_info.node.unwrap().node.unwrap(); | ||||||
| 
 | 
 | ||||||
|                         log_node(&node, &path); |                             log_node(&node, &path); | ||||||
| 
 | 
 | ||||||
|                         println!( |                             println!( | ||||||
|                             "{}", |                                 "{}", | ||||||
|                             StorePath::from_bytes(node.get_name()) |                                 StorePath::from_bytes(node.get_name()) | ||||||
|                                 .unwrap() |                                     .unwrap() | ||||||
|                                 .to_absolute_path() |                                     .to_absolute_path() | ||||||
|                         ); |                             ); | ||||||
| 
 | 
 | ||||||
|                         Ok(()) |                             Ok(()) | ||||||
|  |                         } | ||||||
|                     }); |                     }); | ||||||
|                     task |                     task | ||||||
|                 }) |                 }) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue