Details
-
Bug
-
Resolution: Fixed
-
Low
-
1.1.1, 1.1.2
-
None
Description
Summary
Reindexing an instance with Service Desk enabled and containing an issue with an unexpected status generates an error, additionally updating issues can also cause this same error.
Steps to Reproduce
Either of the following:
- Reindex an instance with Service Desk enabled and containing an issue with an unexpected status.
- Adding a comment onto an issue incorrectly updates the SLA and can add multiple ticks.
Expected Results
- No errors are present during indexing.
- The SLA is not incorrectly updated.
Actual Results
During reindexing the following errors are output:
2013-12-11 00:08:34.929363500 2013-12-11 00:08:34,921 JiraTaskExectionThread-5 WARN sysadmin 8x851x1 jkie56 46.243.25.78,131.103.26.65 /rest/servicedesk/1/servicedesk/OS/sla/consistency [atlassian.jira.index.AccumulatingResultBuilder] java.lang.IllegalArgumentException: start < stop 2013-12-11 00:08:35.923852500 2013-12-11 00:08:35,923 JiraTaskExectionThread-5 WARN sysadmin 8x851x1 jkie56 46.243.25.78,131.103.26.65 /rest/servicedesk/1/servicedesk/OS/sla/consistency [atlassian.jira.index.AccumulatingResultBuilder] java.lang.IllegalArgumentException: start < stop
And when adding a comment to the issue the below stack trace is output:
014-01-07 11:08:24,741 http-bio-8080-exec-1 ERROR jjarke 668x155132x1 1ocqex8 217.73.4.138,10.104.120.16 /rest/api/2/issue/TWO-2544/comment [servicedesk.internal.util.SafeRunner] Unable to run event handler SLA Cycle Update java.lang.IllegalArgumentException: start < stop at com.atlassian.jira.util.dbc.Assertions.is(Assertions.java:171) at com.atlassian.servicedesk.internal.sla.metric.DateTimeRange.<init>(DateTimeRange.java:26) at com.atlassian.servicedesk.internal.sla.goal.GoalCalculationServiceImpl.getOngoingGoalStatus(GoalCalculationServiceImpl.java:50) at com.atlassian.servicedesk.internal.sla.goal.SlaUpdateManagerImpl.buildCompleteDataFromOngoing(SlaUpdateManagerImpl.java:336) at com.atlassian.servicedesk.internal.sla.goal.SlaUpdateManagerImpl.updateOngoingSLAState(SlaUpdateManagerImpl.java:241) at com.atlassian.servicedesk.internal.sla.goal.SlaUpdateManagerImpl.updateSla(SlaUpdateManagerImpl.java:186) at com.atlassian.servicedesk.internal.sla.listener.SlaCycleUpdater.processMetricConfiguration(SlaCycleUpdater.java:210) at com.atlassian.servicedesk.internal.sla.listener.SlaCycleUpdater.processIssueEvent(SlaCycleUpdater.java:150) at com.atlassian.servicedesk.internal.sla.listener.SlaCycleUpdater.runCycleUpdate(SlaCycleUpdater.java:109) at com.atlassian.servicedesk.internal.sla.listener.SlaCycleUpdater.access$000(SlaCycleUpdater.java:36) at com.atlassian.servicedesk.internal.sla.listener.SlaCycleUpdater$1.run(SlaCycleUpdater.java:80) at com.atlassian.servicedesk.internal.util.SafeRunner.withTryCatchCondom(SafeRunner.java:58) at com.atlassian.servicedesk.internal.util.SafeRunner.access$000(SafeRunner.java:14) at com.atlassian.servicedesk.internal.util.SafeRunner$1.run(SafeRunner.java:36) at com.atlassian.servicedesk.bootstrap.lifecycle.LifecycleLock.runSafely(LifecycleLock.java:49) at com.atlassian.servicedesk.internal.util.SafeRunner.run(SafeRunner.java:31) at com.atlassian.servicedesk.internal.sla.listener.SlaCycleUpdater.onIssueEvent(SlaCycleUpdater.java:75) <+2> (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:66) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:32) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:60) at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:160) at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:79) at com.atlassian.multitenant.event.DefaultPeeringEventPublisherManager.publish(DefaultPeeringEventPublisherManager.java:17) at com.atlassian.multitenant.event.PeeringEventPublisher.publish(PeeringEventPublisher.java:23) at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:184) at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:122) at com.atlassian.jira.issue.comments.DefaultCommentManager.dispatchEvent(DefaultCommentManager.java:352) at com.atlassian.jira.issue.comments.DefaultCommentManager.create(DefaultCommentManager.java:216) at com.atlassian.jira.issue.comments.DefaultCommentManager.create(DefaultCommentManager.java:166) at com.atlassian.jira.issue.comments.DefaultCommentManager.create(DefaultCommentManager.java:160) at com.atlassian.jira.bc.issue.comment.DefaultCommentService.create(DefaultCommentService.java:167) at com.atlassian.jira.bc.issue.comment.DefaultCommentService.create(DefaultCommentService.java:154) <+2> (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$AbstractMultiTenantAwareInvocationHandler.invokeInternal(MultiTenantComponentFactoryImpl.java:181) at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$MultiTenantAwareInvocationHandler.invoke(MultiTenantComponentFactoryImpl.java:211) at com.sun.proxy.$Proxy189.create(Unknown Source) <+2> (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.atlassian.plugin.osgi.hostcomponents.impl.DefaultComponentRegistrar$ContextClassLoaderSettingInvocationHandler.invoke(DefaultComponentRegistrar.java:129) at com.sun.proxy.$Proxy189.create(Unknown Source) <+2> (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:154) at com.sun.proxy.$Proxy189.create(Unknown Source) at com.atlassian.jira.rest.v2.issue.CommentResource.addComment(CommentResource.java:266) at com.atlassian.jira.rest.v2.issue.IssueResource.addComment(IssueResource.java:1350) <+2> (DelegatingMethodAccessorImpl.java:43)
Workaround
For indexing, disabling the plugin allow the instance to be reindexed successfully. However when the plugin is re-enabled the instance will request for a reindex and the plugin may not operate successfully after the indexing operation fails.
It is not possible to workaround the issue comments bug - the plugin must be upgraded for this to happen.
Notes
The database indicates the issue only ever encountered a PAUSED state:
id | issue | customfield | parentkey | stringvalue | numbervalue | textvalue | datevalue | valuetype -------+-------+-------------+-----------+--------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+----------- 13000 | 10614 | 10024 | | | | {"timeline":{"events":[{"date":1385607134332,"types":["PAUSE"]},{"date":1386648782950,"types":["START","UNPAUSE"]}]},"ong oingSLAData":{"goalId":7,"startTime":1386648782950,"paused":false},"completeSLAData":[],"metricId":2,"definitionChangeDate":1385428632047,"goalsChangeDate":1385428346695,"goalTimeUpdatedDate":0} | | 13001 | 10614 | 10023 | | | | {"timeline":{"events":[{"date":1385607134332,"types":["PAUSE"]},{"date":1386648782950,"types":["UNPAUSE"]}]},"ongoingSLAD ata":null,"completeSLAData":[],"metricId":1,"definitionChangeDate":1385438927910,"goalsChangeDate":null,"goalTimeUpdatedDate":null}
For a comparison a healthy issue registers a start event:
id | issue | customfield | parentkey | stringvalue | numbervalue | textvalue | datevalue | valuetype -------+-------+-------------+-----------+---------------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+----------- 10211 | 10301 | 10105 | | | | {"timeline":{"events":[{"date":1387323274676,"types":["START"]}]},"ongoingSLAData":{"goalId":5,"startTime":1387323274676,"paused":false},"completeSLAData":[],"met ricId":3,"definitionChangeDate":0,"goalsChangeDate":1386719592286,"goalTimeUpdatedDate":1386719592272} | | 10213 | 10301 | 10103 | | | | {"timeline":{"events":[{"date":1387323274676,"types":["START"]}]},"ongoingSLAData":{"goalId":2,"startTime":1387323274676,"paused":false},"completeSLAData":[],"met ricId":1,"definitionChangeDate":0,"goalsChangeDate":1386719592199,"goalTimeUpdatedDate":1386719592158} | | 10221 | 10301 | 10104 | | | | {"timeline":{"events":[{"date":1387323274593,"types":["PAUSE"]},{"date":1387323872892,"types":["START","UNPAUSE"]},{"date":1387323875803,"types":["PAUSE"]}]},"ong oingSLAData":{"goalId":6,"startTime":1387323872892,"paused":true},"completeSLAData":[],"metricId":2,"definitionChangeDate":1387323646719,"goalsChangeDate":0,"goalTimeUpdatedDate":0} | |
Currently unable to reproduce forcing a pause before a start by using the SLA settings.