[
https://issues.apache.org/jira/browse/PHOENIX-2188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14707920#comment-14707920
]
James Taylor commented on PHOENIX-2188:
---------------------------------------
For the RpcControllerFactory config setting, we should add a unit test (so we
know if/when HBase has a default for this). Not sure what the best way is to
make this less brittle.
> Overriding hbase.client.scanner.caching doesn't work
> ----------------------------------------------------
>
> Key: PHOENIX-2188
> URL: https://issues.apache.org/jira/browse/PHOENIX-2188
> Project: Phoenix
> Issue Type: Bug
> Reporter: Samarth Jain
>
> Below is the test I wrote which demonstrates that the phoenix's override of
> 1000 for the scanner cache size is not being used:
> {code}
> @Test
> public void testScannerCacheSize() throws Exception {
> Connection connection =
> DriverManager.getConnection("jdbc:phoenix:localhost:2181");
> PhoenixConnection phxConn =
> connection.unwrap(PhoenixConnection.class);
> // check config value in query services
>
> System.out.println(PhoenixDriver.INSTANCE.getQueryServices().getProps().get(QueryServices.SCAN_CACHE_SIZE_ATTRIB));
>
> Statement stmt = phxConn.createStatement();
> PhoenixStatement phxStmt = stmt.unwrap(PhoenixStatement.class);
> // double check the config size by looking at statement fetch size
> System.out.println(phxStmt.getFetchSize());
>
> }
> {code}
> The offending code snippet is:
> {code}
> QueryServices.withDefaults() {
> Configuration config =
> HBaseFactoryProvider.getConfigurationFactory().getConfiguration();
> QueryServicesOptions options = new QueryServicesOptions(config)
> .setIfUnset(STATS_USE_CURRENT_TIME_ATTRIB,
> DEFAULT_STATS_USE_CURRENT_TIME)
> ..........................
> .setIfUnset(SCAN_CACHE_SIZE_ATTRIB, DEFAULT_SCAN_CACHE_SIZE)
> {code}
> The configuration returned by
> HBaseFactoryProvider.getConfigurationFactory().getConfiguration() has the
> hbase.client.scanner.caching set to 100. So the override doesn't take place
> because we are using setIfUnset.
>
> Another override that I see that potentially won't work in future if HBase
> provides its own default is the RpcControllerFactory -
> hbase.rpc.controllerfactory.class because of
> {code}
> setIfUnset(RpcControllerFactory.CUSTOM_CONTROLLER_CONF_KEY,
> DEFAULT_CLIENT_RPC_CONTROLLER_FACTORY)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)