Trip the IPFS circuit breaker only when the Kubo node is unreachable in the client

Open
#3,680 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
cli, rust

Research direction

Start by locating the client IPFS file downloader and its files/stat timeout handling, then trace how the client and CLI learn that IPFS has been disabled. Check the existing parallel download and CLI documentation paths before changing behavior. Done means connection errors trip the breaker immediately, consecutive timeouts account for parallel downloads and reset after a successful download, and the CLI warns users and documents the behavior.

Written by the indexing model from the issue text.

Description

feature :rocket:

Why

The client handles a files/stat timeout of the IPFS file downloader like an unreachable Kubo node, so a single slow answer under parallel downloads disables IPFS for all the remaining files of a Cardano database download, and the fallback to cloud storage is only reported in the logs.

What

The client stops using IPFS at once when the Kubo node cannot be connected, and only after a number of consecutive files/stat timeouts without any successful IPFS download in between, and the CLI warns the user when IPFS is disabled during a download.

How

  • Extend the timeout to 10s instead of 5s?
  • Distinguish a Kubo connection error from a files/stat timeout in the IPFS file downloader
  • Trip the IPFS circuit breaker at once on a Kubo connection error
  • Trip the IPFS circuit breaker after N consecutive files/stat timeouts, with a reset of the count on each successful IPFS download (take into consideration the number of parallel downloads)
  • Reset the circuit breaker after a delay? (Is it worth it if the download lasts 15 minutes?)
  • Expose the circuit breaker trip to the client users (e.g. through a feedback event)
  • Display a warning in the client CLI when the IPFS circuit breaker trips
  • Update the client CLI documentation of the IPFS download
Dominant language
Rust
Stars
155
Forks
52
Avg merge
2d 17h
Merged PRs (30d)
37

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from IntersectMBO/mithril

All issues in IntersectMBO/mithril

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.