-
Notifications
You must be signed in to change notification settings - Fork 158
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
Put with unexpected EOF? and how to debug it? #739
Comments
That log comes from somewhere in server/http.go - there are only a few places in that file that don't use a sepecific error message in the log line- are you using a http proxy backend? ie I wonder if it's this line (connection lost while uploading to the backend?): |
The backend storage is s3, with domain name to connect backend storage. @mostynb |
I believe (but I'm not 100% sure, and it could be related to my internal patches) that "PUT ... unexpected EOF" is logged by bazel-remote, when bazel aborts an upload (e.g. closing the TCP connection) without completing the upload. Edited: In other words, AFAIK, that log is nothing to worry about and bazel-remote is working as expected. I don't know if it is also related to the http proxy backend, but I experience it without using the http proxy backend. |
so your suggestion is which backend storage is better? @ulrfa |
Bazel-remote is always using local storage. Even if also enabling any of the proxies (http, grpc, s3, gcs, ...) the blobs are still also stored/buffered in the local storage. When bazel-remote downloads blobs via proxies, the blobs are completely written (and flushed AFAIK) to local storage before being propagated to the client requesting them, they are not just streamed with buffer in RAM. Therefore I suggest using proxies only if your use cases requires that, and otherwise use local storage without proxies. I personally don't have much experience of the different proxies (http, grpc, s3, gcs, ...). I guess they all work, and that there might be differences among them, e.g. regarding how efficient they can implement findMissingDigest requests, but I don't know. |
our case is gitlab ci, I don't know it's suitabled for it with s3 storage. @ulrfa |
I have no experience of gitlab ci. |
This might help diagnose problems like buchgr#739.
This might help diagnose problems like buchgr#739.
I pushed an update which will give a bit more context, so we can at least see which location in server/http.go gives this error for you. Could you try a build from the tip of the master branch, and report back the updated error message? |
@mostynb ok, I will try it later |
compile with the master branch and try it again, no detail error message @mostynb |
I think all the PUT errors in server/http.go add some extra information, except for |
ok,I will try it again/ |
|
Thanks, now we know that the error is coming from an io.ReadFull call in casblob.WriteAndClose. Is the client uploading an uncompressed blob? I guess the most likely scenario is one of these:
I pushed another update, which tries to identify these causes. Do you have any client side logs for these failed uploads? |
it's difficult to get the logs, I will try it. @mostynb |
2024/03/22 02:22:20 PUT /cas/e815d929826ce2f092e3b611233b41d175500c54b7c3f9ca015515df26cba6aa: unexpected EOF
The text was updated successfully, but these errors were encountered: