Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces significant improvements to the IPFS download and gateway handling logic, focusing on reliability, error handling, and code maintainability. The main changes include adding retry logic for IPFS gateway downloads, refactoring file download and writing logic for clarity and robustness, and fixing a few parameter handling bugs.
IPFS Gateway Download Reliability and Error Handling:
DappnodeRepository, including configurable retry attempts, delays, and error normalization, to improve robustness when fetching content from IPFS gateways. [1] [2]getAndVerifyContentFromGatewaymethod to accept agatewayUrlparameter, allowing dynamic selection of gateways and supporting the new retry mechanism.File Download and Writing Refactor:
downloadToFswith a newwriteReadableToFshelper that handles timeouts, progress tracking, and error propagation in a more maintainable way. [1] [2]writeFileToMemorymethod to use the new retry mechanism, ensuring in-memory downloads are also resilient to gateway failures. [1] [2]Bug Fixes and Parameter Handling:
getImagewhereisAbsolute("/")was incorrectly used instead ofisAbsolute(path)for validating file paths.db.ipfsGateway.setto useparams.IPFS_REMOTEinstead ofparams.IPFS_GATEWAYinchangeIpfsClient.Other Improvements:
downloadImagesto use a sequentialfor...ofloop instead ofPromise.allfor better control over download order and logging. [1] [2]