I am using HBase 1.1.0 and create HBase client connections like this:
try {
Configuration config = HBaseConfiguration.create();
connection = ConnectionFactory.createConnection(config);
}
catch (IOException e) {
logger.info("Error {}", e);
}
However, I noticed that when ZooKeeper and HBase Master/Region servers are
down, the catch clause is never reached. The code runs as if the connection
is made, and connection.isClosed() returns false. So:
- What happens when I use this connection? Are the RPC calls buffered and
retried at some interval in background?
- How can I tell whether the connection is actually ready for use? Should I
try to do this, or just use it? My inclination is not to run a client
service without the underlying datastores all actually ready, but perhaps
this is not the idea with the new HBase API.
- Under what conditions is the IOException catch actually reached?
My goal is to be able to fail fast. Is that the wrong idea with this client?
Thanks,
Dmitry