You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Alexander B (Jira)" <ji...@apache.org> on 2023/04/19 09:52:00 UTC

[jira] [Updated] (DIRMINA-1171) DatagramAcceptor and their Sessions

     [ https://issues.apache.org/jira/browse/DIRMINA-1171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexander B updated DIRMINA-1171:
---------------------------------
    Description: 
Hello,

I am using two independently created NioDatagramAcceptors, which are created by the following code :

{code:java}
AbstractIoService inputSource = new NioDatagramAcceptor();
((NioDatagramAcceptor) inputSource).getSessionConfig().setReuseAddress(true);
DefaultIoFilterChainBuilder filterChainBuilderUDP = ((NioDatagramAcceptor)inputSource).getFilterChain();
filterChainBuilderUDP.addLast("logger", new LoggingFilter());

((NioDatagramAcceptor) inputSource).getSessionConfig().setIdleTime(IdleStatus.READER_IDLE, getIdleTimeout());
((NioDatagramAcceptor) inputSource).setHandler(this);
try {
	((NioDatagramAcceptor)inputSource).bind(new InetSocketAddress(port));
} catch (IOException e) {
	log.error("Failed to connect {}", e);
}
{code}



One Acceptor is listening on port 9800, the other one on 9801. If I now send UDP packages (from a external application) to both ports (independently). It seems, that the received messages is randomly handled on session1 and session2.

Information: The external app is sending:
Message "TEST_1" just to port 9800
Message "TEST_2" just to port 9801

The overrided method messageReceived will give the following output:

{code:java}
public void messageReceived(IoSession session, Object message) throws Exception {
		String msgStr = message.toString();
		log.info("SessionId:" + session.getId() + " " + msgStr);
}
{code}

2023-04-19_09:34:43.629 [NioDatagramAcceptor-2] INFO - SessionId:1 TEST_1
2023-04-19_09:34:43.629 [NioDatagramAcceptor-3] INFO - SessionId:1 TEST_2
2023-04-19_09:34:47.415 [NioDatagramAcceptor-2] INFO - SessionId:2 TEST_1
2023-04-19_09:34:47.415 [NioDatagramAcceptor-3] INFO - SessionId:2 TEST_2

So either it seems, that this happens randomly or crosswise (each message from each port n-times to all sessions)

I can not see this effect while using `NioSocketConnector`. Is there anything I did not mention in the context of UDP/DatagramAcceptor?

  was:
Hello,

I am using two independently created NioDatagramAcceptors, which are created by the following code :

{code:java}
AbstractIoService inputSource = new NioDatagramAcceptor();
((NioDatagramAcceptor) inputSource).getSessionConfig().setReuseAddress(true);
DefaultIoFilterChainBuilder filterChainBuilderUDP = ((NioDatagramAcceptor)inputSource).getFilterChain();
filterChainBuilderUDP.addLast("logger", new LoggingFilter());

((NioDatagramAcceptor) inputSource).getSessionConfig().setIdleTime(IdleStatus.READER_IDLE, getIdleTimeout());
((NioDatagramAcceptor) inputSource).setHandler(this);
try {
	((NioDatagramAcceptor)inputSource).bind(new InetSocketAddress(port));
} catch (IOException e) {
	log.error("Failed to connect {}", e);
}

One Acceptor is listening on port 9800, the other one on 9801. If I now send UDP packages (from a external application) to both ports (independently). It seems, that the received messages is randomly handled on session1 and session2.

Information: The external app is sending:
Message "TEST_1" just to port 9800
Message "TEST_2" just to port 9801

The overrided method messageReceived will give the following output:

{code:java}
public void messageReceived(IoSession session, Object message) throws Exception {
		String msgStr = message.toString();
		log.info("SessionId:" + session.getId() + " " + msgStr);
}

2023-04-19_09:34:43.629 [NioDatagramAcceptor-2] INFO - SessionId:1 TEST_1
2023-04-19_09:34:43.629 [NioDatagramAcceptor-3] INFO - SessionId:1 TEST_2
2023-04-19_09:34:47.415 [NioDatagramAcceptor-2] INFO - SessionId:2 TEST_1
2023-04-19_09:34:47.415 [NioDatagramAcceptor-3] INFO - SessionId:2 TEST_2

So either it seems, that this happens randomly or crosswise (each message from each port n-times to all sessions)

I can not see this effect while using `NioSocketConnector`. Is there anything I did not mention in the context of UDP/DatagramAcceptor?


> DatagramAcceptor and their Sessions
> -----------------------------------
>
>                 Key: DIRMINA-1171
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1171
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.5
>         Environment: Win10, Adopt OpenJDK 8
>            Reporter: Alexander B
>            Priority: Major
>
> Hello,
> I am using two independently created NioDatagramAcceptors, which are created by the following code :
> {code:java}
> AbstractIoService inputSource = new NioDatagramAcceptor();
> ((NioDatagramAcceptor) inputSource).getSessionConfig().setReuseAddress(true);
> DefaultIoFilterChainBuilder filterChainBuilderUDP = ((NioDatagramAcceptor)inputSource).getFilterChain();
> filterChainBuilderUDP.addLast("logger", new LoggingFilter());
> ((NioDatagramAcceptor) inputSource).getSessionConfig().setIdleTime(IdleStatus.READER_IDLE, getIdleTimeout());
> ((NioDatagramAcceptor) inputSource).setHandler(this);
> try {
> 	((NioDatagramAcceptor)inputSource).bind(new InetSocketAddress(port));
> } catch (IOException e) {
> 	log.error("Failed to connect {}", e);
> }
> {code}
> One Acceptor is listening on port 9800, the other one on 9801. If I now send UDP packages (from a external application) to both ports (independently). It seems, that the received messages is randomly handled on session1 and session2.
> Information: The external app is sending:
> Message "TEST_1" just to port 9800
> Message "TEST_2" just to port 9801
> The overrided method messageReceived will give the following output:
> {code:java}
> public void messageReceived(IoSession session, Object message) throws Exception {
> 		String msgStr = message.toString();
> 		log.info("SessionId:" + session.getId() + " " + msgStr);
> }
> {code}
> 2023-04-19_09:34:43.629 [NioDatagramAcceptor-2] INFO - SessionId:1 TEST_1
> 2023-04-19_09:34:43.629 [NioDatagramAcceptor-3] INFO - SessionId:1 TEST_2
> 2023-04-19_09:34:47.415 [NioDatagramAcceptor-2] INFO - SessionId:2 TEST_1
> 2023-04-19_09:34:47.415 [NioDatagramAcceptor-3] INFO - SessionId:2 TEST_2
> So either it seems, that this happens randomly or crosswise (each message from each port n-times to all sessions)
> I can not see this effect while using `NioSocketConnector`. Is there anything I did not mention in the context of UDP/DatagramAcceptor?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org