PHOENIX-4903 Use same hash cache RPC message across all calls Signed-off-by: Josh Elser <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/d8a78e19 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/d8a78e19 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/d8a78e19 Branch: refs/heads/omid2 Commit: d8a78e19d9c1984d5ae3d8bdfe55fcec5a9b983f Parents: 4d8c5d4 Author: Marcell Ortutay <[email protected]> Authored: Sat Sep 15 21:13:54 2018 -0700 Committer: Josh Elser <[email protected]> Committed: Tue Sep 18 14:30:10 2018 -0400 ---------------------------------------------------------------------- .../apache/phoenix/cache/ServerCacheClient.java | 61 ++++++++++---------- 1 file changed, 32 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/d8a78e19/phoenix-core/src/main/java/org/apache/phoenix/cache/ServerCacheClient.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/cache/ServerCacheClient.java b/phoenix-core/src/main/java/org/apache/phoenix/cache/ServerCacheClient.java index 011a6f8..93d16f5 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/cache/ServerCacheClient.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/cache/ServerCacheClient.java @@ -486,6 +486,37 @@ public class ServerCacheClient { throws Exception { byte[] keyInRegion = getKeyInRegion(key); final Map<byte[], AddServerCacheResponse> results; + + AddServerCacheRequest.Builder builder = AddServerCacheRequest.newBuilder(); + final byte[] tenantIdBytes; + if (cacheUsingTable.isMultiTenant()) { + try { + tenantIdBytes = connection.getTenantId() == null ? null + : ScanUtil.getTenantIdBytes(cacheUsingTable.getRowKeySchema(), + cacheUsingTable.getBucketNum() != null, connection.getTenantId(), + cacheUsingTable.getViewIndexId() != null); + } catch (SQLException e) { + throw new IOException(e); + } + } else { + tenantIdBytes = connection.getTenantId() == null ? null + : connection.getTenantId().getBytes(); + } + if (tenantIdBytes != null) { + builder.setTenantId(ByteStringer.wrap(tenantIdBytes)); + } + builder.setCacheId(ByteStringer.wrap(cacheId)); + builder.setUsePersistentCache(usePersistentCache); + builder.setCachePtr(org.apache.phoenix.protobuf.ProtobufUtil.toProto(cachePtr)); + builder.setHasProtoBufIndexMaintainer(true); + ServerCacheFactoryProtos.ServerCacheFactory.Builder svrCacheFactoryBuider = ServerCacheFactoryProtos.ServerCacheFactory + .newBuilder(); + svrCacheFactoryBuider.setClassName(cacheFactory.getClass().getName()); + builder.setCacheFactory(svrCacheFactoryBuider.build()); + builder.setTxState(ByteStringer.wrap(txState)); + builder.setClientVersion(MetaDataProtocol.PHOENIX_VERSION); + final AddServerCacheRequest request = builder.build(); + try { results = htable.coprocessorService(ServerCachingService.class, keyInRegion, keyInRegion, new Batch.Call<ServerCachingService, AddServerCacheResponse>() { @@ -493,35 +524,7 @@ public class ServerCacheClient { public AddServerCacheResponse call(ServerCachingService instance) throws IOException { ServerRpcController controller = new ServerRpcController(); BlockingRpcCallback<AddServerCacheResponse> rpcCallback = new BlockingRpcCallback<AddServerCacheResponse>(); - AddServerCacheRequest.Builder builder = AddServerCacheRequest.newBuilder(); - final byte[] tenantIdBytes; - if (cacheUsingTable.isMultiTenant()) { - try { - tenantIdBytes = connection.getTenantId() == null ? null - : ScanUtil.getTenantIdBytes(cacheUsingTable.getRowKeySchema(), - cacheUsingTable.getBucketNum() != null, connection.getTenantId(), - cacheUsingTable.getViewIndexId() != null); - } catch (SQLException e) { - throw new IOException(e); - } - } else { - tenantIdBytes = connection.getTenantId() == null ? null - : connection.getTenantId().getBytes(); - } - if (tenantIdBytes != null) { - builder.setTenantId(ByteStringer.wrap(tenantIdBytes)); - } - builder.setCacheId(ByteStringer.wrap(cacheId)); - builder.setUsePersistentCache(usePersistentCache); - builder.setCachePtr(org.apache.phoenix.protobuf.ProtobufUtil.toProto(cachePtr)); - builder.setHasProtoBufIndexMaintainer(true); - ServerCacheFactoryProtos.ServerCacheFactory.Builder svrCacheFactoryBuider = ServerCacheFactoryProtos.ServerCacheFactory - .newBuilder(); - svrCacheFactoryBuider.setClassName(cacheFactory.getClass().getName()); - builder.setCacheFactory(svrCacheFactoryBuider.build()); - builder.setTxState(ByteStringer.wrap(txState)); - builder.setClientVersion(MetaDataProtocol.PHOENIX_VERSION); - instance.addServerCache(controller, builder.build(), rpcCallback); + instance.addServerCache(controller, request, rpcCallback); if (controller.getFailedOn() != null) { throw controller.getFailedOn(); } return rpcCallback.get(); }
