[ https://issues.apache.org/jira/browse/DIRMINA-1176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17821229#comment-17821229 ]
Jonathan Valliere edited comment on DIRMINA-1176 at 2/27/24 1:16 PM: --------------------------------------------------------------------- [~elecharny] the hard limit was to prevent memory leaks which would normally be handled by the max enqueued messages on the IoSession. The idea here is that we want to perform flow control at the SSL and not waste CPU cycles encrypting messages which will simply be queued for write because the writer speed is exceeding the reader. A perfect example of this is: if you want to download a 5GB file, you don't encrypt the entire file then write to the socket, you grab pieces of it. was (Author: johnnyv): [~elecharny] the hard limit was to prevent memory leaks which would normally be handled by the max enqueued messages on the IoSession. The idea here is that we want to perform flow control at the SSL and not waste CPU cycles encrypting messages which will simply be queued for write because the writer speed is exceeding the reader. > Buffer overflow exception when writing messages over SSL > --------------------------------------------------------- > > Key: DIRMINA-1176 > URL: https://issues.apache.org/jira/browse/DIRMINA-1176 > Project: MINA > Issue Type: Bug > Components: Filter > Affects Versions: 2.2.1, 2.2.3 > Reporter: Eissam Yassin > Priority: Critical > > Hello, > When many messages written over SSL we get BufferOverflowException exception: > > {noformat} > 0831_07:00:31.831, "Io Exception in Em<->Gw connection named 'GW'", [INFO], > T@113, T:ctm.COMM_EM.113, , , COMM_EM, > EmDsectProtocolIoHandlare::exceptionCaught, "java.nio.BufferOverflowException > at > org.apache.mina.filter.ssl.SSLHandlerG0.write(SSLHandlerG0.java:339) > at org.apache.mina.filter.ssl.SslFilter.filterWrite(SslFilter.java:380) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:1146) > at > com.bmc.ctms.infra.comm.RawCommunicationLogger.filterWrite(RawCommunicationLogger.java:102) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:1146) > at > org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:332) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:1146) > at > org.apache.mina.filter.executor.ExecutorFilter.filterWrite(ExecutorFilter.java:595) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:49) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:1146) > at > org.apache.mina.core.filterchain.IoFilterAdapter.filterWrite(IoFilterAdapter.java:138) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:753) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:746) > at > org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:575) > at > org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:520) > at > com.bmc.ctms.ctminfra.protocols.emdsect.EmGwProtocolManager.write(EmGwProtocolManager.java:513) > at > com.bmc.ctms.ctminfra.protocols.emdsect.EmGwProtocolManager.write(EmGwProtocolManager.java:473) > at > com.bmc.ctms.ctminfra.protocols.emdsect.EmGwProtocolManager.writeWithoutExceptions(EmGwProtocolManager.java:448) > at > com.bmc.ctms.common.services.Service.handleResponse(Service.java:245) > at > com.bmc.ctms.ctmce.Download$SlaveService.handleResponse(Download.java:251) > at > com.bmc.ctms.common.services.Service$3.handleEvent(Service.java:358) > at > com.bmc.ctms.infra.EventDispatcher$EventEntry.handleSubscriberEntryEvent(EventDispatcher.java:687) > at > com.bmc.ctms.infra.EventDispatcher$EventEntry.publishByUniqeID(EventDispatcher.java:673) > at > com.bmc.ctms.infra.EventDispatcher$EventEntry.publish(EventDispatcher.java:694) > at > com.bmc.ctms.infra.EventDispatcher.publish(EventDispatcher.java:194) > at com.bmc.ctms.infra.EventDispatcher.publish(EventDispatcher.java:154) > at > com.bmc.ctms.common.Ipc2EventAdapter.handleIpcGtwMsg(Ipc2EventAdapter.java:206) > at > com.bmc.ctms.common.Ipc2EventAdapter$1.handleEvent(Ipc2EventAdapter.java:41) > at > com.bmc.ctms.infra.EventDispatcher$EventEntry.handleSubscriberEntryEvent(EventDispatcher.java:687) > at > com.bmc.ctms.infra.EventDispatcher$EventEntry.handleSubscribersEntryEvent(EventDispatcher.java:733) > at > com.bmc.ctms.infra.EventDispatcher$EventEntry.publish(EventDispatcher.java:701) > at > com.bmc.ctms.infra.EventDispatcher.publish(EventDispatcher.java:194) > at com.bmc.ctms.infra.EventDispatcher.publish(EventDispatcher.java:154) > at > com.bmc.ctms.ctminfra.protocols.ipc.impl.IpcProtocolIoHandlare.messageReceived(IpcProtocolIoHandlare.java:80) > at > com.bmc.ctms.infra.comm.impl.CommunicationMsgHandler.messageReceived(CommunicationMsgHandler.java:124) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:1015) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:49) > at > org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1128) > at > org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:106) > at org.apache.mina.core.session.IoEvent.run(IoEvent.java:89) > at > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:763) > at > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:755) > at > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:695) > at java.base/java.lang.Thread.run(Thread.java:833){noformat} > This issues produced when using Java 11 and Java 17 on Linux. > > Thanks in advanced, > Eissam Yassin -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org For additional commands, e-mail: dev-h...@mina.apache.org