Any time line for removing synchronization block in SSLFilter? On Sat, 10 Feb, 2024, 9:48 pm Emmanuel Lécharny, <[email protected]> wrote:
> Netty is not Apache, but Eclipse. > > We are discussing the error at the moment, trying to move away the > SSLFilter synchronized block. > > On 10/02/2024 08:10, Kishore Mokkarala wrote: > > 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, <[email protected] > > <mailto:[email protected]>> 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 > > <[email protected] <mailto:[email protected]>> > > > wrote: > > > > > >> Any response would be greatly appreciated. > > >> ------------------------------------------ > > >> M.V.S.Kishore > > >> 91-9886412814 > > >> > > >> > > >> On Wed, 31 Jan 2024 at 22:17, Kishore Mokkarala > > <[email protected] <mailto:[email protected]>> > > >> 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 > > [email protected] <mailto:[email protected]> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > <mailto:[email protected]> > > For additional commands, e-mail: [email protected] > > <mailto:[email protected]> > > > > -- > *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 > [email protected] >
