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.
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:
You can imagine a situation where a client requests
A
, and hasB
, expecting to receive CIDsA0, A1, ..., An
. IfAn-1
is a straggler, however, the provider can detect this possibility by recognizing thatAn
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.