mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-09-30 21:19:35 +02:00
fix: remove browser cleanup from profile sync
This commit is contained in:
1 parent
0860a3b6e0
commit
e45f4a792f
2 files changed
+17
-74
No files matched your search
@@ -513,6 +513,11 @@ impl DownloadedBrowsersRegistry {
|
|||||||
browser: &str,
|
browser: &str,
|
||||||
version: &str,
|
version: &str,
|
||||||
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||||
|
// Never remove a directory if a download is in progress for this browser/version
|
||||||
|
if crate::downloader::is_downloading(browser, version) {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
let binaries_dir = crate::app_dirs::binaries_dir();
|
let binaries_dir = crate::app_dirs::binaries_dir();
|
||||||
|
|
||||||
let version_dir = binaries_dir.join(browser).join(version);
|
let version_dir = binaries_dir.join(browser).join(version);
|
||||||
@@ -593,6 +598,12 @@ impl DownloadedBrowsersRegistry {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip if a download is in progress for this browser/version
|
||||||
|
if crate::downloader::is_downloading(browser_name, version_name) {
|
||||||
|
has_non_empty_versions = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Check if version directory is empty
|
// Check if version directory is empty
|
||||||
match fs::read_dir(&version_path) {
|
match fs::read_dir(&version_path) {
|
||||||
Ok(mut entries) => {
|
Ok(mut entries) => {
|
||||||
|
|||||||
@@ -467,31 +467,12 @@ impl SyncScheduler {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for all parallel syncs to finish
|
// Wait for all parallel syncs to finish (only if we actually spawned any)
|
||||||
while let Some(result) = sync_set.join_next().await {
|
if !sync_set.is_empty() {
|
||||||
if let Err(e) = result {
|
while let Some(result) = sync_set.join_next().await {
|
||||||
log::error!("Profile sync task panicked: {e}");
|
if let Err(e) = result {
|
||||||
}
|
log::error!("Profile sync task panicked: {e}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trigger cleanup if everything is done
|
|
||||||
let all_done = {
|
|
||||||
let in_flight = self.in_flight_profiles.lock().await;
|
|
||||||
in_flight.is_empty()
|
|
||||||
&& self.pending_profiles.lock().await.is_empty()
|
|
||||||
&& self.pending_proxies.lock().await.is_empty()
|
|
||||||
&& self.pending_groups.lock().await.is_empty()
|
|
||||||
&& self.pending_vpns.lock().await.is_empty()
|
|
||||||
&& self.pending_extensions.lock().await.is_empty()
|
|
||||||
&& self.pending_extension_groups.lock().await.is_empty()
|
|
||||||
};
|
|
||||||
if all_done {
|
|
||||||
log::debug!("All profile syncs completed, triggering cleanup");
|
|
||||||
let registry = crate::downloaded_browsers_registry::DownloadedBrowsersRegistry::instance();
|
|
||||||
if let Err(e) = registry.cleanup_unused_binaries() {
|
|
||||||
log::warn!("Cleanup after sync failed: {e}");
|
|
||||||
} else {
|
|
||||||
log::debug!("Cleanup after sync completed successfully");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -546,16 +527,6 @@ impl SyncScheduler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if all sync work is complete after proxies finish
|
// Check if all sync work is complete after proxies finish
|
||||||
if !self.is_sync_in_progress().await {
|
|
||||||
log::debug!("All syncs completed after proxy sync, triggering cleanup");
|
|
||||||
let registry =
|
|
||||||
crate::downloaded_browsers_registry::DownloadedBrowsersRegistry::instance();
|
|
||||||
if let Err(e) = registry.cleanup_unused_binaries() {
|
|
||||||
log::warn!("Cleanup after sync failed: {e}");
|
|
||||||
} else {
|
|
||||||
log::debug!("Cleanup after sync completed successfully");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Failed to create sync engine: {}", e);
|
log::error!("Failed to create sync engine: {}", e);
|
||||||
@@ -613,16 +584,6 @@ impl SyncScheduler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if all sync work is complete after groups finish
|
// Check if all sync work is complete after groups finish
|
||||||
if !self.is_sync_in_progress().await {
|
|
||||||
log::debug!("All syncs completed after group sync, triggering cleanup");
|
|
||||||
let registry =
|
|
||||||
crate::downloaded_browsers_registry::DownloadedBrowsersRegistry::instance();
|
|
||||||
if let Err(e) = registry.cleanup_unused_binaries() {
|
|
||||||
log::warn!("Cleanup after sync failed: {e}");
|
|
||||||
} else {
|
|
||||||
log::debug!("Cleanup after sync completed successfully");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Failed to create sync engine: {}", e);
|
log::error!("Failed to create sync engine: {}", e);
|
||||||
@@ -675,17 +636,6 @@ impl SyncScheduler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !self.is_sync_in_progress().await {
|
|
||||||
log::debug!("All syncs completed after VPN sync, triggering cleanup");
|
|
||||||
let registry =
|
|
||||||
crate::downloaded_browsers_registry::DownloadedBrowsersRegistry::instance();
|
|
||||||
if let Err(e) = registry.cleanup_unused_binaries() {
|
|
||||||
log::warn!("Cleanup after sync failed: {e}");
|
|
||||||
} else {
|
|
||||||
log::debug!("Cleanup after sync completed successfully");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Failed to create sync engine: {}", e);
|
log::error!("Failed to create sync engine: {}", e);
|
||||||
@@ -715,15 +665,6 @@ impl SyncScheduler {
|
|||||||
log::error!("Failed to sync extension {}: {}", ext_id, e);
|
log::error!("Failed to sync extension {}: {}", ext_id, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !self.is_sync_in_progress().await {
|
|
||||||
log::debug!("All syncs completed after extension sync, triggering cleanup");
|
|
||||||
let registry =
|
|
||||||
crate::downloaded_browsers_registry::DownloadedBrowsersRegistry::instance();
|
|
||||||
if let Err(e) = registry.cleanup_unused_binaries() {
|
|
||||||
log::warn!("Cleanup after sync failed: {e}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Failed to create sync engine: {}", e);
|
log::error!("Failed to create sync engine: {}", e);
|
||||||
@@ -753,15 +694,6 @@ impl SyncScheduler {
|
|||||||
log::error!("Failed to sync extension group {}: {}", group_id, e);
|
log::error!("Failed to sync extension group {}: {}", group_id, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !self.is_sync_in_progress().await {
|
|
||||||
log::debug!("All syncs completed after extension group sync, triggering cleanup");
|
|
||||||
let registry =
|
|
||||||
crate::downloaded_browsers_registry::DownloadedBrowsersRegistry::instance();
|
|
||||||
if let Err(e) = registry.cleanup_unused_binaries() {
|
|
||||||
log::warn!("Cleanup after sync failed: {e}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Failed to create sync engine: {}", e);
|
log::error!("Failed to create sync engine: {}", e);
|
||||||
|
|||||||
Reference in new issue
Block a user