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