Details
-
Bug
-
Resolution: Timed out
-
Low
-
None
-
7.2.6
-
7.02
-
7
-
Severity 3 - Minor
-
1
-
Description
Summary
If favourite filter is shared with a user that by some case have different user_key and lower_user_name in app_user SQL table, after opening the filter, the Failed to retrieve favorite filters from server is displayed and JQL search menu is missing from the page.
Steps to Reproduce
- Create a filter
- Shared it with some person (eg. with user "testuser")
- Change lower_user_name in database for this user:
UPDATE app_user SET lower_user_name = 'testuser1' WHERE user_key = 'testuser';
and restart JIRA
- Try open this shared filter
Expected Results
Filter is opened without any errors and JQL query is shown.
Actual Results
The following is logged while trying to open the filter:
[c.a.j.rest.exception.ExceptionInterceptor] Returning internal server error in response java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:192) ... 4 filtered at com.atlassian.jira.rest.exception.ExceptionInterceptor.intercept(ExceptionInterceptor.java:55) ... 1 filtered at com.atlassian.jira.rest.v2.issue.scope.RequestScopeInterceptor.intercept(RequestScopeInterceptor.java:39) ... 15 filtered at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:154) ... 1 filtered at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:68) ... 36 filtered at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) ... 53 filtered at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:76) ... 1 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:74) ... 16 filtered at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37) ... 20 filtered at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30) ... 10 filtered at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) ... 4 filtered at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36) ... 29 filtered at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25) ... 27 filtered at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: User 'testuser' has no unique key mapping. at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149) at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112) at com.atlassian.jira.rest.v2.search.UserListResolver.getShareUsers(UserListResolver.java:114) at com.atlassian.jira.rest.v2.search.UserListResolver.getShareCount(UserListResolver.java:128) at com.atlassian.jira.rest.v2.search.UserBeanListWrapper.<init>(UserBeanListWrapper.java:31) at com.atlassian.jira.rest.v2.search.FilterResource$SearchRequestToFilterBean.apply(FilterResource.java:682) at com.atlassian.jira.rest.v2.search.FilterResource.getFilter(FilterResource.java:159) ... 238 more Caused by: java.lang.IllegalStateException: User 'testuser' has no unique key mapping. at com.atlassian.jira.user.ApplicationUsers.from(ApplicationUsers.java:46) at com.atlassian.jira.user.ApplicationUsers.from(ApplicationUsers.java:120) at com.atlassian.jira.security.groups.DefaultGroupManager.getUsersInGroup(DefaultGroupManager.java:163) at com.atlassian.jira.security.groups.DefaultGroupManager.getUsersInGroup(DefaultGroupManager.java:192) at com.atlassian.jira.security.groups.RequestCachingGroupManager.getUsersInGroup(RequestCachingGroupManager.java:133) ... 2 filtered
Workaround
Update the app_user database table and ensure that user_key and lower_user_name values are the same for the problematic user:
UPDATE app_user SET lower_user_name = user_key WHERE user_key = 'testuser';
And restart JIRA afterwards.