In a distributed environment containing two JBoss application servers, users will notice the following error upon starting the second application server:
12:38:22,974 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/suite]] (ServerService Thread Pool -- 89) JBWEB000287: Exception sending context initialized event to listener instance of class com.appiancorp.common.config.ConfigurationLoader: com.appiancorp.common.config.FatalConfigurationException: com.appiancorp.suiteapi.common.exceptions.AppianException: An unexpected error occurred while trying to initialize and validate the Appian data source. (APNX-1-4179-004) ... Caused by: java.lang.IllegalStateException: [jdbc/AppianPrimaryDS] Could not initialize search engine. ... Caused by: java.lang.IllegalStateException: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@<BASEPATH_HOME>/_admin/search-local/index-primary/com.appiancorp.tempo.rdbms.EventFeedEntry/write.lock ... Caused by: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@<BASEPATH_HOME>/_admin/search-local/index-primary/com.appiancorp.tempo.rdbms.EventFeedEntry/write.lock ...
The second application server started will always fail to deploy.
The following are possible causes to this issue:
conf.data.primary.datasource.search.index
conf.data.APPIAN_DATA_SOURCE.search.index
<APPIAN_HOME>/_admin
If the conf.data.APPIAN_DATA_SOURCE.search.index (conf.data.primary.datasource.search.index) property is not defined or is using the wrong property name, then Appian will use <BASE_PATH>/search-local/index-primaryas the value of that property. For the purposes of this KB article, <BASE_PATH> denotes the directory defined in the property conf.suite.BASE_PATH in custom.properties.
<BASE_PATH>/search-local/index-primary
<BASE_PATH>
conf.suite.BASE_PATH
If no value is set for conf.suite.BASE_PATH and conf.data.APPIAN_DATA_SOURCE.search.index(conf.data.primary.datasource.search.index) is not defined correctly (or defined at all), Appian will use <APPIAN_HOME>/_admin/search-local/index-primary on that particular machine as the value of conf.data.APPIAN_DATA_SOURCE.search.index (conf.data.primary.datasource.search.index).
<APPIAN_HOME>/_admin/search-local/index-primary
An example of how each custom.properties file should be defined:
conf.data.APPIAN_DATA_SOURCE.search.index=/path/to/search-local-1/index-primary
conf.data.APPIAN_DATA_SOURCE.search.index=/path/to/search-local-2/index-primary
If the above steps don't work, perform the following:
<APPIAN_HOME>/_admin/search-local/index-primary/com.appiancorp.tempo.rdbms.EventFeedEntry
This article applies to all versions of Appian.
Last Reviewed: March 2017