HBASE-4890 fix possible NPE in HConnectionManager
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1298272 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
edc6696bc5
commit
0f7285a81a
@ -676,7 +676,17 @@ public class HBaseClient {
|
|||||||
Call c = itor.next().getValue();
|
Call c = itor.next().getValue();
|
||||||
long waitTime = System.currentTimeMillis() - c.getStartTime();
|
long waitTime = System.currentTimeMillis() - c.getStartTime();
|
||||||
if (waitTime >= rpcTimeout) {
|
if (waitTime >= rpcTimeout) {
|
||||||
c.setException(closeException); // local exception
|
if (this.closeException == null) {
|
||||||
|
// There may be no exception in the case that there are many calls
|
||||||
|
// being multiplexed over this connection and these are succeeding
|
||||||
|
// fine while this Call object is taking a long time to finish
|
||||||
|
// over on the server; e.g. I just asked the regionserver to bulk
|
||||||
|
// open 3k regions or its a big fat multiput into a heavily-loaded
|
||||||
|
// server (Perhaps this only happens at the extremes?)
|
||||||
|
this.closeException = new CallTimeoutException("Call id=" + c.id +
|
||||||
|
", waitTime=" + waitTime + ", rpcTimetout=" + rpcTimeout);
|
||||||
|
}
|
||||||
|
c.setException(this.closeException);
|
||||||
synchronized (c) {
|
synchronized (c) {
|
||||||
c.notifyAll();
|
c.notifyAll();
|
||||||
}
|
}
|
||||||
@ -705,6 +715,15 @@ public class HBaseClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Client-side call timeout
|
||||||
|
*/
|
||||||
|
public static class CallTimeoutException extends IOException {
|
||||||
|
public CallTimeoutException(final String msg) {
|
||||||
|
super(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Call implementation used for parallel calls. */
|
/** Call implementation used for parallel calls. */
|
||||||
protected class ParallelCall extends Call {
|
protected class ParallelCall extends Call {
|
||||||
private final ParallelResults results;
|
private final ParallelResults results;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user