Description
Summary
When there is no SLA metric in the SD project user will encounter an endless spinner and a page keeps refreshing while trying to create the first SLA metric.
Steps to Reproduce
- Create a new SD project.
- Remove all the existing SLA metric in the project.
- Try to create a new SLA metric
Expected Results
New SLA metric configuration page get correctly displayed.
Actual Results
Page keeps refreshing with an endless spinner
The below exception is thrown in the log file:
2017-05-16 13:52:11,352 http-nio-8080-exec-12 ERROR admin 832x249x2 myyi3q 0:0:0:0:0:0:0:1 /rest/servicedesk/1/servicedesk/agent/SLAT/sla/consistencydata [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: Trying to create empty sub-expression. Current JQL is '{project = 10102} AND ('. java.lang.IllegalStateException: Trying to create empty sub-expression. Current JQL is '{project = 10102} AND ('. at com.atlassian.jira.jql.builder.PrecedenceSimpleClauseBuilder$StartGroup.endgroup(PrecedenceSimpleClauseBuilder.java:818) at com.atlassian.jira.jql.builder.PrecedenceSimpleClauseBuilder.endsub(PrecedenceSimpleClauseBuilder.java:103) at com.atlassian.jira.jql.builder.DefaultJqlClauseBuilder.endsub(DefaultJqlClauseBuilder.java:150) at com.atlassian.servicedesk.internal.sla.task.OutdatedIssueFinder.getOutdatedMetricsQuery(OutdatedIssueFinder.java:119) at com.atlassian.servicedesk.internal.sla.task.OutdatedIssueFinder.getOutdatedServiceDeskIssueCount(OutdatedIssueFinder.java:65) at com.atlassian.servicedesk.internal.sla.task.SlaDataConsistencyServiceImpl.getSLADataConsistencyState(SlaDataConsistencyServiceImpl.java:49) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaHelper.getSLAConsistencyData(ServiceDeskSlaHelper.java:194) at com.atlassian.servicedesk.internal.rest.sla.agentview.ServiceDeskSlaResource.lambda$getSlaConsistencyData$46(ServiceDeskSlaResource.java:213) 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.getSlaConsistencyData(ServiceDeskSlaResource.java:213) ... 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:134) at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:87) 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)
Notes
The error cannot be reproduced on a JSD 3.4.0 instance.
Workaround
- Create a new SD project with pre-defined SLA.
- Copy project configuration from current project to new project.
- Setup the custom SLA in the new project before removing the pre-defined SLA.
- Move issues to new project.
- (Optional) Delete current project.
- (Optional) Change project key of new project.
Attachments
Issue Links
- is duplicated by
-
JSDSERVER-5385 When all existing SLAs for a project are removed, SLAs can no longer be created due to the page refreshing.
- Closed
- relates to
-
JSMDC-607 Loading...