[
https://issues.apache.org/jira/browse/PHOENIX-3938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16049660#comment-16049660
]
James Taylor commented on PHOENIX-3938:
---------------------------------------
One example that I believe is problematic is ServerCachingEndpointImpl, where
we're wrapping in an IOException. I think this would trigger, a retry from the
client (but I'm not 100% sure). I think we should instead use
DoNotRetryIOException here:
{code}
@Override
public void addServerCache(RpcController controller, AddServerCacheRequest
request,
RpcCallback<AddServerCacheResponse> done) {
ImmutableBytesPtr tenantId = null;
if (request.hasTenantId()) {
tenantId = new ImmutableBytesPtr(request.getTenantId().toByteArray());
}
TenantCache tenantCache = GlobalCache.getTenantCache(this.env, tenantId);
ImmutableBytesWritable cachePtr =
org.apache.phoenix.protobuf.ProtobufUtil
.toImmutableBytesWritable(request.getCachePtr());
byte[] txState = request.hasTxState() ? request.getTxState().toByteArray()
: ByteUtil.EMPTY_BYTE_ARRAY;
try {
@SuppressWarnings("unchecked")
Class<ServerCacheFactory> serverCacheFactoryClass =
(Class<ServerCacheFactory>)
Class.forName(request.getCacheFactory().getClassName());
ServerCacheFactory cacheFactory = serverCacheFactoryClass.newInstance();
tenantCache.addServerCache(new
ImmutableBytesPtr(request.getCacheId().toByteArray()),
cachePtr, txState, cacheFactory,
request.hasHasProtoBufIndexMaintainer() &&
request.getHasProtoBufIndexMaintainer());
} catch (Throwable e) {
ProtobufUtil.setControllerException(controller, new IOException(e));
}
AddServerCacheResponse.Builder responseBuilder =
AddServerCacheResponse.newBuilder();
responseBuilder.setReturn(true);
AddServerCacheResponse result = responseBuilder.build();
done.run(result);
}
{code}
> Don't throw IOException out of coprocessor hooks
> ------------------------------------------------
>
> Key: PHOENIX-3938
> URL: https://issues.apache.org/jira/browse/PHOENIX-3938
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: Samarth Jain
>
> We shouldn't wrap and throw exceptions as an IOException from coprocessor
> hooks since that'll trigger the retry logic which just delays throwing the
> exception back to the client. Instead, we should wrap in a
> DoNotRetryIOException.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)