-
Notifications
You must be signed in to change notification settings - Fork 669
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
1.7.1 client: data corruption when the client chunked PUT times out #2676
Comments
Two more traits:
|
The corruption pattern (16KB block) in this case is the same as already reported by other users (and by us in the past): #2425 (comment) Smells like SSL problem on the client: is it possible that some buffers (16KB) are reused and not properly initialized by the underlying Qt layer? |
@moscicki: i don't have any proxy on my server. I use an apache server and owncloud is served over HTTPS whith a self-signed certificate (without mod_proxy as specified before) |
@ckamm, @chandon: ok, then this is very clear now: it is a owncloud sync client problem with SSL enabled and not the nginx proxy (curl client does not have the problem either). The symptoms are so similar in both our cases that is almost certain we see the same problem. Now as we have a clear reproducer I think the devs can investigate more. @chandon: if you still have logs you may check if you can see 408 return code on PUT requests (or other symptoms of network timeout while doing chunked upload) Independently of that we are now working on checksumming functionality with sync client devs and this protect us from any forms of wierd corruption in the future. This case shows very clearly that checksumming is a must, as the entire stack which is on the data path is too complex and too diverse and not owned by "us" (users or service providers). |
@dragotin: this is a hardcore corruption case but I think it is very urgent (it will silently corrupt data on shaky networks for all your users). |
@moscicki We're not the only Qt users though... are there similar bugreports e.g. on http://bugs.qt-project.org ? |
@moscicki: in my log files, for the PUT requests on owncloud, no 408 :
|
@guruz: I would leave this to developers to replay the reproducer and fix the case. thanks! |
@moscicki I'm trying to reproduce, but wasn't successful yet. My steps:
Questions:
I found it odd that I don't see any mention of the first upload's timeout in the owncloudcmd logs. Do you see it there? |
@ckamm: sorry I was a bit overloaded, I will come back on this to you tomorrow |
@moscicki Could you tell us which Qt version you are using on the problematic machines? Also if the issue exists if you use the |
@moscicki which OS, with version of openssl? |
@ogoffart, @guruz, @ckamm: sorry guys for the delay. I have not yet had time to work on it. I will come back to you on this next week. It happened on redhat6, client 1.7.1:
More next week. |
And:
|
.oO(Note to self: The Qt 4.8 might be one reason.. just a guess) |
Is there anything else I can do regarding this issue? |
Please re-open a new issue if there is still a problem |
We have seen data corruption which happens when the chunked upload (of the first chunk) times out while talking to the nginx proxy (over SSL, proxy terminates SSL). That happened due to a network problem in the smashbox testing and after some pain I managed to reproduce it manually.
Steps to reproduce (on redhat6):
In the nginx logs we have records of three requests:
To check what goes on on the nginx proxy I have configured nginx to leave temporary files with request bodies:
I then concatenate two chunked PUT request bodies corresponding to my file:
When I run the md5sum on /tmp/FULL it corresponds exactly the file saved by the upstream storage server but it is different than the checksum of the original file that sync client was uploading.
Could you please examine the source code for client timeout condition for chunked PUTs? It is hard to sniff the traffic with SSL. Would it be plausible to have an option to save the payload of the PUT body into tmp files for debugging?
The text was updated successfully, but these errors were encountered: