Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-20315

Possible to create duplicate Jira issue keys for the same build result in BRS_LINKEDJIRAISSUES with asynchronous calls to the result comment API

      Summary

      It's possible to to create duplicate Jira issue keys for the same build result in BRS_LINKEDJIRAISSUES with asynchronous calls to the result comment API. These duplicates will break the build expiry process.

      Steps to Reproduce

      Install seq and parallel and run this:

      BAMBOO_USER=
      BAMBOO_PASS=
      BAMBOO_URL=http://localhost:8085
      BUILD_RESULT_KEY=
      seq 6 | parallel curl --user $BAMBOO_USER:$BAMBOO_PASS -H \'Content-Type: application/xml\' -X POST \"$BAMBOO_URL/rest/api/latest/result/$BUILD_RESULT_KEY/comment\" --data \'\<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\>\<comment\>\<content\>JRA-123\</content\>\</comment\>\'
      
      • Or just chain about 6 curls together with &

      Expected Results

      All comments get added but only one row in BRS_LINKEDJIRAISSUES per unique Jira issue key for a single build result.

      Actual Results

      All comments are added but there are duplicate rows created in BRS_LINKEDJIRAISSUES:

      linkedjiraissue_id	buildresultsummary_id	jira_issue_key	jira_issue_link_type
      182616065	182255685	JRA-123	0
      182616067	182255685	JRA-123	0
      182616066	182255685	JRA-123	0
      182616068	182255685	JRA-123	0
      

      Build expiry fails when attempting to expire the result with the duplicate linked Jira issue keys:

      2019-02-07 00:00:00,118 ERROR [7-BuildExpiryBean:pool-13-thread-1] [BatchingBatch] HHH000315: Exception executing batch [java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`BRS_LINKEDJIRAISSUES`, CONSTRAINT `FK_rhamoijfnb7coquyeag9aj978` FOREIGN KEY (`BUILDRESULTSUMMARY_ID`) REFERENCES `BUILDRESULTSUMMARY` (`BUILDRESULTSUMMARY_ID`))], SQL: delete from BUILDRESULTSUMMARY where BUILDRESULTSUMMARY_ID=?
      2019-02-07 00:00:00,118 WARN [7-BuildExpiryBean:pool-13-thread-1] [SqlExceptionHelper] SQL Error: 1451, SQLState: 23000
      2019-02-07 00:00:00,220 ERROR [7-BuildExpiryBean:pool-13-thread-1] [SqlExceptionHelper] Cannot delete or update a parent row: a foreign key constraint fails (`BRS_LINKEDJIRAISSUES`, CONSTRAINT `FK_rhamoijfnb7coquyeag9aj978` FOREIGN KEY (`BUILDRESULTSUMMARY_ID`) REFERENCES `BUILDRESULTSUMMARY` (`BUILDRESULTSUMMARY_ID`))
      2019-02-07 00:00:00,220 WARN [7-BuildExpiryBean:pool-13-thread-1] [BuildExpiryBeanImpl] Unable to expire BAMBOO-BUILD-RESULT
      

      Workaround

      If it comes from an automation that adds comments via the API, try to add a delay between API calls to avoid the race condition.

            [BAM-20315] Possible to create duplicate Jira issue keys for the same build result in BRS_LINKEDJIRAISSUES with asynchronous calls to the result comment API

            Zaro made changes -
            Priority Original: High [ 2 ] New: Low [ 4 ]
            Zaro made changes -
            Status Original: Needs Triage [ 10030 ] New: Gathering Impact [ 12072 ]
            SET Analytics Bot made changes -
            UIS Original: 20 New: 2
            Bugfix Automation Bot made changes -
            Status Original: Long Term Backlog [ 12073 ] New: Needs Triage [ 10030 ]
            Bugfix Automation Bot made changes -
            Priority Original: Low [ 4 ] New: High [ 2 ]
            SET Analytics Bot made changes -
            UIS Original: 2 New: 20
            SET Analytics Bot made changes -
            UIS Original: 3 New: 2
            SET Analytics Bot made changes -
            UIS Original: 1 New: 3
            SET Analytics Bot made changes -
            UIS Original: 8 New: 1
            SET Analytics Bot made changes -
            UIS Original: 22 New: 8

              Unassigned Unassigned
              jowen@atlassian.com Jeremy Owen
              Affected customers:
              1 This affects my team
              Watchers:
              5 Start watching this issue

                Created:
                Updated: