Hello, everyone!
I found the CDH5 hbase client swallowed the Outofmemory exception.
It didn't throw out, cause the program couldn't make the correct response to
process the OOM.
Is't good to catch the client OOM? Why?
The CDH5 hbase client process the throwable code:
private boolean manageError(int originalIndex, Row row, boolean canRetry,
Throwable throwable, HRegionLocation location) {
if (canRetry && throwable != null && throwable instanceof
DoNotRetryIOException) {
canRetry = false;
}
byte[] region = null;
if (canRetry && callback != null) {
region = location == null ? null :
location.getRegionInfo().getEncodedNameAsBytes();
canRetry = callback.retriableFailure(originalIndex, row, region,
throwable);
}
if (!canRetry) {
if (callback != null) {
if (region == null && location != null) {
region = location.getRegionInfo().getEncodedNameAsBytes();
}
callback.failure(originalIndex, region, row, throwable);
}
errors.add(throwable, row, location);
this.hasError.set(true);
}
return canRetry;
}
This will treat the OOM as the canRetry exception.
Thanks!
Best Regards!
jingych
---------------------------------------------------------------------------------------------------
Confidentiality Notice: The information contained in this e-mail and any
accompanying attachment(s)
is intended only for the use of the intended recipient and may be confidential
and/or privileged of
Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of
this communication is
not the intended recipient, unauthorized use, forwarding, printing, storing,
disclosure or copying
is strictly prohibited, and may be unlawful.If you have received this
communication in error,please
immediately notify the sender by return e-mail, and delete the original message
and all copies from
your system. Thank you.
---------------------------------------------------------------------------------------------------