500 Error setting Parent Link using JIRA REST API issue endpoint

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Type: Bug
    • Resolution: Duplicate
    • Priority: Low
    • None
    • Affects Version/s: 2.17.1
    • Component/s: API
    • None
    • 1
    • Severity 3 - Minor
    • 13

      Summary

      JIRA Portfolio has a Parent Link custom field used for hierarchy linking. The field can be added to an Edit/View Issue screen and edited directly there. However, it can't be updated through JIRA REST API for Issue Update, getting a 500 Error about data type mismatch.

      Steps to reproduce

      1. Set up JIRA with Portfolio
      2. Create at least one hierarchy level above Epic, e.g. Initiative
      3. Create a plan with an Initiative 1 and put an Epic under it
      4. Create another Initiative 2 for testing purpose
      5. Edit the Edit/View Issue screen/s used by the Epic and add Parent Link field
      6. Navigate to the Epic and attempt to update the field from Initiative 1 to Initiative 2
        • Notice this works without problem
      7. Attempt to update the field using REST API:
        PUT /rest/api/2/issue/{issueIdOrKey}
        
        {"fields":{"customfield_xxxxx":"KEY-12345"}}
        
        • xxxxx is the ID of Parent Link custom field
        • KEY-12345 is the issue key of the other Initiative

      Expected behavior

      The REST API request is successful and the field is updated.

      Actual behavior

      The request fails with a 500 Internal Server Error due to data type mismatch (seen from atlassian-jira.log):

      2018-11-14 01:36:31,060 http-nio-8790-exec-14 ERROR admin 96x3800x1 1u8vk8x 10.60.3.67 /rest/api/2/issue/SCRUM-61 [c.a.j.rest.exception.ExceptionInterceptor] Returning internal server error in response
      java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              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)
              ... 4 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.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:137)
              at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:90)
              at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:47)
              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)
              ... 24 filtered
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
              at java.lang.Thread.run(Thread.java:748)
      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:768)
              ... 256 more
      

      Workaround

      None via REST API. The field can only be updated from Edit/View Issue screen or the Portfolio plan itself.

            Assignee:
            Unassigned
            Reporter:
            Andy Nguyen (Inactive)
            Archiver:
            Aakrity Tibrewal

              Created:
              Updated:
              Resolved:
              Archived: