You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2016/11/04 22:14:08 UTC
[41/50] [abbrv] phoenix git commit: PHOENIX-3199 ServerCacheClient
sends cache to all regions unnecessarily (chenglei)
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/encodecolumns2
Commit: 87421ede3e9c22f9e567950c6a0acf735437f3a4
Parents: 83ed28f
Author: James Taylor <ja...@apache.org>
Authored: Fri Nov 4 09:15:19 2016 -0700
Committer: James Taylor <ja...@apache.org>
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<Boolean>() {
@@ -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<ServerCachingService, RemoveServerCacheResponse>() {
@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;
+ }
}