Prioritized File Download During Sync

  • Feature Request: Modify the “Download” function to prioritize user-initiated file download requests over ongoing sync activities. When a user selects “Download” for a file, the system should temporarily interrupt the current sync to fulfill the download request promptly.

  • Rationale: Users accessing files on-the-go often require immediate access. The current system delays file downloads until sync activities are complete, which can be time-consuming. Prioritizing user-initiated downloads would significantly improve accessibility and user satisfaction, especially in time-sensitive scenarios.

2 Likes

I don’t know how feasible that is but it’s noted.

1 Like

AFAIK, this would be possible only using the system call setsockoption. Which is very far down in the hierarchy of OS calls. I doubt that DT is going down that far (I wouldn’t, if I were writing the code). Think about the sync methods:

  • CloudKit provides its own set of high-level calls, and the well-known error messages like CKErrorDomain 15 indicate that DT uses them (the high-level calls)
  • WebDAV is a HTTP/S-derived protocol on top of TCP/IP, so no use for socket/setsocket there either
  • Bonjour provides, similar to CloudKit, its own high-level interface. No luck with setsockopt there.
  • And Dropbox also has an API

So you’re suggesting to “stop” one thing to make the other run faster. Presumably. Because you don’t know if that works. What if DT stops its sync, but Apple’s Cloud services run their own sync? Or another app hogs the network for whatever reason? Networking is a resource shared between many programs on a device nowadays. There’s no guarantee that stopping one service to “prioritize” another will have a positive effect or any effect at all. But it will certainly, in this case, slow down sync.

An alternative would be to not use remote sync. Or turn it on only if needed. Or use shallow sync.

+1

This would be valuable especially for users with large databases where data changes on a regular basis.

That’s already the case, at least if there’s no sync already going on.