Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-25553

Workflow designer breaks when a transition have an destination step called "originating step" (-1).

      When one or more transitions in a workflow have a destination step called "The Originating Step", workflow designer breaks and throws the following stacktrace:

      com.exadel.flamingo.service.exception.ServiceInvokationException: java.lang.reflect.InvocationTargetException
      	at com.exadel.flamingo.service.spring.utils.AMFSpringMethodInvoker.makeCall(AMFSpringMethodInvoker.java:150)
      	at com.sysbliss.jira.plugins.workflow.amf.JWDAMF3RemotingMessageProcessor.process(JWDAMF3RemotingMessageProcessor.java:56)
      	at com.sysbliss.jira.plugins.workflow.amf.JWDAMF3MessageProcessor.process(JWDAMF3MessageProcessor.java:47)
      	at com.exadel.flamingo.flex.amf.process.AMF0MessageProcessor.process(AMF0MessageProcessor.java:63)
      	at com.exadel.flamingo.flex.amf.process.AMF0MessageProcessor.process(AMF0MessageProcessor.java:40)
      	at com.sysbliss.jira.plugins.workflow.amf.JWDAMFRequestProcessor.process(JWDAMFRequestProcessor.java:64)
      	at com.sysbliss.jira.plugins.workflow.amf.JWDAMFServlet.service(JWDAMFServlet.java:26)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      	at com.atlassian.plugin.servlet.DelegatingPluginServlet.service(DelegatingPluginServlet.java:42)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      	at com.atlassian.plugin.servlet.ServletModuleContainerServlet.service(ServletModuleContainerServlet.java:52)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:74)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:44)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
      	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.executeRequest(AccessLogFilter.java:103)
      	at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.doFilter(AccessLogFilter.java:87)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.jira.security.xsrf.XsrfTokenAdditionRequestFilter.doFilter(XsrfTokenAdditionRequestFilter.java:54)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
      	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:211)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:150)
      	at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:70)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
      	at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:71)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:99)
      	at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:19)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:71)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:350)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:75)
      	at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:51)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
      	at com.sysbliss.jira.plugins.workflow.servlet.JWDSendRedirectFilter.doFilter(JWDSendRedirectFilter.java:25)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:74)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:33)
      	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:41)
      	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      	at com.atlassian.jira.web.filters.PathMatchingEncodingFilter.doFilter(PathMatchingEncodingFilter.java:49)
      	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.jira.web.monitor.ActiveRequestsFilter$PassToChainFilterFunc.doFilter(ActiveRequestsFilter.java:346)
      	at com.atlassian.jira.web.monitor.ActiveRequestsFilter$DebugLogFilterFunc.doFilter(ActiveRequestsFilter.java:463)
      	at com.atlassian.jira.web.monitor.ActiveRequestsFilter.doFilter(ActiveRequestsFilter.java:173)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.jira.startup.JiraStartupChecklistFilter.doFilter(JiraStartupChecklistFilter.java:75)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.multitenant.servlet.MultiTenantServletFilter.doFilter(MultiTenantServletFilter.java:91)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:74)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
      	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
      	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
      	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
      	at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.reflect.InvocationTargetException
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at com.exadel.flamingo.service.spring.utils.AMFSpringMethodInvoker.makeCall(AMFSpringMethodInvoker.java:141)
      	... 124 more
      Caused by: com.sysbliss.jira.plugins.workflow.exception.WorkflowDesignerServiceException: Error Loading Saved Layout
      	at com.sysbliss.jira.plugins.workflow.service.WorkflowDesignerServiceImpl.loadLayout(WorkflowDesignerServiceImpl.java:1416)
      	... 129 more
      Caused by: java.lang.NullPointerException
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createUIDForStep(WorkflowToJWDLayout.java:194)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:99)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgesForStartNode(WorkflowToJWDLayout.java:133)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createNodeLayout(WorkflowToJWDLayout.java:123)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.createEdgeLayout(WorkflowToJWDLayout.java:171)
      	at com.sysbliss.jira.plugins.workflow.jgraph.WorkflowToJWDLayout.transform(WorkflowToJWDLayout.java:45)
      	at com.sysbliss.jira.plugins.workflow.manager.WorkflowLayoutManagerImpl.getLayoutForWorkflow(WorkflowLayoutManagerImpl.java:116)
      	at com.sysbliss.jira.plugins.workflow.service.WorkflowDesignerServiceImpl.loadLayout(WorkflowDesignerServiceImpl.java:1414)
      	... 129 more
      ...
      

      If we change the destination step for a transition to a valid step, workflow designer works fine.

          Form Name

            [JRASERVER-25553] Workflow designer breaks when a transition have an destination step called "originating step" (-1).

            Can we also get a fix for the "transitions" REST api? When I created the support issue for that problem, I was told we did not need to create a new JRA issue for that particular problem since it was related to this one.

            Nancy Belser added a comment - Can we also get a fix for the "transitions" REST api? When I created the support issue for that problem, I was told we did not need to create a new JRA issue for that particular problem since it was related to this one.

            MattS added a comment -

            I keep having images of J Doklovic driving erratically when I read the summary of this issue. Anyone want to correct the typo?

            MattS added a comment - I keep having images of J Doklovic driving erratically when I read the summary of this issue. Anyone want to correct the typo?

            crf added a comment -

            Trevor's fix worked for me. Released JWD (version 2.5.4) and bumped JIRA up to that version.

            crf added a comment - Trevor's fix worked for me. Released JWD (version 2.5.4) and bumped JIRA up to that version.

            The transitions REST api will also break if you are using "originating step".

            Nancy Belser added a comment - The transitions REST api will also break if you are using "originating step".

            Although Origination step (-1) is legal and valid for OSWorkflow (at the moment is not achievable from GUI - it offers wrongly no result step (0) for Global Transition as in JRA-25002).

            Anyway, without the "loop" transition are common and global transitions half as powerfull.

            Jozef Kotlár added a comment - Although Origination step (-1) is legal and valid for OSWorkflow (at the moment is not achievable from GUI - it offers wrongly no result step (0) for Global Transition as in JRA-25002 ). Anyway, without the "loop" transition are common and global transitions half as powerfull.

              Unassigned Unassigned
              cgauterio Clarissa Gauterio (Inactive)
              Affected customers:
              5 This affects my team
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved: