PHOENIX-7290 Cannot load or instantiate class org.apache.phoenix.query.DefaultGuidePostsCacheFactory from SquirrelSQL
diff --git a/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index dcc82ed..400740c 100644
--- a/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -306,8 +306,6 @@
private static final int DEFAULT_OUT_OF_ORDER_MUTATIONS_WAIT_TIME_MS = 1000;
private static final String ALTER_TABLE_SET_PROPS =
"ALTER TABLE %s SET %s=%s";
- private final GuidePostsCacheProvider
- GUIDE_POSTS_CACHE_PROVIDER = new GuidePostsCacheProvider();
protected final Configuration config;
public ConnectionInfo getConnectionInfo() {
@@ -321,7 +319,7 @@
private final String userName;
private final User user;
private final ConcurrentHashMap<ImmutableBytesWritable,ConnectionQueryServices> childServices;
- private final GuidePostsCacheWrapper tableStatsCache;
+ private GuidePostsCacheWrapper tableStatsCache;
// Cache the latest meta data here for future connections
// writes guarded by "latestMetaDataLock"
@@ -470,10 +468,6 @@
}
connectionQueues = ImmutableList.copyOf(list);
- // A little bit of a smell to leak `this` here, but should not be a problem
- this.tableStatsCache = GUIDE_POSTS_CACHE_PROVIDER.getGuidePostsCache(props.get(GUIDE_POSTS_CACHE_FACTORY_CLASS,
- QueryServicesOptions.DEFAULT_GUIDE_POSTS_CACHE_FACTORY_CLASS), this, config);
-
this.isAutoUpgradeEnabled = config.getBoolean(AUTO_UPGRADE_ENABLED, QueryServicesOptions.DEFAULT_AUTO_UPGRADE_ENABLED);
this.maxConnectionsAllowed = config.getInt(QueryServices.CLIENT_CONNECTION_MAX_ALLOWED_CONNECTIONS,
QueryServicesOptions.DEFAULT_CLIENT_CONNECTION_MAX_ALLOWED_CONNECTIONS);
@@ -3561,6 +3555,11 @@
LOGGER.info("An instance of ConnectionQueryServices was created.");
openConnection();
hConnectionEstablished = true;
+ tableStatsCache =
+ (new GuidePostsCacheProvider()).getGuidePostsCache(
+ props.getProperty(GUIDE_POSTS_CACHE_FACTORY_CLASS,
+ QueryServicesOptions.DEFAULT_GUIDE_POSTS_CACHE_FACTORY_CLASS),
+ ConnectionQueryServicesImpl.this, config);
String skipSystemExistenceCheck =
props.getProperty(SKIP_SYSTEM_TABLES_EXISTENCE_CHECK);
if (skipSystemExistenceCheck != null &&
diff --git a/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java b/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
index 1885658..470a44f 100644
--- a/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
+++ b/phoenix-core-client/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
@@ -110,8 +110,6 @@
*/
public class ConnectionlessQueryServicesImpl extends DelegateQueryServices implements ConnectionQueryServices {
private static ServerName SERVER_NAME = ServerName.parseServerName(HConstants.LOCALHOST + Addressing.HOSTNAME_PORT_SEPARATOR + HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT);
- private static final GuidePostsCacheProvider
- GUIDE_POSTS_CACHE_PROVIDER = new GuidePostsCacheProvider();
private final ReadOnlyProps props;
private PMetaData metaData;
private final Map<SequenceKey, SequenceInfo> sequenceMap = Maps.newHashMap();
@@ -120,7 +118,7 @@
private volatile boolean initialized;
private volatile SQLException initializationException;
private final Map<String, List<HRegionLocation>> tableSplits = Maps.newHashMap();
- private final GuidePostsCacheWrapper guidePostsCache;
+ private GuidePostsCacheWrapper guidePostsCache;
private final Configuration config;
private User user;
@@ -153,9 +151,6 @@
// set replication required parameter
ConfigUtil.setReplicationConfigIfAbsent(this.config);
this.props = new ReadOnlyProps(this.config.iterator());
-
- this.guidePostsCache = GUIDE_POSTS_CACHE_PROVIDER.getGuidePostsCache(props.get(GUIDE_POSTS_CACHE_FACTORY_CLASS,
- QueryServicesOptions.DEFAULT_GUIDE_POSTS_CACHE_FACTORY_CLASS), null, config);
}
private PMetaData newEmptyMetaData() {
@@ -387,6 +382,11 @@
}
return;
}
+ guidePostsCache =
+ (new GuidePostsCacheProvider()).getGuidePostsCache(
+ props.getProperty(GUIDE_POSTS_CACHE_FACTORY_CLASS,
+ QueryServicesOptions.DEFAULT_GUIDE_POSTS_CACHE_FACTORY_CLASS),
+ null, config);
SQLException sqlE = null;
PhoenixConnection metaConnection = null;
try {