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]
>

Reply via email to