Skip to content

Disable grab download resume#5019

Closed
jnummelin wants to merge 1 commit intok0sproject:mainfrom
jnummelin:fix/autopilot-replace-file
Closed

Disable grab download resume#5019
jnummelin wants to merge 1 commit intok0sproject:mainfrom
jnummelin:fix/autopilot-replace-file

Conversation

@jnummelin
Copy link
Copy Markdown
Member

Description

This is to mitigate cases like #4296

By default grab tries to resume the download if the file name determined from either the url or from content-type headers already exists. This makes things go side ways, if the existing file is smaller than the new one, the old content would still be there and only the "extra" new bytes would get written. I.e. the download would be "resumed". 🤦

This is probably not a fix for the root cause in #4296 as the only way I've been able to make grab fail with bad content length is by crafting a custom http server that maliciously borks Content-Length header.

This is a minimal possible fix that we can easily backport. @twz123 is already working on bigger refactoring of autopilot download functionality that gets rid of grab. Grab seems to bring more (bad) surprises than real benefits. In the end, we just download files and we should pretty much always just replace them. No need for full library dependecy for that.

Fixes # (issue)

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

How Has This Been Tested?

  • Manual test: I've tested the grab functionality manually to figure out this resume stuff
  • Auto test added

Checklist:

  • My code follows the style guidelines of this project
  • My commit messages are signed-off
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules
  • I have checked my code and corrected any misspellings

@jnummelin jnummelin requested a review from a team as a code owner September 19, 2024 19:36
@jnummelin jnummelin requested review from kke and twz123 September 19, 2024 19:36
@jnummelin
Copy link
Copy Markdown
Member Author

@laverya Would it be possible for you to test this with the server you've used in #4296 to see if it helps at all?

@jnummelin jnummelin force-pushed the fix/autopilot-replace-file branch from b792e50 to 4027037 Compare September 23, 2024 13:46
This is to mitigate cases like k0sproject#4296

By default grab tries to resume the download if the file name determined from either the url or from content-type headers already exists. This makes things go side ways, if the existing file is smaller than the new one, the old content would still be there and only the "extra" new bytes would get written. I.e. the download would be "resumed". 🤦

This is probably not a fix for the root cause in k0sproject#4296 as the only way I've been able to make grab fail with `bad content length` is by crafting a custom http server that maliciously borks `Content-Length` header.

This is a minimal possible fix that we can easily backport. @twz123 is already working on bigger refactoring of autopilot download functionality that gets rid of grab. Grab seems to bring more (bad) surprises than real benefits. In the end, we just download files and we should pretty much always just replace them. No need for full library dependecy for that.

Signed-off-by: Jussi Nummelin <jnummelin@mirantis.com>
@jnummelin jnummelin force-pushed the fix/autopilot-replace-file branch from 4027037 to ff0da08 Compare September 23, 2024 13:48
@jnummelin
Copy link
Copy Markdown
Member Author

Superseded by #5034

@jnummelin jnummelin closed this Sep 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant