Details
-
Bug
-
Resolution: Unresolved
-
Low
-
None
-
3.2.6, 3.3.2, 3.16.6
-
2
-
Severity 2 - Major
-
5
-
Description
Summary
When a decimal number is entered in SLA goal, and user has changed UI language to "French", an exception will be thrown when accessing the SLA setting page and SLA metric will be missing for the newly created issue.
Steps to Reproduce
- Create a Basic Service Desk project
- Create a "Number field" custom field called "test_nf"
- Modify the default "Time to resolution" SLA metric by adding a new goal with :
- JQL : test_nf < 10.5
- Goal : 50m
- Calendar : 24/7 Calendar (Default)
- After saving the "Time to resolution" metric, goto user profile and change the Language Preference to French
- Go back to Project settings > SLAs
Expected Results
SLA setting page loaded correctly.
Actual Results
SLA setting page keeps loading and the below exception is thrown in the log file:
2017-03-07 11:18:12,480 http-nio-8080-exec-1 ERROR admin 678x2601x1 1xdz9v7 0:0:0:0:0:0:0:1 /rest/servicedesk/1/servicedesk/agent/DDD/sla/metrics [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: '10.5' est un nombre invalide com.atlassian.jira.issue.customfields.impl.FieldValidationException: '10.5' est un nombre invalide at com.atlassian.jira.issue.customfields.converters.DoubleConverterImpl.getDouble(DoubleConverterImpl.java:87) at com.atlassian.jira.jql.query.AbstractNumberOperatorQueryFactory.getIndexValues(AbstractNumberOperatorQueryFactory.java:33) at com.atlassian.jira.jql.query.NumberRelationalQueryFactory.createQueryForSingleValue(NumberRelationalQueryFactory.java:49) at com.atlassian.jira.jql.query.GenericClauseQueryFactory.getQuery(GenericClauseQueryFactory.java:59) at com.atlassian.jira.jql.query.NumberCustomFieldClauseQueryFactory.getQuery(NumberCustomFieldClauseQueryFactory.java:29) at com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:97) at com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:25) at com.atlassian.query.clause.TerminalClauseImpl.accept(TerminalClauseImpl.java:143) at com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:55) at com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:25) at com.atlassian.query.clause.AndClause.accept(AndClause.java:28) at com.atlassian.jira.jql.query.QueryVisitor.createQuery(QueryVisitor.java:51) at com.atlassian.jira.jql.query.DefaultLuceneQueryBuilder.createLuceneQuery(DefaultLuceneQueryBuilder.java:29) at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.search(LuceneSearchProvider.java:231) at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.search(LuceneSearchProvider.java:130) ... 2 filtered at java.lang.reflect.Method.invoke(Method.java:498) at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) at com.sun.proxy.$Proxy204.search(Unknown Source) ... 2 filtered at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at com.sun.proxy.$Proxy3113.search(Unknown Source) at com.atlassian.pocketknife.internal.search.issue.service.IssueDataServiceImpl.findImpl(IssueDataServiceImpl.java:125) at com.atlassian.pocketknife.internal.search.issue.service.IssueDataServiceImpl.find(IssueDataServiceImpl.java:65) at com.atlassian.servicedesk.internal.sla.goal.GoalStatisticsServiceImpl.getAllRelevantIssues(GoalStatisticsServiceImpl.java:124) at com.atlassian.servicedesk.internal.sla.goal.GoalStatisticsServiceImpl.getGoalSuccessStatistics(GoalStatisticsServiceImpl.java:79) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaHelper.toTimeMetricResponse(ServiceDeskSlaHelper.java:126) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaHelper.lambda$toTimeMetricEntries$1(ServiceDeskSlaHelper.java:120) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaHelper.toTimeMetricEntries(ServiceDeskSlaHelper.java:122) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaHelper.getTimeMetrics(ServiceDeskSlaHelper.java:115) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaHelper.getMetricParams(ServiceDeskSlaHelper.java:102) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaResource.lambda$getMetricsConfiguration$2(ServiceDeskSlaResource.java:71) at com.atlassian.pocketknife.step.EitherStep3.lambda$null$0(EitherStep3.java:26) at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870) at io.atlassian.fugue.Either.flatMap(Either.java:230) at com.atlassian.pocketknife.step.EitherStep3.lambda$null$1(EitherStep3.java:26) at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870) at io.atlassian.fugue.Either.flatMap(Either.java:230) at com.atlassian.pocketknife.step.EitherStep3.lambda$then$2(EitherStep3.java:25) at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:870) at io.atlassian.fugue.Either.flatMap(Either.java:230) at com.atlassian.pocketknife.step.EitherStep3.then(EitherStep3.java:24) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaResource.getMetricsConfiguration(ServiceDeskSlaResource.java:71) ... 3 filtered at java.lang.reflect.Method.invoke(Method.java:498) ... 19 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) ... 32 filtered at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:56) ... 4 filtered at com.atlassian.servicedesk.internal.web.UrlOperationalStatusCheckFilter.doFilterWhenLicensed(UrlOperationalStatusCheckFilter.java:38) at com.atlassian.servicedesk.internal.web.OperationalStatusAwareHttpFilter.doFilter(OperationalStatusAwareHttpFilter.java:27) ... 4 filtered at com.atlassian.servicedesk.internal.web.PopulateEyeballForRestFilter.doFilterWhenLicensed(PopulateEyeballForRestFilter.java:36) at com.atlassian.servicedesk.internal.web.OperationalStatusAwareHttpFilter.doFilter(OperationalStatusAwareHttpFilter.java:27) ... 8 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:80) ... 1 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:78) ... 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) ... 5 filtered at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:181) at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:139) at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:92) at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:64) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:174) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:130) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:121) ... 4 filtered at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:32) ... 8 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) ... 28 filtered at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
If a customer has set his/her UI language to any other Language but English, then SLA metric will be missing for the tickets raised by this customer.
Workaround
No workaround apart from using English as UI language
Attachments
Issue Links
- is resolved by
-
JRASERVER-70847 Shared filters are not working when the JQL contains decimal numbers and user profile set other than English
- Gathering Impact