From: Claudio Cambra Date: Fri, 10 Mar 2023 02:42:30 +0000 (+0100) Subject: Ensure we don't saturate the server with propfind requests X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~96^2^2~55^2~178 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=65ab13c0f94ee2941e740fc8f08589fd492fd956;p=nextcloud-desktop.git Ensure we don't saturate the server with propfind requests Signed-off-by: Claudio Cambra --- diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift index 62297a8f1..8c17b3736 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderEnumerator.swift @@ -89,7 +89,7 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator { let directoryMetadatas = dbManager.directoryMetadatas(account: ncAccount.ncKitAccount) var allMetadatas: [NextcloudItemMetadataTable] = [] - let dispatchGroup = DispatchGroup() + let dispatchGroup = DispatchGroup() // TODO: Maybe own thread? for directoryMetadata in directoryMetadatas { dispatchGroup.enter() @@ -213,10 +213,7 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator { var allUpdatedMetadatas: [NextcloudItemMetadataTable] = [] var allDeletedMetadatas: [NextcloudItemMetadataTable] = [] - let dispatchGroup = DispatchGroup() - dispatchGroup.notify(queue: .main) { // Wait for all read tasks to finish - FileProviderEnumerator.completeChangesObserver(observer, anchor: anchor, ncKit: self.ncKit, newMetadatas: allNewMetadatas, updatedMetadatas: allUpdatedMetadatas, deletedMetadatas: allDeletedMetadatas) - } + let dispatchGroup = DispatchGroup() // TODO: Maybe own thread? for directoryMetadata in directoryMetadatas { dispatchGroup.enter() @@ -263,7 +260,11 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator { dispatchGroup.leave() } + + dispatchGroup.wait() } + + FileProviderEnumerator.completeChangesObserver(observer, anchor: anchor, ncKit: self.ncKit, newMetadatas: allNewMetadatas, updatedMetadatas: allUpdatedMetadatas, deletedMetadatas: allDeletedMetadatas) return } else if enumeratedItemIdentifier == .trashContainer { NSLog("Enumerating changes in trash set for user: %@ with serverUrl: %@", ncAccount.username, serverUrl)