[Geoserver-devel] [JIRA] (GEOS-7833) Monitoring with body logging enabled breaks servlets/handlers using request.getReader()

Andrea Aime [Administrator] created an issue

GeoServer / BugGEOS-7833

Monitoring with body logging enabled breaks servlets/handlers using request.getReader()

Issue Type:

BugBug

Assignee:

Unassigned

Components:

Monitoring

Created:

03/Nov/16 2:06 PM

Priority:

MediumMedium

Reporter:

Andrea Aime [Administrator]

If any servlet/handler calls getReader and body logging is enabled then a stack trace like the following will appear:

25D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - getReader() has already been called for this request</h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u>getReader() has already been called for this request</u></p><p><b>description</b> <u>The server encountered an internal error that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>java.lang.IllegalStateException: getReader() has already been called for this request
	org.apache.catalina.connector.Request.getInputStream(Request.java:1080)
	org.apache.catalina.connector.RequestFacade.getInputStream(RequestFacade.java:367)
	javax.servlet.ServletRequestWrapper.getInputStream(ServletRequestWrapper.java:131)
	javax.servlet.ServletRequestWrapper.getInputStream(ServletRequestWrapper.java:131)
	javax.servlet.ServletRequestWrapper.getInputStream(ServletRequestWrapper.java:131)
	javax.servlet.ServletRequestWrapper.getInputStream(ServletRequestWrapper.java:131)
	org.geoserver.monitor.MonitorServletRequest.getInputStream(MonitorServletRequest.java:48)
	org.geoserver.monitor.MonitorServletRequest.getBodyContent(MonitorServletRequest.java:32)
	org.geoserver.monitor.MonitorFilter.getBody(MonitorFilter.java:214)
	org.geoserver.monitor.MonitorFilter.doFilter(MonitorFilter.java:147)
	org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)

This is because monitoring only buffers getInputStream but delegates getReader to its base class

Add Comment

Add Comment

This message was sent by Atlassian JIRA (v1000.499.3#100018-sha1:45440bd)

Atlassian logo