We have encountered a very challenging issue when running in a production environment using Java 8 and Tomcat 9.5:
- Global Settings
- Logging profile: DEFAULT_LOGGING
- Request logging:
- Enable request logging: true
- Log Request bodies: true
- Number of characters to log for incoming POST requests: 1024 (default)
- Log Request Headers: true
- The application starts to fail on any interaction where http POST is used:
- Server Status, System status, check enable all statistics, checkbox disabled
- Contact information, edit phone number, press save → Stream closed
- GeoServer Logs display fine, click refresh → Stream closed
- Edit global.xml to set values to false, Server Status, press Reload → Stream closed
- global.xml values restored to true
Example:
12 023 02:23:16 ERROR [geoserver.rest] - java.io.IOException: Stream closed
java.io.UncheckedIOException: java.io.IOException: Stream closed
at java.io.BufferedReader$1.hasNext(BufferedReader.java:574)
at java.util.Iterator.forEachRemaining(Iterator.java:115)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
at org.geoserver.filters.BufferedRequestWrapper.parseFormBody(BufferedRequestWrapper.java:160)
at org.geoserver.filters.BufferedRequestWrapper.parseParameters(BufferedRequestWrapper.java:133)
at org.geoserver.filters.BufferedRequestWrapper.getParameter(BufferedRequestWrapper.java:89)
...
Caused by: java.io.IOException: Stream closed
at org.apache.catalina.connector.InputBuffer.throwIfClosed(InputBuffer.java:546)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:345)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:158)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
...
|