Hi everyone,
I already searched quite a lot for a solution for this problem.
In my Jira8 app, when issue page is loaded, I am checking if my app should appear with searchProvider:
import com.atlassian.jira.issue.search.SearchQuery;
import com.atlassian.jira.issue.search.SearchProvider;
....
SearchQuery searchQuery = SearchQuery.create(query, user);
searchQuery.overrideSecurity(true);
return searchProvider.getHitCount(searchQuery);
Problem is that in runtime, this is throwing an exception:
java.lang.IllegalStateException: Incorrect usage of JIRA/lucene search API. You can only create/use: ManagedIndexSearcher inside a context (request or Jira-Thread-Local). Check: JiraThreadLocalUtils for details.
at com.atlassian.jira.index.ManagedIndexSearcherFactory.createFrom(ManagedIndexSearcherFactory.java:15)
at com.atlassian.jira.issue.index.ThreadLocalSearcherCache$Cache.retrieveEntitySearcher(ThreadLocalSearcherCache.java:116)
at com.atlassian.jira.issue.index.ThreadLocalSearcherCache.getSearcher(ThreadLocalSearcherCache.java:39)
at com.atlassian.jira.issue.index.DefaultIndexManager.getEntitySearcher(DefaultIndexManager.java:889)
at com.atlassian.jira.issue.index.DefaultIndexManager.getIssueSearcher(DefaultIndexManager.java:866)
... 2 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.jira.config.component.SwitchingInvocationHandler.invoke(SwitchingInvocationHandler.java:38)
at com.sun.proxy.$Proxy166.getIssueSearcher(Unknown Source)
at com.atlassian.jira.issue.search.SearchProviderFactoryImpl.getSearcher(SearchProviderFactoryImpl.java:17)
at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.getIssueSearcher(LuceneSearchProvider.java:129)
at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.getHitCount(LuceneSearchProvider.java:144)
... 2 filtered
I tried using jiraThreadLocalUtil
jiraThreadLocalUtil.preCall();
try {
SearchQuery searchQuery = SearchQuery.create(query, user);
searchQuery.overrideSecurity(true);
return searchProvider.getHitCount(searchQuery);
} finally {
jiraThreadLocalUtil.postCall(LOG, () -> LOG.error("The task 'getHitCount' has open transaction."))
}
but since my method is executing in issue view in a parallel thread, this is stoping / breaking other Jira modules in runtime (attachment, activity history,…) provoking a js console full of exceptions.
Can anyone help me with this?
Thank you