diff --git a/src/server/push.rs b/src/server/push.rs index f23524ea..5d537605 100644 --- a/src/server/push.rs +++ b/src/server/push.rs @@ -405,33 +405,30 @@ pub(crate) async fn push_store(mut params: PushParameters) -> Result = existing_target_namespaces + .into_iter() + .filter(|target_namespace| { + params + .target + .ns + .contains(&target_namespace) + .map(|sub_depth| sub_depth <= max_depth) + .unwrap_or(false) + }) + .collect(); // Sort by namespace length and revert for sub-namespaces to be removed before parents target_sub_namespaces.sort_unstable_by_key(|a| a.name_len()); target_sub_namespaces.reverse(); for target_namespace in target_sub_namespaces { - if synced_namespaces.contains(target_namespace) { + if synced_namespaces.contains(&target_namespace) { continue; } - match remove_target_namespace(¶ms, target_namespace).await { + match remove_target_namespace(¶ms, &target_namespace).await { Ok(delete_stats) => { stats.add(SyncStats::from(RemovedVanishedStats { snapshots: delete_stats.removed_snapshots(),