Bamboo specs import fails due to snakeyaml-1.32 codepointlimit bug

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: Low
    • 9.2.6
    • Affects Version/s: 9.2.4
    • Component/s: Bamboo Specs
    • None
    • 1
    • Severity 2 - Major
    • 1

      Issue Summary

      This is reproducible on Data Center: (yes)

      Steps to Reproduce

      1. Run Bamboo version 9.2.4
      2. Scan the large bamboo specs code (codepointlimit > 3145728) 

      Expected Results

      Bamboo specs scan should be successfully done.

      Actual Results

      Bamboo specs import fails and the below exception is thrown in the atlassian-bamboo.log file:

      2023-09-19 21:46:41,898 INFO [15-BAM::SpecsDetection:pool-19-thread-4] [YamlSpecsImportServiceImpl] Bamboo YAML import failed on incorrect YAMLcom.atlassian.bamboo.specs.yaml.YamlSpecsValidationException: Invalid format of the YAML file: The incoming YAML document exceeds the limit: 3145728 code points.    at com.atlassian.bamboo.configuration.external.yaml.BambooYamlSpecsServiceImpl.splitDocuments(BambooYamlSpecsServiceImpl.java:54) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.rss.YamlSpecsImportServiceImpl.processSimplifiedYaml(YamlSpecsImportServiceImpl.java:106) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.RepositoryStoredSpecsServiceImpl.tryProcessYaml(RepositoryStoredSpecsServiceImpl.java:341) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.RepositoryStoredSpecsServiceImpl.runBambooSpecs(RepositoryStoredSpecsServiceImpl.java:184) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.RssDetectionServiceImpl.runRssDetection(RssDetectionServiceImpl.java:374) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.detection.RssDetectionRunnable.run(RssDetectionRunnable.java:42) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]    at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]    at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48) ~[atlassian-bamboo-api-9.2.4.jar:?]    at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26) ~[atlassian-bamboo-api-9.2.4.jar:?]    at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17) ~[atlassian-bamboo-api-9.2.4.jar:?]    at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41) ~[atlassian-bamboo-api-9.2.4.jar:?]    at java.lang.Thread.run(Thread.java:834) ~[?:?]Caused by: org.yaml.snakeyaml.error.YAMLException: The incoming YAML document exceeds the limit: 3145728 code points.    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:335) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:256) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.parser.ParserImpl$ParseIndentlessSequenceEntryKey.produce(ParserImpl.java:597) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:171) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.comments.CommentEventsCollector$1.peek(CommentEventsCollector.java:57) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.comments.CommentEventsCollector$1.peek(CommentEventsCollector.java:43) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.comments.CommentEventsCollector.collectEvents(CommentEventsCollector.java:136) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.comments.CommentEventsCollector.collectEvents(CommentEventsCollector.java:116) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeScalarNode(Composer.java:221) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:190) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:252) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:192) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:321) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:312) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:293) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:194) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:321) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:312) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:293) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:194) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:252) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:192) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:321) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:312) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:293) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:194) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:321) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:312) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:293) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:194) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:116) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:139) ~[snakeyaml-1.32.jar:?]    at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:500) ~[snakeyaml-1.32.jar:?]    at com.atlassian.bamboo.configuration.external.yaml.BambooYamlSpecsServiceImpl.splitDocuments(BambooYamlSpecsServiceImpl.java:46) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    ... 14 more2023-09-19 21:46:41,907 INFO [AtlassianEvent::0-BAM::EVENTS:pool-2-thread-50] [BitbucketServerRssStatusUpdater] Sending RSS notification to Stash (repository: 1cd_hmp_access-control-engine_terraform_infrastructure)2023-09-19 21:46:41,913 INFO [15-BAM::SpecsDetection:pool-19-thread-4] [RssDetectionRunnable] Exception while executing RSS detection for RssDetectionWork[repository=800360628,branch=feat/spin-up-openfga]com.atlassian.bamboo.specs.yaml.YamlSpecsValidationException: Invalid format of the YAML file: The incoming YAML document exceeds the limit: 3145728 code points.    at com.atlassian.bamboo.configuration.external.yaml.BambooYamlSpecsServiceImpl.splitDocuments(BambooYamlSpecsServiceImpl.java:54) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.rss.YamlSpecsImportServiceImpl.processSimplifiedYaml(YamlSpecsImportServiceImpl.java:106) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.RepositoryStoredSpecsServiceImpl.tryProcessYaml(RepositoryStoredSpecsServiceImpl.java:341) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.RepositoryStoredSpecsServiceImpl.runBambooSpecs(RepositoryStoredSpecsServiceImpl.java:184) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.RssDetectionServiceImpl.runRssDetection(RssDetectionServiceImpl.java:374) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at com.atlassian.bamboo.configuration.external.detection.RssDetectionRunnable.run(RssDetectionRunnable.java:42) ~[atlassian-bamboo-import-export-9.2.4.jar:?]    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]    at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]    at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48) ~[atlassian-bamboo-api-9.2.4.jar:?]    at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26) ~[atlassian-bamboo-api-9.2.4.jar:?]    at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17) ~[atlassian-bamboo-api-9.2.4.jar:?]    at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41) ~[atlassian-bamboo-api-9.2.4.jar:?]    at java.lang.Thread.run(Thread.java:834) ~[?:?]Caused by: org.yaml.snakeyaml.error.YAMLException: The incoming YAML document exceeds the limit: 3145728 code points. 

      Workaround

      As of now we suggest to upgrade Bamboo to 9.3 version as snakeyaml has upgrade version (2.0 which has the fix for this issue of snakeyaml) in this.

            Assignee:
            Marcin Gardias
            Reporter:
            Khushboo Gupta
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: