Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 84BFA200BB6 for ; Fri, 4 Nov 2016 17:19:58 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 836BE160AFE; Fri, 4 Nov 2016 16:19:58 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C8119160AEA for ; Fri, 4 Nov 2016 17:19:57 +0100 (CET) Received: (qmail 59319 invoked by uid 500); 4 Nov 2016 16:19:57 -0000 Mailing-List: contact commits-help@phoenix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@phoenix.apache.org Delivered-To: mailing list commits@phoenix.apache.org Received: (qmail 59310 invoked by uid 99); 4 Nov 2016 16:19:57 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Nov 2016 16:19:57 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id CA64FE04EE; Fri, 4 Nov 2016 16:19:56 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jamestaylor@apache.org To: commits@phoenix.apache.org Message-Id: <1a7c6ed49ae441299a54e99a14f4c45d@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: phoenix git commit: PHOENIX-3199 ServerCacheClient sends cache to all regions unnecessarily (chenglei) Date: Fri, 4 Nov 2016 16:19:56 +0000 (UTC) archived-at: Fri, 04 Nov 2016 16:19:58 -0000 Repository: phoenix Updated Branches: refs/heads/4.x-HBase-0.98 83ed28f4e -> 87421ede3 PHOENIX-3199 ServerCacheClient sends cache to all regions unnecessarily (chenglei) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/87421ede Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/87421ede Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/87421ede Branch: refs/heads/4.x-HBase-0.98 Commit: 87421ede3e9c22f9e567950c6a0acf735437f3a4 Parents: 83ed28f Author: James Taylor Authored: Fri Nov 4 09:15:19 2016 -0700 Committer: James Taylor Committed: Fri Nov 4 09:18:53 2016 -0700 ---------------------------------------------------------------------- .../org/apache/phoenix/cache/ServerCacheClient.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/87421ede/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 67fc410..0383251 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 @@ -37,6 +37,7 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionLocation; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.HTableInterface; @@ -81,6 +82,7 @@ import com.google.common.collect.ImmutableSet; */ public class ServerCacheClient { public static final int UUID_LENGTH = Bytes.SIZEOF_LONG; + public static final byte[] KEY_IN_FIRST_REGION = new byte[]{0}; private static final Log LOG = LogFactory.getLog(ServerCacheClient.class); private static final Random RANDOM = new Random(); private final PhoenixConnection connection; @@ -177,7 +179,7 @@ public class ServerCacheClient { // Call RPC once per server servers.add(entry); if (LOG.isDebugEnabled()) {LOG.debug(addCustomAnnotations("Adding cache entry to be sent for " + entry, connection));} - final byte[] key = entry.getRegionInfo().getStartKey(); + final byte[] key = getKeyInRegion(entry.getRegionInfo().getStartKey()); final HTableInterface htable = services.getTable(cacheUsingTableRef.getTable().getPhysicalName().getBytes()); closeables.add(htable); futures.add(executor.submit(new JobCallable() { @@ -319,7 +321,7 @@ public class ServerCacheClient { for (HRegionLocation entry : locations) { if (remainingOnServers.contains(entry)) { // Call once per server try { - byte[] key = entry.getRegionInfo().getStartKey(); + byte[] key = getKeyInRegion(entry.getRegionInfo().getStartKey()); iterateOverTable.coprocessorService(ServerCachingService.class, key, key, new Batch.Call() { @Override @@ -382,4 +384,12 @@ public class ServerCacheClient { assert(uuid.length == Bytes.SIZEOF_LONG); return Long.toString(Bytes.toLong(uuid)); } + + private static byte[] getKeyInRegion(byte[] regionStartKey) { + assert (regionStartKey != null); + if (Bytes.equals(regionStartKey, HConstants.EMPTY_START_ROW)) { + return KEY_IN_FIRST_REGION; + } + return regionStartKey; + } }