Add envelope around client<->server communication so can pass state along w/ 
data during interchange
----------------------------------------------------------------------------------------------------

                 Key: HBASE-2408
                 URL: https://issues.apache.org/jira/browse/HBASE-2408
             Project: Hadoop HBase
          Issue Type: Improvement
            Reporter: stack


This issue is about adding a dimension along which we can pass metadata on 
changes in client-server communications.  What i mean by this is that that 
while an HTable#get will return a RowResult, we need to also be able to also 
convey, messages like "I got the result for this row from a region other than 
the one you asked for -- update your cache with this new location".

I can think of two examples where this mechanism could be useful.

1. HBASE-72 "'Normal' operation should not depend on throwing of exceptions 
(e.g. NotServingRegionException)".  Rather than have the server throw a 
NotServingRegionException as we do now as signal to client to go look elsewhere 
for the wanted data, we could instead signal the client to look elsewhere by 
setting a state in the envelope.
2. If a client asks for a row and meantime the region has split, if the 
regionserver queried is hosting the daughter that is carrying the wanted row, 
it could save the client hops by passing back the wanted row with a message in 
the envelope that client should update its cache removing parent and replacing 
with daughter location.

AVRO rpc carries headers?  We could stuff our enveloping stuff there?  Or, 
shudder, if we used AVRO HTTP for RPC, we could do our messages as HTTP headers.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to