I know that sharding is currently not accessible, and according to issue#5133, issue#5142, the main reason goes to poor support for partial pin. However, I can’t completely get why partial pin is a must for sharding.
So far as I know, in single mode (not sharding),
Finalize() will trigger peers in
dests to pin DAG root node, and I suppose it’s recursive pinning here which can pin this whole DAG all the way down perfectly. While in sharding mode, every shard can
Flush() to pin a cbor-wrapped map (recording cid of block belonging to this shard) node, and this whole dgs can
Finalize() to pin a cbor-wrapped map (recording all shard’s cids) node.
Here’re my questions:
if the cbor-wrapped map is also pinned recursively, why would it influence sharding? Is that because some child of this node is an internal node of origin data DAG, and recursive pinning here needs to pin blocks not belonging to this shard?
Or doe it have something to do with the depth of shard DAG, and would recursive pin still be a problem if all those maps (
dgs.shards) don’t exceed the MaxLink() limits, i.e. always trigger makeDAGSimple() to wrap?
Thanks for your patience, hope to hear from you guys soon.