JiraConnect::SyncDeploymentsWorker fails with invalid binary character error when emoji present in deployment data
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Summary
The JiraConnect::SyncDeploymentsWorker fails to sync deployment information to Jira when emoji characters are present in the deployment payload. This results in a 400 error from Atlassian's Data Depot service with the message "Invalid binary character '#xD83E' was found in the request body".
Steps to reproduce
- Set up GitLab for Jira Cloud integration with deployment syncing enabled
- Create a deployment pipeline with emoji characters in:
- Commit messages (e.g., "
🚀 Deploy to production") - Branch names containing emojis
- Job names containing emojis (e.g., "deploy
🚀 ") - User display names with emojis
- Commit messages (e.g., "
- Execute the deployment
- Check GitLab logs for JiraConnect::SyncDeploymentsWorker errors
Example Project
Any GitLab project with Jira integration enabled where deployments contain emoji characters in commit messages, job names, or other deployment-related metadata.
What is the current bug behavior?
- Deployment information fails to sync to Jira
- JiraConnect::SyncDeploymentsWorker logs show 400 errors from Jira's Data Depot service
- Error message:
"Error when trying to call Data Depot with status 400" - Atlassian reports:
Invalid binary character '#xD83E' was found in the request body, the set of allowed characters is #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] - Pull request syncing continues to work normally (only deployment syncing is affected)
What is the expected correct behavior?
- Deployment information should sync successfully to Jira even when emoji characters are present
- Emoji characters should either be:
- Properly encoded for XML/JSON transmission to Jira
- Stripped/sanitized from the payload before sending
- Converted to safe alternatives (e.g.,
:rocket:instead of🚀 )
Relevant logs and/or screenshots
{
"severity": "ERROR",
"time": "2025-08-14T12:20:51.965Z",
"meta.caller_id": "JiraConnect::SyncDeploymentsWorker",
"meta.feature_category": "integrations",
"meta.root_caller_id": "PUT /api/:version/jobs/:id",
"message": "response from jira dev_info api",
"integration": "JiraConnect",
"jira_response": "{\"errorMessages\":[\"Error when trying to call Data Depot with status 400\"],\"responseCode\":400}"
}
Atlassian's error details:
Invalid binary character '#xD83E' was found in the request body, the set of allowed characters is #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Output of checks
This issue affects GitLab instances with:
- Jira Cloud integration enabled
- Deployment syncing configured
- Emoji characters in deployment-related data (commit messages, job names, etc.)
Results of GitLab environment info
This issue affects GitLab instances where JiraConnect::SyncDeploymentsWorker is present (likely multiple versions).
Results of GitLab application Check
Not applicable - this is a data encoding issue in the Jira integration, not a system configuration problem.
Possible fixes
- Sanitize emoji characters: Strip or replace emoji characters from deployment payload before sending to Jira
- Proper encoding: Ensure the payload is properly encoded for XML/JSON transmission to handle Unicode characters
- Character validation: Add validation to detect problematic characters and handle them gracefully
- Configuration option: Allow administrators to configure emoji handling (strip, replace, or encode)
The fix should be implemented in the JiraConnect deployment sync logic, likely in the payload preparation phase before sending data to Atlassian's Data Depot service.
Additional Context
- The character
#xD83Ecorresponds to Unicode emoji encoding (U+1F000-U+1FFFF range) - Pull request syncing works fine, indicating the issue is specific to deployment payload structure
- Atlassian cannot log the full payload for security reasons, making debugging challenging