1 Commits

Author SHA1 Message Date
0c43d95956 validation: remove allocation
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-09 08:50:07 -08:00

View File

@@ -75,27 +75,25 @@ async fn release_inner(
cloud_context:&rbx_asset::cloud::Context, cloud_context:&rbx_asset::cloud::Context,
cloud_context_luau_execution:&rbx_asset::cloud::Context, cloud_context_luau_execution:&rbx_asset::cloud::Context,
load_asset_version_runtime:&rbx_asset::cloud::LuauSessionLatestRequest, load_asset_version_runtime:&rbx_asset::cloud::LuauSessionLatestRequest,
submissions:&crate::grpc::submissions::Service, submissions_service:&crate::grpc::submissions::Service,
)->Result<(),InnerError>{ )->Result<(),InnerError>{
let available_parallelism=std::thread::available_parallelism().map_err(InnerError::Io)?.get(); let available_parallelism=std::thread::available_parallelism().map_err(InnerError::Io)?.get();
// set up futures // set up futures
// unnecessary allocation :( let submissions=&release_info.Submissions;
let asset_versions:Vec<_> =release_info
.Submissions
.iter()
.map(|submission|rbx_asset::cloud::GetAssetVersionRequest{
asset_id:submission.ModelID,
version:submission.ModelVersion,
})
.enumerate()
.collect();
// fut_download // fut_download
let fut_download=futures::stream::iter(asset_versions) let fut_download=futures::stream::iter(submissions)
.map(|(index,asset_version)|async move{ .enumerate()
let modes=download_fut(cloud_context,asset_version).await; .map(|(index,submission)|{
(index,modes) let asset_version=rbx_asset::cloud::GetAssetVersionRequest{
asset_id:submission.ModelID,
version:submission.ModelVersion,
};
async move{
let modes=download_fut(cloud_context,asset_version).await;
(index,modes)
}
}) })
.buffer_unordered(available_parallelism.min(MAX_PARALLEL_DECODE)) .buffer_unordered(available_parallelism.min(MAX_PARALLEL_DECODE))
.collect::<Vec<(usize,Result<_,DownloadFutError>)>>(); .collect::<Vec<(usize,Result<_,DownloadFutError>)>>();
@@ -104,7 +102,7 @@ async fn release_inner(
let fut_load_asset_versions=load_asset_versions( let fut_load_asset_versions=load_asset_versions(
cloud_context_luau_execution, cloud_context_luau_execution,
load_asset_version_runtime, load_asset_version_runtime,
release_info.Submissions.iter().map(|submission|submission.UploadedAssetID), submissions.iter().map(|submission|submission.UploadedAssetID),
); );
// execute futures // execute futures
@@ -113,7 +111,7 @@ async fn release_inner(
let load_asset_versions=load_asset_versions_result.map_err(InnerError::LoadAssetVersions)?; let load_asset_versions=load_asset_versions_result.map_err(InnerError::LoadAssetVersions)?;
// sanity check roblox output // sanity check roblox output
if load_asset_versions.len()!=release_info.Submissions.len(){ if load_asset_versions.len()!=submissions.len(){
return Err(InnerError::LoadAssetVersionsListLength); return Err(InnerError::LoadAssetVersionsListLength);
}; };
@@ -127,7 +125,7 @@ async fn release_inner(
match result{ match result{
Ok(value)=>modes.push(value), Ok(value)=>modes.push(value),
Err(error)=>errors.push(ErrorContext{ Err(error)=>errors.push(ErrorContext{
submission_id:release_info.Submissions[index].SubmissionID, submission_id:submissions[index].SubmissionID,
error:error, error:error,
}), }),
} }
@@ -144,7 +142,7 @@ async fn release_inner(
.zip(modes) .zip(modes)
.zip(load_asset_versions) .zip(load_asset_versions)
.map(|((submission,modes),asset_version)|async move{ .map(|((submission,modes),asset_version)|async move{
let result=submissions.set_status_released(rust_grpc::validator::SubmissionReleaseRequest{ let result=submissions_service.set_status_released(rust_grpc::validator::SubmissionReleaseRequest{
submission_id:submission.SubmissionID, submission_id:submission.SubmissionID,
map_create:Some(rust_grpc::maps_extended::MapCreate{ map_create:Some(rust_grpc::maps_extended::MapCreate{
id:submission.UploadedAssetID as i64, id:submission.UploadedAssetID as i64,