[ 
https://issues.apache.org/jira/browse/HBASE-5320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13439864#comment-13439864
 ] 

Andrew Purtell commented on HBASE-5320:
---------------------------------------

bq. realistically, a lot of code wants to interact with HBase synchronously, 
and fail fast if the cluster is down

Sure.

bq. An async API makes it more palatable for client code to be written to 
tolerate this

And also for different timeouts to be set per call, like this (Scala-ish) code 
inspired by http://mdcc.cs.berkeley.edu/ :
{code}
val r = new Request() ({
  // Ops to bundle into the request
}).timeout(300)  // 300 ms timeout
.onFailure {
  // Error handling for local failure or timeout (or unreachability)
}.onAccept {
  // Request succeeded
}).finally( (success, timeout) => {
  if (success) // Request succeeded
  else // Request failed (and timeout is true if timed out)
})
val status = r.Execute()
{code}
                
> Create client API to handle HBase maintenance gracefully
> --------------------------------------------------------
>
>                 Key: HBASE-5320
>                 URL: https://issues.apache.org/jira/browse/HBASE-5320
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Mikhail Bautin
>            Assignee: Mikhail Bautin
>            Priority: Minor
>
> When we do HBase cluster maintenance, we typically have to manually stop or 
> disable the client temporarily. It would be nice to have a way for the client 
> to find out that HBase in undergoing maintenance through an appropriate API 
> and gracefully handle it on its own.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to