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.