Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skip folder structure creation for Dropbox uploads (Team Folders) #16050

Open
mattgaspar opened this issue Jun 19, 2024 · 1 comment
Open

Skip folder structure creation for Dropbox uploads (Team Folders) #16050

mattgaspar opened this issue Jun 19, 2024 · 1 comment

Comments

@mattgaspar
Copy link

mattgaspar commented Jun 19, 2024

Is your feature request related to a problem? Please describe.
There is an issue with Dropbox when creating subfolders in fast succession. I think the Dropbox API replies that the folder has been successfully created before it is fully ready in their backend and then when a subfolder is attempted to be created the request fails and then the Cyberduck transfer or synchronization fails.

Describe the solution you'd like
I don't think the creation of the folder structure is necessary. Similar to blob storage a file can be uploaded using the Dropbox API without the folder structure being expressly created. Uploading a file with the specified path will automatically generate the folders in Dropbox.

Describe alternatives you've considered
Alternative would be to add a delay after each folder upload and/or automatic retry of folder creation.

Additional context
I am using Dropbox for business - Team Folders. The issue does not seem to effect the user folders, only the team folders.

@mattgaspar mattgaspar changed the title Skip folder structure creation for Dropbox uploads (Team Spaces) Skip folder structure creation for Dropbox uploads (Team Folders) Jun 19, 2024
@mattgaspar
Copy link
Author

I'm seeing some inconsistencies between Dropbox user accounts when trying to reproduce the issue so not sure what exactly the problem is but it also appears that Cyberduck is not honoring the Dropbox API response to delay subsequent requests.
When Dropbox replies with this status "HTTP/1.1 429 Too Many Requests" and a header of "Retry-After" you are supposed to wait the number of seconds indicated but I think Cyberduck fails the transfer session instead of waiting and retrying.

Here's some data from the log file:

2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - POST /2/files/create_folder_v2 HTTP/1.1
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - Dropbox-API-Path-Root: {".tag":"root","root":"2286996147"}
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - Content-Type: application/json; charset=utf-8
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - User-Agent: Cyberduck/8.9.0.41543 (Windows 10/10.0.17763.0) (amd64) OfficialDropboxJavaSDKv2/7.0.0
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - Content-Length: 108
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - Host: api.dropboxapi.com
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - Connection: Keep-Alive
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - Accept-Encoding: gzip,deflate
2024-06-19 12:17:03,022 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.request - Authorization: ********
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - HTTP/1.1 429 Too Many Requests
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - Content-Type: application/json
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - Cache-Control: no-cache
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - Content-Security-Policy: sandbox allow-forms allow-scripts
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - Retry-After: 1
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - X-Content-Type-Options: nosniff
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - Date: Wed, 19 Jun 2024 19:17:03 GMT
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - Server: envoy
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - Content-Length: 110
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - X-Dropbox-Response-Origin: far_remote
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] INFO ch.cyberduck.transcript.response - X-Dropbox-Request-Id: 929f0d1c801347be90aef2d2627414ec
2024-06-19 12:17:03,415 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] DEBUG org.apache.http.impl.execchain.MainClientExec - Connection can be kept alive indefinitely
2024-06-19 12:17:03,415 [background-19] INFO ch.cyberduck.core.threading.ExecutorServiceThreadPool - Shutdown pool ch.cyberduck.core.threading.DefaultThreadPool$1@1adf7a0[Running, pool size = 1, active threads = 0, queued tasks = 0, completed tasks = 1] now
2024-06-19 12:17:03,416 [httpexecutor-https://api.dropboxapi.com/2/files/create_folder_v2-1] DEBUG ch.cyberduck.core.threading.NamedThreadFactory - Finished execution of runnable java.util.concurrent.ThreadPoolExecutor$Worker@10c6476[State = 0, empty queue]
2024-06-19 12:17:03,417 [background-19] DEBUG ch.cyberduck.core.transfer.SynchronizingTransferErrorCallback - Await lock java.util.concurrent.locks.ReentrantLock@37f595f[Unlocked]
2024-06-19 12:17:03,417 [background-19] DEBUG ch.cyberduck.core.threading.DefaultFailureDiagnostics - Determine cause for failure BackgroundException{class=class ch.cyberduck.core.exception.RetriableAccessDeniedException, file=Path{path='removed', type=[directory]}, message='Cannot create folder Proof.', detail='', cause='null'}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant