The goal of retrieval bot is to offer a scalable framework to perform retrieval testing over Filecoin network.
There is no centralized orchestrator to manage retrieval queue or work. Instead, it uses MongoDB to manage work queue as well as saving retrieval results.
Workers refer to the unit that consumes the worker queue. There are 4 basic types of workers as of now.
This type of worker does nothing but saves random result to the database. It is used to test the database connection and the queue.
This worker currently only support retrieving a single block from the storage provider:
- Lookup the provider's libp2p protocols
- If it is using boost market, then lookup the supported retrieval protocols
- Find the bitswap protocol info and make a single block retrieval
This worker currently only support retrieving the root block from the storage provider:
- Make graphsync retrieval with selector that only matches root block from the storage provider
This worker currently only support retrieving the first few MiB of the pieces from the storage provider:
- Lookup the provider's libp2p protocols
- If it is using boost market, then lookup the supported retrieval protocols
- Find the HTTP protocol info and make the retrieval for up to first few MiB
Integrations refer to the unit that either pushes work item to the retrieval queue, or other long-running jobs that may interact with the database in different ways
This integration periodically pulls the statemarketdeals.json from GLIP API and saves it to the database.
This integration pulls random active deals from StateMarketDeals database and push Bitswap/Graphsync/HTTP retrieval workitems into the work queue.
This integration push a single workitem into the queue with command line arguments, i.e.
./oneoff_integration http f0xxxx baxxxx
- Setup a mongodb server
- Setup a free ipinfo account and grab a token
make build
- Run the software natively or via a docker with environment variables. You need to run three programs:
statemarketdeals
that pulls statemarketdeals.json from GLIP API and saves it to the database. Check .env.statemarketdeals for environment variables.filplus_integration
that queues retrieval tasks into a task queue. Check .env.filplus for environment variables.retrieval_worker
that consumes the task queue and performs the retrieval. Check .env.retrievalworker for environment variables.
- All programs above will load
.env
file in the working directory so you will need to copy the relevant environment variable file to.env
- When running
retrieval_worker
, you need to make surebitswap_worker
,graphsync_worker
,http_worker
are in the working directory as well.