[MAGNOLIA-9284] Unicode character cannot be encoded as it is outside the permitted range Created: 31/Jan/24  Updated: 06/Feb/24

Status: Open
Project: Magnolia
Component/s: None
Affects Version/s: 6.2.42
Fix Version/s: None

Type: Bug Priority: Neutral
Reporter: David Wei Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File 银色表带.png    
Issue Links:
relation
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:
Team: Nucleus

 Description   

There are certain situations which characters sets, such as asian sets, where we are seeing a stack trace in the log (catalina.out) originating from tomcat.

Reproduce

  • Enable UTF-8 in magnolia property file.
     magnolia.utf8.enabled=true 
  • Upload a image with Chinese name. For example:
  • Try to request the image using a direct link --> http://localhost:8080/magnoliaAuthor/test/银色表带.png
  • Check the catalina.out. Note: this trace cannot be seen from Log Tools app or any of the log files in MAGNOLIA_HOME/logs.

Actual
Stack Trace produce in catalina.out.

31-Jan-2024 14:14:21.219 WARNING [http-nio-8080-exec-6] org.apache.coyote.http11.Http11Processor.prepareResponse The HTTP response header [Content-Disposition] with value [attachment; filename="银色表带.png"] has been removed from the response because it is invalid
	java.lang.IllegalArgumentException: The Unicode character [银] at code point [38,134] cannot be encoded as it is outside the permitted range of 0 to 255
		at org.apache.tomcat.util.buf.MessageBytes.toBytesSimple(MessageBytes.java:310)
		at org.apache.tomcat.util.buf.MessageBytes.toBytes(MessageBytes.java:283)
		at org.apache.coyote.http11.Http11OutputBuffer.write(Http11OutputBuffer.java:389)
		at org.apache.coyote.http11.Http11OutputBuffer.sendHeader(Http11OutputBuffer.java:368)
		at org.apache.coyote.http11.Http11Processor.prepareResponse(Http11Processor.java:1048)
		at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:376)
		at org.apache.coyote.Response.action(Response.java:207)
		at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:187)
		at org.apache.coyote.Response.doWrite(Response.java:606)
		at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:335)
		at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:777)
		at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:680)
		at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:383)
		at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:361)
		at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97)
		at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1488)
		at org.apache.commons.io.IOUtils.copy(IOUtils.java:1107)
		at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1460)
		at info.magnolia.dam.core.download.DamDownloadServlet.handleResourceRequest(DamDownloadServlet.java:188)
		at info.magnolia.dam.core.download.DamDownloadServlet.process(DamDownloadServlet.java:131)
		at info.magnolia.dam.core.download.DamDownloadServlet.doGet(DamDownloadServlet.java:106)
		at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
		at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
		at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:148)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:75)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
		at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66)
		at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:164)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:85)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.virtualuri.VirtualUriFilter.doFilter(VirtualUriFilter.java:108)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:80)
		at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.multisite.filters.CrossSiteSecurityFilter.doFilter(CrossSiteSecurityFilter.java:104)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cors.AbstractCorsFilter.doFilter(AbstractCorsFilter.java:77)
		at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
		at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:79)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:86)
		at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94)
		at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.module.site.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:115)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.multisite.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:120)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:128)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:92)
		at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.filters.UnicodeNormalizationFilter.doFilter(UnicodeNormalizationFilter.java:89)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.MultipartRequestFilter.doFilter(MultipartRequestFilter.java:164)
		at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:90)
		at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
		at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:155)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:128)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
		at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:75)
		at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
		at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107)
		at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67)
		at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110)
		at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
		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:834)

Expected
No stack trace from the request.


Generated at Mon Feb 12 04:40:16 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.