You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sh...@apache.org on 2023/12/13 17:12:10 UTC
(phoenix) branch PHOENIX-6883-feature updated: PHOENIX-7113 Create a feature flag for invoking MDEI#invalidateServerMetadataCache (#1753)
This is an automated email from the ASF dual-hosted git repository.
shahrs87 pushed a commit to branch PHOENIX-6883-feature
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/PHOENIX-6883-feature by this push:
new e5efffb4ed PHOENIX-7113 Create a feature flag for invoking MDEI#invalidateServerMetadataCache (#1753)
e5efffb4ed is described below
commit e5efffb4ed16f256d8c27552936a1725672c5fae
Author: Rushabh Shah <sh...@apache.org>
AuthorDate: Wed Dec 13 09:12:04 2023 -0800
PHOENIX-7113 Create a feature flag for invoking MDEI#invalidateServerMetadataCache (#1753)
---
.../apache/phoenix/end2end/InvalidateMetadataCacheIT.java | 2 ++
.../apache/phoenix/coprocessor/MetaDataEndpointImpl.java | 14 +++++++-------
.../org/apache/phoenix/cache/ServerMetadataCacheTest.java | 2 ++
.../src/test/java/org/apache/phoenix/query/BaseTest.java | 7 ++-----
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InvalidateMetadataCacheIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InvalidateMetadataCacheIT.java
index f399610a2e..c0727b9d68 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InvalidateMetadataCacheIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InvalidateMetadataCacheIT.java
@@ -35,6 +35,7 @@ import java.util.Properties;
import static org.apache.hadoop.hbase.coprocessor.CoprocessorHost.REGIONSERVER_COPROCESSOR_CONF_KEY;
import static org.apache.phoenix.coprocessor.MetaDataEndpointImpl.PHOENIX_METADATA_CACHE_INVALIDATION_TIMEOUT_MS;
+import static org.apache.phoenix.coprocessor.MetaDataEndpointImpl.PHOENIX_METADATA_INVALIDATE_CACHE_ENABLED;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.fail;
@@ -48,6 +49,7 @@ public class InvalidateMetadataCacheIT extends BaseTest {
Map<String, String> props = Maps.newHashMapWithExpectedSize(1);
// to fail fast in case of exception.
props.put("hbase.client.retries.number", String.valueOf(0));
+ props.put(PHOENIX_METADATA_INVALIDATE_CACHE_ENABLED, "true");
props.put(REGIONSERVER_COPROCESSOR_CONF_KEY,
FailingPhoenixRegionServerEndpoint.class.getName());
// Setting phoenix metadata cache invalidation timeout to a small number to fail fast.
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
index d905f6ad5b..c9aa4acb73 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
@@ -18,7 +18,6 @@
package org.apache.phoenix.coprocessor;
import static org.apache.hadoop.hbase.KeyValueUtil.createFirstOnRow;
-import static org.apache.hadoop.hbase.coprocessor.CoprocessorHost.REGIONSERVER_COPROCESSOR_CONF_KEY;
import static org.apache.phoenix.coprocessor.generated.MetaDataProtos.MutationCode.UNABLE_TO_CREATE_CHILD_LINK;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.APPEND_ONLY_SCHEMA_BYTES;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.ARRAY_SIZE_BYTES;
@@ -333,6 +332,8 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements RegionCopr
"phoenix.metadata.cache.invalidation.timeoutMs";
// Default to 10 seconds.
public static final long PHOENIX_METADATA_CACHE_INVALIDATION_TIMEOUT_MS_DEFAULT = 10 * 1000;
+ public static final String PHOENIX_METADATA_INVALIDATE_CACHE_ENABLED =
+ "phoenix.metadata.invalidate.cache.enabled";
// KeyValues for Table
private static final Cell TABLE_TYPE_KV = createFirstOnRow(ByteUtil.EMPTY_BYTE_ARRAY,
TABLE_FAMILY_BYTES, TABLE_TYPE_BYTES);
@@ -3490,12 +3491,11 @@ TABLE_FAMILY_BYTES, TABLE_SEQ_NUM_BYTES);
private void invalidateServerMetadataCache(List<InvalidateServerMetadataCacheRequest> requests)
throws Throwable {
Configuration conf = env.getConfiguration();
- String value = conf.get(REGIONSERVER_COPROCESSOR_CONF_KEY);
- if (value == null
- || !value.contains(PhoenixRegionServerEndpoint.class.getName())) {
- // PhoenixRegionServerEndpoint is not loaded. We don't have to invalidate the cache.
- LOGGER.info("Skip invalidating server metadata cache since PhoenixRegionServerEndpoint"
- + " is not loaded");
+ boolean invalidateCacheEnabled = conf.getBoolean(PHOENIX_METADATA_INVALIDATE_CACHE_ENABLED,
+ false);
+ if (!invalidateCacheEnabled) {
+ LOGGER.info("Skip invalidating server metadata cache since conf property"
+ + " phoenix.metadata.invalidate.cache.enabled is set to false");
return;
}
metricsMetadataCachingSource.incrementMetadataCacheInvalidationOperationsCount();
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/cache/ServerMetadataCacheTest.java b/phoenix-core/src/test/java/org/apache/phoenix/cache/ServerMetadataCacheTest.java
index a210e40579..3ba83ff2ee 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/cache/ServerMetadataCacheTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/cache/ServerMetadataCacheTest.java
@@ -58,6 +58,7 @@ import java.util.Map;
import java.util.Properties;
import java.util.Random;
+import static org.apache.phoenix.coprocessor.MetaDataEndpointImpl.PHOENIX_METADATA_INVALIDATE_CACHE_ENABLED;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -80,6 +81,7 @@ public class ServerMetadataCacheTest extends ParallelStatsDisabledIT {
public static synchronized void doSetup() throws Exception {
Map<String, String> props = Maps.newHashMapWithExpectedSize(1);
props.put(QueryServices.LAST_DDL_TIMESTAMP_VALIDATION_ENABLED, Boolean.toString(true));
+ props.put(PHOENIX_METADATA_INVALIDATE_CACHE_ENABLED, Boolean.toString(true));
props.put(QueryServices.TASK_HANDLING_INTERVAL_MS_ATTRIB,
Long.toString(Long.MAX_VALUE));
props.put(QueryServices.TASK_HANDLING_INITIAL_DELAY_MS_ATTRIB,
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index bbee8a8a5d..5389a2c613 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -650,16 +650,13 @@ public abstract class BaseTest {
}
/*
- Set property hbase.coprocessor.regionserver.classes to include PhoenixRegionServerEndpoint
- by default. If some other regionserver coprocs are already present then append
- PhoenixRegionServerEndpoint to the existing coprocs.
+ Set property hbase.coprocessor.regionserver.classes to include PhoenixRegionServerEndpoint
+ by default, if some other regionserver coprocs are not already present.
*/
private static void setPhoenixRegionServerEndpoint(Configuration conf) {
String value = conf.get(REGIONSERVER_COPROCESSOR_CONF_KEY);
if (value == null) {
value = PhoenixRegionServerEndpoint.class.getName();
- } else {
- value = String.join(",", value, PhoenixRegionServerEndpoint.class.getName());
}
conf.set(REGIONSERVER_COPROCESSOR_CONF_KEY, value);
}