Environment: ILCE-7M5 (CFCA6014E092) · USB · Camera Remote SDK V2.02.00 · darwin-arm64 (macOS 15) · server 3.0.0 · remote-transfer
Summary
The server neither queues nor deduplicates RemoteTransfer requests. Two independent consequences:
- A request issued while another transfer is in flight is rejected outright with
0x8D03 rather than being queued. There is no way for a client to submit work and let the server sequence it, and no exposed "transfer in progress" state it could poll to avoid the collision.
- Repeated identical requests each create a new file rather than being coalesced or rejected.
Observed
Four successive POST .../131201/1/download calls for the same content_id/file_id, spaced 2/5/10/20 s apart, all returned 202 and all wrote separate copies:
DSC09991.JPG = 10438049
DSC09991(1).JPG = 10438049
DSC09991(2).JPG = 10438049
DSC09991(3).JPG = 10438049
Same bytes, four times, ~40 MB of duplicate I/O over USB for one logical request.
Why it bites
A client that cannot tell whether its 202 will complete — see #44, where a transfer can be dropped with no terminal event — has an obvious and reasonable strategy: retry. Doing so silently multiplies files on disk and transfer time on the wire, and each retry that lands while the previous attempt is still running is rejected with a message that reads as a hard failure (filed separately).
Suggested
- Serialize transfers in a queue, so a request submitted during an in-flight transfer is accepted and run in turn rather than rejected.
- Coalesce or reject an identical in-flight
(cameraId, contentId, fileId, savePath) rather than starting a second copy.
- Expose the in-flight transfer (and any queue depth) so clients can make informed decisions instead of guessing.
Found while running the cross-platform transfer sweep in #40.
Environment: ILCE-7M5 (
CFCA6014E092) · USB · Camera Remote SDK V2.02.00 · darwin-arm64 (macOS 15) · server 3.0.0 ·remote-transferSummary
The server neither queues nor deduplicates RemoteTransfer requests. Two independent consequences:
0x8D03rather than being queued. There is no way for a client to submit work and let the server sequence it, and no exposed "transfer in progress" state it could poll to avoid the collision.Observed
Four successive
POST .../131201/1/downloadcalls for the samecontent_id/file_id, spaced 2/5/10/20 s apart, all returned202and all wrote separate copies:Same bytes, four times, ~40 MB of duplicate I/O over USB for one logical request.
Why it bites
A client that cannot tell whether its
202will complete — see #44, where a transfer can be dropped with no terminal event — has an obvious and reasonable strategy: retry. Doing so silently multiplies files on disk and transfer time on the wire, and each retry that lands while the previous attempt is still running is rejected with a message that reads as a hard failure (filed separately).Suggested
(cameraId, contentId, fileId, savePath)rather than starting a second copy.Found while running the cross-platform transfer sweep in #40.