Uploaded image for project: 'Jira Software Data Center'
  1. Jira Software Data Center
  2. JSWSERVER-25267

Updating Parent Link via REST API fails

    XMLWordPrintable

Details

    Description

      Summary

      Updating Parent field on an issue with no Parent Link via REST API works fine. But when clearing the Parent Link value or updating the value, the REST API fails with Internal server error.

      Environment

      • JIRA Portfolio 2.3.0 is installed.

      Steps to Reproduce

      1. Sample REST API call:
        <Base URL>/rest/api/2/issue/<Issue key>
        

        Body:

        {
            "update" : {
                "customfield_<custom field ID>" : [{"set" : "<parent link issue key>"}]
            }
        }
        

      Expected Results

      1. Parent field should be able to set to null to clear the value.
      2. Parent field should be able to be updated to a different parent issue.

      Actual Results

      1. Issues with no Parent link is able to be updated with the REST API.
      2. Updating an issue with a new Parent issue, the Parent link fails with the following error in atlassian-jira.log:
        2017-09-07 15:19:07,091 http-nio-8740-exec-13 ERROR admin 919x19417x1 1istpb8 10.60.3.49 /rest/api/2/issue/MOK-17 [c.a.j.rest.exception.ExceptionInterceptor] Returning internal server error in response
        java.lang.reflect.InvocationTargetException
                at sun.reflect.GeneratedMethodAccessor4746.invoke(Unknown Source)
                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)
                at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:83)
                ... 3 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)
                ... 32 filtered
                at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:56)
                ... 13 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:66)
                ... 1 filtered
                at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64)
                ... 16 filtered
                at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37)
                ... 19 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)
                ... 26 filtered
                at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25)
                ... 23 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)
        Caused by: java.lang.ClassCastException: com.atlassian.rm.jpo.env.issues.JiraIssueService$3 cannot be cast to java.lang.String
                at com.atlassian.jira.issue.customfields.impl.rest.TextCustomFieldOperationsHandler.getInitialValue(TextCustomFieldOperationsHandler.java:43)
                at com.atlassian.jira.issue.customfields.impl.rest.TextCustomFieldOperationsHandler.getInitialValue(TextCustomFieldOperationsHandler.java:17)
                at com.atlassian.jira.issue.customfields.impl.rest.AbstractCustomFieldOperationsHandler.updateIssueInputParameters(AbstractCustomFieldOperationsHandler.java:75)
                at com.atlassian.jira.rest.v2.issue.IssueInputParametersAssembler$IssueInputParametersBuilder.finalizeIssueInputParams(IssueInputParametersAssembler.java:428)
                at com.atlassian.jira.rest.v2.issue.IssueInputParametersAssembler$IssueInputParametersBuilder.buildForEdit(IssueInputParametersAssembler.java:230)
                at com.atlassian.jira.rest.v2.issue.UpdateIssueResource.editIssue(UpdateIssueResource.java:58)
                at com.atlassian.jira.rest.v2.issue.IssueResource.editIssue(IssueResource.java:752)
                ... 254 more
        

      Workaround

      1. Update the Parent field via UI instead of using REST API.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              mmuthusamy Moga
              Votes:
              27 Vote for this issue
              Watchers:
              27 Start watching this issue

              Dates

                Created:
                Updated: