fission-codes / spec

Creative Commons Zero v1.0 Universal
11 stars 1 forks source link

car-pool: Tunable straggler detection #14

Open QuinnWilton opened 2 years ago

QuinnWilton commented 2 years ago

This came up during an internal reactor call as a possible idea to explore once we have a query language for use as part of car-pool.

Currently, stragglers may result from false positives in the bloom filters, since we terminate graph traversal once a CID is matched by the requestor's bloom filter. However, there may be opportunity for detecting these false positives by taking advantage of the structure of the DAG. For example, imagine this DAG:

A0
|
A1
|
...
|
An-1
|
An
|
B

You can imagine a situation where a client requests A, and has B, expecting to receive CIDs A0, A1, ..., An. If An-1 is a straggler, however, the provider can detect this possibility by recognizing that An is not in the bloom filter.

Intuitively, this seems possible to me because the CIDs themselves are uniformly distributed, but the probability of having a given block is correlated with the probability of having the blocks underneath it, i.e. if it's known that some block is missing, then it's likely that any blocks referencing that block are also missing.

expede commented 1 year ago

That a great idea @QuinnWilton! Let's add this after the first version is out :)