spring boot app in tomcat container - onComplete is not called after onError

16 views Asked by At

i've a similar situation as this bug https://bz.apache.org/bugzilla/show_bug.cgi?id=68227

for me the onComplete does not get called after a call to onError when running in a tomcat container. works fine in embedded mode.

I tried with tomcat 10.1.18, same issue.

here is the stack trace onError:

15-02-2024 20:55:28.995 [https-jsse-nio2-8443-exec-6] [https-jsse-nio2-8443-exec-6] ERROR c.f.webapi.library.XCloudSubFactory - **onError**
java.io.IOException: Broken pipe
        at java.base/sun.nio.ch.FileDispatcherImpl.write0(Native Method)
        at java.base/sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:62)
        at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:132)
        at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:97)
        at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:60)
        at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.implWrite(UnixAsynchronousSocketChannelImpl.java:713)
        at java.base/sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:382)
        at java.base/sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:387)
        at org.apache.tomcat.util.net.SecureNio2Channel$FutureWrite.wrap(SecureNio2Channel.java:905)
        at org.apache.tomcat.util.net.SecureNio2Channel$FutureWrite.<init>(SecureNio2Channel.java:843)
        at org.apache.tomcat.util.net.SecureNio2Channel.write(SecureNio2Channel.java:920)
        at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper.doWrite(Nio2Endpoint.java:1261)
        at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:764)
        at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:728)
        at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper.flushBlocking(Nio2Endpoint.java:1304)
        at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:712)
        at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.flush(Http11OutputBuffer.java:566)
        at org.apache.coyote.http11.filters.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:157)
        at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:220)
        at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1245)
        at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:400)
        at org.apache.coyote.Response.action(Response.java:208)
        at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:301)
        at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:267)
        at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:120)
        at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.flush(OnCommittedResponseWrapper.java:524)
        at java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:320)
        at java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160)
        at java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248)
        at org.springframework.util.StreamUtils.copy(StreamUtils.java:138)
        at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:126)
        at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:44)
        at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:225)
        at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.sendInternal(ResponseBodyEmitterReturnValueHandler.java:211)
        at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.send(ResponseBodyEmitterReturnValueHandler.java:204)
        at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.sendInternal(ResponseBodyEmitter.java:204)
        at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send(ResponseBodyEmitter.java:198)
        at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:127)
        at com.fenicsmd.webapi.library.XCloudSubFactory.send(XCloudSubFactory.java:481)
        at com.fenicsmd.webapi.library.XCloudSubFactory$3.messageCallback(XCloudSubFactory.java:424)
        at com.bgc.bgc2.messaging.api.xcloud.CacheAndUpdateSubscriber$UpdateSubscriber.messageCallback(CacheAndUpdateSubscriber.java:144)
        at com.bgc.bgc2.messaging.api.DirectMessageTopicDispatcher.onReceive(DirectMessageTopicDispatcher.java:39)
        at com.solacesystems.jcsmp.impl.flow.FlowHandleImpl.triggerAsyncDelivery(FlowHandleImpl.java:1706)
        at com.solacesystems.jcsmp.protocol.nio.impl.ConsumerMessageNotification.handleNotification(ConsumerMessageNotification.java:23)
        at com.solacesystems.jcsmp.protocol.nio.impl.ConsumerNotificationDispatcher.eventLoop(ConsumerNotificationDispatcher.java:112)
        at com.solacesystems.jcsmp.protocol.nio.impl.ConsumerNotificationDispatcher.run(ConsumerNotificationDispatcher.java:130)
        at java.base/java.lang.Thread.run(Thread.java:833)
0

There are 0 answers