Platform notice: Server and Data Center only.
This article only applies to Atlassian products on the
Server and Data Center platforms
.
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
A page can't be saved after editing or not its content. Depending on the version, a different error in the UI is displayed.
In this example, a page containing
Unknown macros
can't be saved. In Confluence 5.10.x or earlier versions, the following error will be seen in the page editor when you attempt to save the page:
In recent versions of Confluence (
Confluence 6 onward
), the error shown in the UI is a generic error message due to the introduction of
Collaborative Editing
:
Environment
Confluence Server and Datacenter
Diagnosis
This error is usually due to broken HTML content. Identifying what's broken requires a deeper analysis of the problem. It was noticed that the problem may happen when:
-
The current Confluence server doesn't have the third-party app installed or has the app disabled.
-
A page was imported from an instance has had a third-party app that supplied a macro that isn't available in the destination server.
-
An example can be seen in the screenshot below:
-
Content imported from an old version of Confluence.
-
It's possible to edit a
page source
via an app, if such an app is installed, the editing can break the content.
For Confluence 6.x or later, please check the
atlassian-confluence.log
file for entries similar to the following:
2020-10-08 16:17:55,953 ERROR [http-nio-26152-exec-4] [rest.api.model.ExceptionConverter] convertServiceException No status code found for exception, converting to internal server error :
-- referer: http://localhost:26152/c6152/pages/resumedraft.action?draftId=327701&draftShareId=3c36c82f-f786-42e1-9f44-ef15df719490& | url: /c6152/rest/api/content/327700 | traceId: 29ff1005976571e5 | userName: admin
com.atlassian.confluence.api.service.exceptions.ServiceException: [com.ctc.wstx.exc.WstxLazyException] com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </p>; expected </time>.
at [row,col {unknown-source}]: [1,41253]
at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.lambda$computeConversionResources$1(ContentBodyConversionManagerImpl.java:110)
at com.atlassian.confluence.api.impl.ReadOnlyAndReadWriteTransactionConversionTemplate.executeInReadWrite(ReadOnlyAndReadWriteTransactionConversionTemplate.java:65)
at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.computeConversionResources(ContentBodyConversionManagerImpl.java:97)
at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.convert(ContentBodyConversionManagerImpl.java:90)
at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionServiceImpl.convert(ContentBodyConversionServiceImpl.java:65)
at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionServiceImpl.convert(ContentBodyConversionServiceImpl.java:54)
at com.atlassian.confluence.content.apisupport.ContentCreator.lambda$setContentBodyOnEntity$0(ContentCreator.java:388)
at java.util.Optional.map(Optional.java:215)
(...)
Caused by: com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </p>; expected </time>.
at [row,col {unknown-source}]: [1,41713]
at com.ctc.wstx.sr
Cause
The root cause can change depending on what type of content is broken. In the following example, we're treating a broken macro.
An open tag in the source of the page breaks the macro. Looking into the browser element (
right-click >> Inspect Elements
) for the "Unknown macro", we see the
data-macro-body
value as:
%3Cimg+class%3D%22wysiwyg-unknown-macro%22+src%3D%22%2Fconf594%2Fplugins%2Fservlet%2Fconfluence%2Fplaceholder%2Funknown-macro%3Fname%3Dcard%26amp%3Blocale%3Den_GB%26amp%3Bversion%3D2%22+data-macro-name%3D%22card%22+data-macro-id%3D%2235539946-def8-4844-8774-a5e9a5ed08e6%22+data-macro-parameters%3D%22label%3Dtest+1%22+data-macro-schema-version%3D%221%22+data-macro-body%3D%22%253Cp%253Efgsfgfg%253C%252Fp%253E%22%3E%3Cimg+class%3D%22wysiwyg-unknown-macro%22+src%3D%22%2Fconf594%2Fplugins%2Fservlet%2Fconfluence%2Fplaceholder%2Funknown-macro%3Fname%3Dcard%26amp%3Blocale%3Den_GB%26amp%3Bversion%3D2%22+data-macro-name%3D%22card%22+data-macro-id%3D%22c4d0d298-497c-4acd-abcd-acf7faac4168%22+data-macro-parameters%3D%22label%3Dtest+2%22+data-macro-schema-version%3D%221%22+data-macro-body%3D%22%253Cp%253Efgsfgdffdgffgs%253C%252Fp%253E%22%3E%3Cimg+class%3D%22wysiwyg-unknown-macro%22+src%3D%22%2Fconf594%2Fplugins%2Fservlet%2Fconfluence%2Fplaceholder%2Funknown-macro%3Fname%3Dcard%26amp%3Blocale%3Den_GB%26amp%3Bversion%3D2%22+data-macro-name%3D%22card%22+data-macro-id%3D%22606070a5-944c-4c6c-9b3f-dc759396d715%22+data-macro-parameters%3D%22label%3Dtest+3%22+data-macro-schema-version%3D%221%22+data-macro-body%3D%22%253Cp%253Edsgsgfdg%253C%252Fp%253E%22%3E
When we use
a URL decoder
to convert all the symbol codes, we get this:
<img class="wysiwyg-unknown-macro" src="/conf594/plugins/servlet/confluence/placeholder/unknown-macro?name=card&locale=en_GB&version=2" data-macro-name="card" data-macro-id="35539946-def8-4844-8774-a5e9a5ed08e6" data-macro-parameters="label=test 1" data-macro-schema-version="1" data-macro-body="%3Cp%3Efgsfgfg%3C%2Fp%3E">
<img class="wysiwyg-unknown-macro" src="/conf594/plugins/servlet/confluence/placeholder/unknown-macro?name=card&locale=en_GB&version=2" data-macro-name="card" data-macro-id="c4d0d298-497c-4acd-abcd-acf7faac4168" data-macro-parameters="label=test 2" data-macro-schema-version="1" data-macro-body="%3Cp%3Efgsfgdffdgffgs%3C%2Fp%3E">
<img class="wysiwyg-unknown-macro" src="/conf594/plugins/servlet/confluence/placeholder/unknown-macro?name=card&locale=en_GB&version=2" data-macro-name="card" data-macro-id="606070a5-944c-4c6c-9b3f-dc759396d715" data-macro-parameters="label=test 3" data-macro-schema-version="1" data-macro-body="%3Cp%3Edsgsgfdg%3C%2Fp%3E">
We can see for each
<img>
tag that is opened, there is no closing tag for it. This is why Confluence throws an error claiming it expected the
</img>
close tag. If we quickly replace the
data-macro-body
in the browser console to include a closing tag so that it looks like the code below, the page can save just fine:
<img class="wysiwyg-unknown-macro" src="/conf594/plugins/servlet/confluence/placeholder/unknown-macro?name=card&locale=en_GB&version=2" data-macro-name="card" data-macro-id="35539946-def8-4844-8774-a5e9a5ed08e6" data-macro-parameters="label=test 1" data-macro-schema-version="1" data-macro-body="%3Cp%3Efgsfgfg%3C%2Fp%3E"/>
<img class="wysiwyg-unknown-macro" src="/conf594/plugins/servlet/confluence/placeholder/unknown-macro?name=card&locale=en_GB&version=2" data-macro-name="card" data-macro-id="c4d0d298-497c-4acd-abcd-acf7faac4168" data-macro-parameters="label=test 2" data-macro-schema-version="1" data-macro-body="%3Cp%3Efgsfgdffdgffgs%3C%2Fp%3E"/>
<img class="wysiwyg-unknown-macro" src="/conf594/plugins/servlet/confluence/placeholder/unknown-macro?name=card&locale=en_GB&version=2" data-macro-name="card" data-macro-id="606070a5-944c-4c6c-9b3f-dc759396d715" data-macro-parameters="label=test 3" data-macro-schema-version="1" data-macro-body="%3Cp%3Edsgsgfdg%3C%2Fp%3E"/>
Solution
After identifying the problem content, we have some options on how to resolve it:
-
Check the error, identify the broken content, and fix it.
-
Install the third-party add-on that provides the macro or enable the add-on if you already have it installed.
-
Remove the "Unknown macro" from the page.
If further assistance is required, please, reach out to
Atlassian Support
.