There are 3 updates.
 
 
JIRA Components / cid:jira-generated-image-avatar-2ac6dc59-c600-4822-bd3b-5ee64cad72a0 JIRA-108 Open

JIRA XML parsing fails for Polish characters

 
View issue   ·   Add comment
 

3 updates

 
cid:jira-generated-image-avatar-b734781e-e9bc-4358-a0ac-1cf8bc742fd9 Changes by Vincent Massol on 04/Feb/26 14:49
 
Version: 11.1.3
Description: The JQL macro "issueKey in (PROC-315)" causes a rendering error:

Failed to execute the JIRA macro. Cause: 
`
{noformat}
[XML document structures must start and end within the same entity.] `
{noformat}

Full stack trace attached: ` {{ jira-macro-error-anonymized.txt ` }}

**Probable cause**:

- Atlassian Cloud API returns XML with a BOM (EF BB BF) at the very beginning of the response.
- The JDOM/Xerces parser does not tolerate this when data is passed directly as an InputStream.

**Solution (introduced in code):**

In the HTTPJIRAFetcher class, the fetch method, the parsing behavior has been changed:

***Before:***

```java {code}
return createSAXBuilder().build(is);
``` {code}

***After:***
```java
{code}
try (InputStreamReader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
return createSAXBuilder().build(reader);
}
``` {code}

The UTF-8 InputStreamReader automatically removes the BOM, which solves the problem.

***Status:***

Pull Request issued – https://github.com/xwiki-contrib/jira/pull/74
Waiting for code review and merge.

Environment:
The application is running in a Docker container.

Attachments:

` {{ jira-macro-error-anonymized.log ` }} (anonymized log with the full stack trace and a snippet of the server response)

***At the same time, a colleague from his perspective says that this could be the case:***

So, to summarize:
- It's accessed through the Atlassian API, using a service account - https://api.atlassian.com/ex/jira/\{appId}
- The error always occurs for individual tasks or groups of tasks
- If the same task is placed in a list with other tasks, it works correctly
- The underlying XML is valid and the parser reads it correctly
- If you wrap IS, it works too
- There could even be some race conditions in Java itself here - for example, the HTTP client is still writing the response to some buffer, and the parser is already trying to read it
- So, you can indicate in the report that you're using a Docker image

By the way, sorry for the strange ticket, but this is the first time I'm writing to open-source developers.
Assignee: Vincent Massol