We had to revert mina version to 2.0.25 from 2.2.1 to make it work in production and trying for other alternatives like apache netty.
On Fri, 9 Feb, 2024, 1:59 pm Emmanuel Lécharny, <elecha...@gmail.com> wrote: > Hi Jonathan, > > in this very case, I think there is a race condition when using the > SSLFilter in conjonction with the StateMachine filter. > > On 09/02/2024 05:33, Jonathan Valliere wrote: > > No, you should not have to create multiple instances. The necessary > > stateful data is saved to the Connection. > > > > > > On Feb 1, 2024 at 5:22:36 AM, Kishore Mokkarala <kishore....@gmail.com> > > wrote: > > > >> Any response would be greatly appreciated. > >> ------------------------------------------ > >> M.V.S.Kishore > >> 91-9886412814 > >> > >> > >> On Wed, 31 Jan 2024 at 22:17, Kishore Mokkarala <kishore....@gmail.com> > >> wrote: > >> > >> Hi Emmanuel, > >> > >> > >> Do we need to create a new instance of SSLFilter per tcp ip connection > or > >> > >> can we reuse it ? > >> > >> > >> For example, do we need to repeat the same code for each tcp ip > connection > >> > >> ? > >> > >> > >> *Approach 1:* > >> > >> for(int i=0;i< 500;i++) > >> > >> { > >> > >> NioSocketConnector connector = new NioSocketConnector(); > >> > >> connector.getFilterChain().addLast("LoggingFilter", > >> > >> G10CaptureService.loggingFilter); > >> > >> connector.getFilterChain().addLast("codecFilter", > >> > >> G10CaptureService.probeCodecFilter); > >> > >> connector.getFilterChain().addLast("executorFilter", > >> > >> G10CaptureService.executorFilter); > >> > >> connector.getFilterChain().addLast("gpbMessageFilter", > >> > >> G10CaptureService.gpbMessageFilter); > >> > >> connector.getFilterChain().addLast("keepAliveFilter", > >> > >> G10CaptureService.keepAliveFilter); > >> > >> SslFilter sslFilter; > >> > >> try { > >> > >> SSLContext sslContext = TLSUtil.getSSLContext(); > >> > >> sslFilter = new CustomSslFilter(sslContext); > >> > >> connector.getFilterChain().addFirst("sslFilter", sslFilter); > >> > >> } catch (Exception e) { > >> > >> e.printStackTrace(); > >> > >> LOG.error("Exception during creating SSL context..." + > >> > >> XError.getStackTrace(e)); > >> > >> } > >> > >> //io handler creation > >> > >> StateMachine stateMachine = > >> > >> StateMachineFactory.getInstance(IoHandlerTransition.class).create( > >> > >> G10MinaClient.CONNECTED, new G10MinaClient(processor)); > >> > >> > >> IoHandler ioHandler = new > >> > >> StateMachineProxyBuilder().setStateContextLookup( > >> > >> new IoSessionStateContextLookup(new > StateContextFactory() { > >> > >> @Override > >> > >> public StateContext create() { > >> > >> final G10StateContext stateContext = new > >> > >> G10StateContext(); > >> > >> stateContext.setStartedTime(new Date()); > >> > >> LOG.info("G10StateContext initialized at:{} > >> > >> ",System.currentTimeMillis()); > >> > >> return stateContext; > >> > >> } > >> > >> })).create(IoHandler.class, stateMachine); > >> > >> connector.setHandler(ioHandler); > >> > >> connector.connect(primaryAddress); > >> > >> connectFuture.awaitUninterruptibly(); > >> > >> if (connectFuture.isConnected()) { > >> > >> IoSession session = connectFuture.getSession(); > >> > >> // Do something with the session if needed > >> > >> } else { > >> > >> System.err.println("Connection failed for iteration: " + i); > >> > >> } > >> > >> } > >> > >> > >> *Approach 2:* > >> > >> Reuse the generic connector implemented above for opening all TCP/IP > >> > >> connections. > >> > >> //just do the below for getting connections for example > >> > >> NioSocketConnector connector = new NioSocketConnector(); > >> > >> //filter chain creation > >> > >> //add SSLFilter to filer chain > >> > >> > >> for(int i=0;i< 500;i++) > >> > >> { > >> > >> ConnectFuture connectFuture = connector.connect(serverAddress); > >> > >> connectFuture.awaitUninterruptibly(); > >> > >> if (connectFuture.isConnected()) { > >> > >> IoSession session = connectFuture.getSession(); > >> > >> // Do something with the session if needed > >> > >> } else { > >> > >> System.err.println("Connection failed for iteration: " + i); > >> > >> } > >> > >> } > >> > >> > >> Which approach is better ? > >> > >> > >> Regards, > >> > >> ------------------------------------------ > >> > >> M.V.S.Kishore > >> > >> 91-9886412814 > >> > >> > >> > > > > -- > *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 > elecha...@apache.org > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@mina.apache.org > For additional commands, e-mail: users-h...@mina.apache.org > >