Bamboo Data Center Specs scan fails with "The incoming YAML document exceeds the limit: 6291456 code points"
Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.
Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles for non-Data Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
When scanning a Specs project in Bamboo Data Center, the scan fails and the following error can be seen in the Specs execution logs:
The incoming YAML document exceeds the limit: 6291456 code points.
Environment
The solution has been validated in Bamboo Data Center 9.2.17 but may be applicable to other versions.
Diagnosis
When the Specs scan fails, while reviewing the scan logs available in the Liked Repository page > Specs status > "View Error Logs", the following error is present:
com.atlassian.bamboo.exception.YamlValidationException: Could not parse yaml input: The incoming YAML document exceeds the limit: 6291456 code points.
java.lang.RuntimeException: com.atlassian.bamboo.exception.YamlValidationException: Could not parse yaml input: The incoming YAML document exceeds the limit: 6291456 code points.
at com.google.common.base.Throwables.propagate(Throwables.java:249)
at com.atlassian.bamboo.configuration.external.rss.importers.DeploymentProjectImporterProvider.lambda$getEntityImporter$0(DeploymentProjectImporterProvider.java:35)
at com.atlassian.bamboo.configuration.external.rss.AllTypesSpecsImporter.importBambooYamlsWithImporter(AllTypesSpecsImporter.java:130)
at com.atlassian.bamboo.configuration.external.rss.AllTypesSpecsImporter.importBambooYamlsOfAllTypes(AllTypesSpecsImporter.java:69)
at com.atlassian.bamboo.configuration.external.rss.JavaSpecsImportServiceImpl.lambda$processSpecs$2(JavaSpecsImportServiceImpl.java:88)
at com.atlassian.bamboo.configuration.external.rss.SpecsOptimizeProcessor.processSpecs(SpecsOptimizeProcessor.java:43)
at com.atlassian.bamboo.configuration.external.rss.JavaSpecsImportServiceImpl.processSpecs(JavaSpecsImportServiceImpl.java:101)
...
Cause
In YAML, a code point limit refers to the maximum number of Unicode code points that can be used in a single string or document. Even if you're using Java Specs with Bamboo, they are internally converted to YAML before Bamboo can process them. By default, Bamboo Data Center sets its limit to parse code points at 6291456, while YAML defaults are usually half that, 3145728.
Hitting this error means that either your Specs code project has reached the code point limit, or that you're running Bamboo Data Center 9.2.4 which is affected by
BAM-22605
-
Bamboo specs import fails due to snakeyaml-1.32 codepointlimit bug
Closed
. For the latter, the error message would state "3145728" as the maximum value.
Solution
If you're running Bamboo Data Center 9.2.4, please upgrade to 9.2.6 or a newer version where the
BAM-22605
-
Bamboo specs import fails due to snakeyaml-1.32 codepointlimit bug
Closed
bug has been fixed.
If you're running any other Bamboo Data Center version, you can either adjust your Specs project to have less code points, or configure Bamboo's limit to a higher value by adding the system property below. The default value is 6291456, and we suggest increasing it according to your projects' needs:
-Dbamboo.specs.code.point.limit=NEW_VALUE
In order to apply the system property above to your Bamboo instance, please follow the steps from the article below:
Please note Bamboo must be restarted for the property to be picked up.