eBay/HomeStore

Fetch Blks rpc should always fetch the blks from consumer

Opened this issue · 1 comments

Fetch Blocks RPC when sent to existing member, responds with the data from HomeStore layer itself. The RPC sent all the neccessary information, <dsn, lsn, remote_blkid, key, header>. At present homestore uses remote_blkid (which is local_blkid for this node) and read the data from data_service and fill the data.

In case of HomeObject, this is an issue, because the blkid could have been GC'd and moved to a different block location. The GC does not go through the replication/journal. As a result, reading the blkid could corrupt the follower's data. So homestore needs to use header, key -> pass it on to the consumer and let consumer provide the latest data (just like read_blob path) and respond back to homestore.

This is needed and become a bug once we have GC.

Pushing this a bit later as GC is pushing to later milestone.