[ 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)