Uploaded image for project: 'Crucible'
  1. Crucible
  2. CRUC-8663

Create Issue from comment on review fails with a 400 Bad Request error

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Low Low
    • None
    • 4.9.0
    • Code reviews
    • None

      Issue Summary

      If the Create Issue link seen in a review comment is clicked, but the user does not have the Create Issues permission allowed in all Jira projects they are allowed to browse, the Create Issue panel on the Crucible side will show a 400 Bad Request message:

      Steps to Reproduce

      1. Ensure that an Application Link is established between Crucible 4.9.0 and any Jira version greater than 9.0.
      2. On the Jira side, have two projects, TEST and ABC, each one using a different Permission Scheme.
      3. On TEST, go to Project Settings > Permissions and ensure the user is granted the Create Issues permission
      4. On ABC, go to Project Settings > Permissions and ensure the user is granted the Create Issues permission
      5. On the Crucible side, create a review and add an issue from the TEST project (for example, TEST-1) as a Linked Issue
      6. Add some source code to the review in order to add comments and show the Create Issue link afterwards
      7. Click the Create Issue link seen on the comment, and note that the panel will show up correctly.
      8. On the Jira side, on the ABC project, go to Project Settings > Permissions and modify the permissions to ensure the user is NOT granted the Create Issues permission
      9. On the Crucible side, on refresh, the review page, click the Create Issue link seen on the comment, and note that the panel will show an error message:
         Request to Jira failed. Returned with 400. Response: 400HTTP 400 Bad Request
         
      10. This is wrong because the user still has permission to create issues in the TEST project.

      Expected Results

      Crucible should handle the response from Jira more gracefully in order to list only the projects on which the user has the Create Issues permission allowed on the Jira side.

      Actual Results

      The web interface will show the error message seen in the image attached, and the atlassian-fisheye.log with Debug Logging and Network Traffic enabled will have this:

      2025-05-08 12:00:18,653 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] com.atlassian.crucible.plugins.ril.service.JiraServiceImpl - Executing Jira request. GET http://localhost:8080/http://localhost:8080/rest/api/2/issue/createmeta/10100/issuetypes?startAt=0&maxResults=50
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "GET /rest/api/2/issue/createmeta/10100/issuetypes?startAt=0&maxResults=50 HTTP/1.1[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "Content-Type: application/json[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "Content-Encoding: UTF-8[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "Authorization: OAuth oauth_token="ZDrtHWAdPKyfUbhjCma2gJ6IYCWnoUdF", oauth_consumer_key="FishEye%3A7730349221", oauth_signature_method="RSA-SHA1", oauth_timestamp="1746716418", oauth_nonce="7e1e62d8-a7d9-4ce3-a312-405f40a3d0b5_56898842118750", oauth_version="1.0", oauth_signature="l8RW2GXrP97GNtiNDaht2DVhoAM%2BmKSR7oqAnc06uUmISy2JxU3ozU8iOWQQs18qgFQGrsPOBm6BWtbWEN9jaJWO1ZQ%2FCvwSWRfCNX3o%2B6TkNNkX2P23tBW9M3%2FgzH%2FdiklsOV0kkIpsU3nozt7JxZDmvInCOn%2F11vw2fKJxe%2Bg28MarJNBrm1VHr0tCmN9JePyVB79oi3uFowaTBTeY5K6B5VgFXm2j91n9iUWq774O9UH%2BqDIKhp3GIxufYf4UFUKGtzftN0hU1BFmPSNOVgsIRpFGoj102Gm9cDuTXDvI9N2T5KL699chSZzkx7c8Ey%2FMRnPgkYQQ72ZoJSWCtQ%3D%3D"[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "Host: localhost:8080[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "Connection: Keep-Alive[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "User-Agent: Apache-HttpClient/4.5.14 (Java/1.8.0_202)[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "Accept-Encoding: gzip,deflate[\r][\n]"
      2025-05-08 12:00:18,662 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 >> "[\r][\n]"
      2025-05-08 12:00:18,985 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "HTTP/1.1 400 [\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "X-AREQUESTID: 720x394x1[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Referrer-Policy: strict-origin-when-cross-origin[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "X-XSS-Protection: 1; mode=block[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "X-Content-Type-Options: nosniff[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "X-Frame-Options: SAMEORIGIN[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Content-Security-Policy: sandbox[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Strict-Transport-Security: max-age=31536000[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Server-Timing: threadId;desc=33[\r][\n]"
      2025-05-08 12:00:18,986 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Set-Cookie: JSESSIONID=4A9D8956292E6E4DED9F9EF3F46E6E6F; Path=/; HttpOnly[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "X-Seraph-LoginReason: OK[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Set-Cookie: atlassian.xsrf.token=BI05-AFR4-MAHT-SPU8_f4414e908baca0f970bdba69aa1b90013591cc0a_lin; Path=/[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "X-ASESSIONID: njcgrg[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "X-AUSERNAME: fkraemer[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Vary: User-Agent[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Content-Encoding: gzip[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Content-Type: application/xml;charset=UTF-8[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Content-Length: 129[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Date: Thu, 08 May 2025 15:00:18 GMT[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "Connection: close[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "[\r][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "[0x1f][0x8b][0x8][0x0][0x0][0x0][0x0][0x0][0x0][0xff][0xb3][0xb1][0xaf][0xc8][0xcd]Q(K-*[0xce][0xcc][0xcf][0xb3]U2[0xd4]3PRH[0xcd]K[0xce]O[0xc9][0xcc]K[0xb7]U[\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "[\r]q[0xd3][0xb5]PR(.I[0xcc]KI[0xcc][0xc9][0xcf]K[0xb5]U[0xaa]L-V[0xb2][0xb7][0xb3][0x1][\n]"
      2025-05-08 12:00:18,987 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] org.apache.http.wire - http-outgoing-86 << "[0x95][0x94][0x16][0xc3]h][0xa0][0x86]T;[0x13][0x3][0x3][0x1b]}d[0x1][0x9b][0xdc][0xd4][0xe2][0xe2][0xc4][0xf4]T;[0x8f][0x90][0x90][0x0][0x5][0xa0][0xb4][0x82]Sb[0x8a]BPjaijq[0x89][0x8d]>L[0x16][0xa6][0xc9][0xe][0x0]?[0xf5][0xac][0x9b][0x8d][0x0][0x0][0x0]"
      2025-05-08 12:00:18,990 WARN  [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] com.atlassian.crucible.plugins.ril.service.JiraServiceImpl - Failed to execute application link request. Server: http://localhost:8080 Method: GET Url: http://localhost:8080/rest/api/2/issue/createmeta/10100/issuetypes?startAt=0&maxResults=50
          Response: 400 
          Errors: Errors{errorMessages=[Request to Jira failed. Returned with 400. Response: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><status><status-code>400</status-code><message>HTTP 400 Bad Request</message></status>], errors={}}
      2025-05-08 12:00:18,991 DEBUG [qtp698741991-281 url: /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993; user: fkraemer ] com.atlassian.crucible.plugins.ril.service.JiraServiceImpl - Response body: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><status><status-code>400</status-code><message>HTTP 400 Bad Request</message></status>
      2025-05-08 12:00:18,993 DEBUG [qtp698741991-281 ] com.atlassian.fecru.profiling.ProfilingServletFilter - end request in 470ms GET /rest/jira-ril/1.0/jira-rest/metadata/2de3968e52895099bb61c80a36980993?reviewKey=CR-1&commentId=4&_=1746716371809 sessionid=node011qm313gc1jcs16slux1i8qlms1 200 mem=2,583MB
      

      Workaround

      The user triggering the Create Issue action on the Crucible side needs to have on the Jira side the "Create Issues" permission, at least in all projects in which they have the "Browse Project" permission."

              Unassigned Unassigned
              fkraemer Felipe Kraemer
              Affected customers:
              0 This affects my team
              Watchers:
              1 Start watching this issue

                Created:
                Updated: