Feature #13994
Updated by Peter Amstutz over 6 years ago
Implement the ability to proxy requests for blocks from remote clusters in keepstore.
h3. Fetching block, no caching
# client wishes to read a file
# client has provides block locator with "remote" signature (see #13993)
# client sends request to keepstore server in regular rendezvous hashing order
# keepstore notice it is a remote signature, and converts it to a "regular" signature
# keepstore contacts keepproxy on remote cluster and requests block
# keepproxy on remote cluster returns block content to keepstore
# keepstore returns block content to client
h3. Fetching block, with caching:
# client wishes to read a file
# client has provides block locator with "remote" signature (see #13993)
# client sends request to keepstore server in regular rendezvous hashing order
# keepstore service looks up (cluster, block) in table mapping (cluster, block, signature)
## if found, check if the remote signature is cached
## if remote signature isn't cached, send HEAD request to ccccc to validate signature
## if the signature is valid, try to fetch the block from local volume
## if the signature is not valid, fail (because HEAD request must have failed)
# block is not found, keepstore contacts keepproxy on remote cluster and requests block
# block is spooled into local volume storage and mapping is added for (cluster, block, signature)
# keepproxy on remote cluster returns block content to keepstore
# keepstore returns block content to client, also return valid local signature in header