Details
-
Bug
-
Resolution: Fixed
-
Low
-
8.0.0
-
Severity 3 - Minor
-
2
-
Description
Issue Summary
Page fails to save when with a large amount of text (see below attached sample).
This is reproducible on Data Center: yes
Steps to Reproduce
- Create a new page in Confluence
- Open the attached file in a text editor
large_page_text.txt - Copy the contents of the above text file and paste it directly into the Confluence editor
- Save the page
Expected Results
- The page is published successfully
Actual Results
- The page fails to publish
- The back end atlassian-confluence.log shows this error:
Caused by: javax.xml.stream.XMLStreamException: Maximum entity expansion count limit (100000) exceeded
Full log error2022-12-16 10:52:01,088 WARN [http-nio-6800-exec-9] [confluence.impl.hibernate.ConfluenceHibernateTransactionManager] doRollback Performing rollback. Transactions: ->[com.atlassian.confluence.api.impl.service.content.draft.ContentDraftServiceImpl.publishNewDraft]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT (Session #770301444) -- url: /c800/rest/api/content | userName: admin | referer: http://localhost:6800/c800/pages/createpage.action?spaceKey=PD | traceId: 4241b58bf74213ff 2022-12-16 10:52:01,089 ERROR [http-nio-6800-exec-9] [rest.api.model.ExceptionConverter] convertServiceException No status code found for exception, converting to internal server error : -- url: /c800/rest/api/content | userName: admin | referer: http://localhost:6800/c800/pages/createpage.action?spaceKey=PD | traceId: 4241b58bf74213ff com.atlassian.confluence.api.service.exceptions.ServiceException: java.lang.RuntimeException: javax.xml.stream.XMLStreamException: Maximum entity expansion count limit (100000) exceeded at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.lambda$computeConversionResources$1(ContentBodyConversionManagerImpl.java:109) at com.atlassian.confluence.api.impl.ReadOnlyAndReadWriteTransactionConversionTemplate.executeInReadWrite(ReadOnlyAndReadWriteTransactionConversionTemplate.java:65) at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.computeConversionResources(ContentBodyConversionManagerImpl.java:96) at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.convert(ContentBodyConversionManagerImpl.java:89) 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.base/java.util.Optional.map(Optional.java:265) at com.atlassian.confluence.content.apisupport.ContentCreator.setContentBodyOnEntity(ContentCreator.java:388) at com.atlassian.confluence.content.apisupport.ContentCreator.setCommonPropertiesForCreate(ContentCreator.java:134) at com.atlassian.confluence.api.impl.service.content.typebinding.PageContentTypeApiSupport.create(PageContentTypeApiSupport.java:167) at com.atlassian.confluence.api.impl.service.content.typebinding.PageContentTypeApiSupport.create(PageContentTypeApiSupport.java:47) at com.atlassian.confluence.api.impl.service.content.ContentServiceImpl.createUsingApiSupport(ContentServiceImpl.java:124) at com.atlassian.confluence.api.impl.service.content.ContentServiceImpl.create(ContentServiceImpl.java:111) ... at com.sun.proxy.$Proxy249.create(Unknown Source) at com.atlassian.confluence.api.impl.service.content.draft.LegacyContentDraftServiceImpl.publishNewDraft(LegacyContentDraftServiceImpl.java:60) at com.atlassian.confluence.api.impl.service.content.draft.ContentDraftServiceImpl.publishNewDraft(ContentDraftServiceImpl.java:35) ... at com.sun.proxy.$Proxy255.publishNewDraft(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) at com.sun.proxy.$Proxy451.publishNewDraft(Unknown Source) ... at com.sun.proxy.$Proxy2069.publishNewDraft(Unknown Source) at com.atlassian.confluence.plugins.restapi.resources.ContentResource.createContent(ContentResource.java:218) ... at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.lang.RuntimeException: javax.xml.stream.XMLStreamException: Maximum entity expansion count limit (100000) exceeded at org.codehaus.stax2.ri.evt.Stax2FilteredEventReader.hasNext(Stax2FilteredEventReader.java:60) at com.atlassian.confluence.content.render.xhtml.XmlFragmentEventReader.hasNext(XmlFragmentEventReader.java:42) at com.atlassian.confluence.content.render.xhtml.XmlFragmentBodyEventReader.hasNext(XmlFragmentBodyEventReader.java:36) at com.atlassian.confluence.content.render.xhtml.transformers.DefaultFragmentTransformer.transform(DefaultFragmentTransformer.java:116) at com.atlassian.confluence.plugins.hipchat.emoticons.marshalling.EmoticonTransformerBase.transform(EmoticonTransformerBase.java:60) at com.atlassian.confluence.plugins.hipchat.emoticons.marshalling.EmoticonTransformerEditorToStorage.transform(EmoticonTransformerEditorToStorage.java:37) at com.atlassian.confluence.content.render.xhtml.TransformerChain.transform(TransformerChain.java:33) at com.atlassian.confluence.content.render.xhtml.PluggableTransformerChain.transform(PluggableTransformerChain.java:39) at com.atlassian.confluence.content.render.xhtml.editor.DefaultEditorConverter.convert(DefaultEditorConverter.java:37) at com.atlassian.confluence.content.render.xhtml.DefaultFormatConverter.convertToStorageFormat(DefaultFormatConverter.java:123) at com.atlassian.confluence.content.render.xhtml.DefaultFormatConverter.validateAndConvertToStorageFormat(DefaultFormatConverter.java:73) at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.computeConvertedValue(ContentBodyConversionManagerImpl.java:163) at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.lambda$computeConversionResources$0(ContentBodyConversionManagerImpl.java:104) at com.atlassian.confluence.api.impl.service.content.ThreadlocalWebResourceDependenciesRecorder.record(ThreadlocalWebResourceDependenciesRecorder.java:95) at com.atlassian.confluence.api.impl.service.content.ContentBodyConversionManagerImpl.lambda$computeConversionResources$1(ContentBodyConversionManagerImpl.java:98) ... 406 more Caused by: javax.xml.stream.XMLStreamException: Maximum entity expansion count limit (100000) exceeded at com.ctc.wstx.sr.StreamScanner.constructLimitViolation(StreamScanner.java:2479) at com.ctc.wstx.sr.StreamScanner.verifyLimit(StreamScanner.java:2472) at com.ctc.wstx.sr.StreamScanner.expandEntity(StreamScanner.java:1689) at com.ctc.wstx.sr.StreamScanner.expandEntity(StreamScanner.java:1643) at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java:1575) at com.ctc.wstx.sr.BasicStreamReader.readTextSecondary(BasicStreamReader.java:4786) at com.ctc.wstx.sr.BasicStreamReader.finishToken(BasicStreamReader.java:3810) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1131) at com.ctc.wstx.evt.WstxEventReader.peek(WstxEventReader.java:392) at org.codehaus.stax2.ri.evt.Stax2FilteredEventReader.peek(Stax2FilteredEventReader.java:107) at org.codehaus.stax2.ri.evt.Stax2FilteredEventReader.hasNext(Stax2FilteredEventReader.java:58) ... 420 more
The issue could not be reproduced on Confluence 7.19.0
Workaround
N/A