-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Use io.ReadFull to read the bundle content #8389
Conversation
The io.Reader documentation says: > Read reads up to len(p) bytes into p. It returns the number of bytes > read (0 <= n <= len(p)) and any error encountered. ... If some data is > available but not len(p) bytes, Read conventionally returns what is > available instead of waiting for more. Read is not guaranteed to fill the data argument. Use io.ReadFull to fill the buffer. In some cases (a relatively big bundle), the bundle content was not completely read and it would fail to parse. Using `io.ReadFull` fixes the issue. Signed-off-by: Vincent Demeester <[email protected]>
/lgtm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
/approve
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: afrittoli The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/cherry-pick release-v0.65.x |
/cherry-pick release-v0.62.x |
/cherry-pick release-v0.59.x |
/cherry-pick release-v0.56.x |
@vdemeester: new pull request created: #8390 In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@vdemeester: new pull request created: #8391 In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@vdemeester: new pull request created: #8392 In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@vdemeester: new pull request created: #8393 In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@@ -194,7 +194,7 @@ func readTarLayer(layer v1.Layer) ([]byte, error) { | |||
} | |||
|
|||
contents := make([]byte, header.Size) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
header.Size
is smaller than the actual size?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nope it has the right size.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then why does it not read all the data into the buffer of the right size?
(Likely a noob question 😅)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Read reads up to len(p) bytes into p. It returns the number of bytes
read (0 <= n <= len(p)) and any error encountered. ... If some data is
available but not len(p) bytes, Read conventionally returns what is
available instead of waiting for more.
io.Reader
doesn't give you that guarantee. Why ? I am not sure 🙃
Changes
The io.Reader documentation says:
Read is not guaranteed to fill the data argument. Use io.ReadFull to
fill the buffer.
In some cases (a relatively big bundle), the bundle content was not
completely read and it would fail to parse. Using
io.ReadFull
fixesthe issue.
Signed-off-by: Vincent Demeester [email protected]
/kind bug
Closes #8388
Submitter Checklist
As the author of this PR, please check off the items in this checklist:
/kind <type>
. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tepRelease Notes