[
https://issues.apache.org/jira/browse/PHOENIX-3113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15392873#comment-15392873
]
James Taylor commented on PHOENIX-3113:
---------------------------------------
The part missing from the patch (and leading to the failures) is the third item
I mentioned above:
- Override the default to true in QueryServicesTestImpl
For this, make the following changes in
QueryServicesTestImpl.getDefaultServicesOptions():
{code}
// In test environment, we want to turn on our automatic async index builder
public static final boolean DEFAULT_ASYNC_INDEX_AUTO_BUILD = true;
...
private static QueryServicesOptions getDefaultServicesOptions() {
return withDefaults()
.setAsyncIndexAutoBuild(DEFAULT_ASYNC_INDEX_AUTO_BUILD)
...
}
{code}
and then in QueryServicesOptions, add the setter method we're calling above:
{code}
public QueryServicesOptions setAsyncIndexAutoBuild(boolean flag) {
config.setBoolean(ASYNC_INDEX_AUTO_BUILD_ATTRIB, flag);
return this;
}
{code}
Also, in AsyncImmutableIndexIT and AsyncIndexIT, derive them from
BaseHBaseManagedTimeIT, remove the setup and tearDown code and all DROP
commands - tests do not need to explicitly drop tables. Just keep a test that
validates that an ASYNC index is populated as expected. There should be no
special setup required.
> Automatic build of async index will happen even if mapreduce.framework.name
> is not set in any configuration
> -----------------------------------------------------------------------------------------------------------
>
> Key: PHOENIX-3113
> URL: https://issues.apache.org/jira/browse/PHOENIX-3113
> Project: Phoenix
> Issue Type: Bug
> Reporter: Ankit Singhal
> Assignee: Loknath Priyatham Teja Singamsetty
> Priority: Blocker
> Fix For: 4.8.0
>
> Attachments: phoenix-3113.patch
>
>
> As per below code, we are starting automatic build of async index even if
> mapreduce.framework.name is not set in any of the configuration(because
> conf.get(QueryServices.MAPRED_FRAMEWORK_NAME) will always return LOCAL as a
> default value).
> This may cause problem in the hbase cluster where mapreduce is not deployed
> or this configuration is not set or included in the classpath.
> {code}
> String hbaseClusterDistributedMode =
> conf.get(QueryServices.HBASE_CLUSTER_DISTRIBUTED_ATTRIB);
> String mapredFrameworkName =
> conf.get(QueryServices.MAPRED_FRAMEWORK_NAME);
> if ((hbaseClusterDistributedMode != null &&
> !hbaseClusterDistributedMode.equals(HBASE_CLUSTER_DISTRIBUTED_CONFIG)) ||
> (mapredFrameworkName != null &&
> !mapredFrameworkName.equals(MAPRED_FRAMEWORK_YARN_CONFIG)))
> {
> LOG.info("Enabling Async Index rebuilder");
> AsyncIndexRebuilderTask asyncIndexRebuilderTask = new
> AsyncIndexRebuilderTask(e.getEnvironment());
> // run async index rebuilder task every 10 secs to rebuild any
> newly created async indexes
> executor.scheduleAtFixedRate(asyncIndexRebuilderTask, 10000,
> rebuildIndexTimeInterval, TimeUnit.MILLISECONDS);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)