[
https://issues.apache.org/jira/browse/DIRMINA-1040?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15405593#comment-15405593
]
Silver Cheng commented on DIRMINA-1040:
---------------------------------------
I attached a log which have one additional logging for the mina.
see below
in line 46978, the pos indicated 16, but I don't know why there are 9 bytes
"34 35 00 04 09 32 32 36 32" ahead of the PDU.
{noformat}
#46978: 2016-07-30 21:20:44,492 DEBUG (NioProcessor-2) ()
org.apache.mina.transport.socket.nio.NioProcessor - ***4.0 Enter Mina
NioProcessor write method buf.remaining: HeapBuffer[pos=16 lim=189 cap=189: 34
35 00 04 09 32 32 36 32 00 00 00 BD 00 00 00 05 00 00 00 00 00 01 18 11 00 01
01 31 38 31 36...]; msg: {};
{noformat}
while in line 46980 where we printed both getCurrentWriteMessage and
getCurrentWriteRequest in our app, found the postion is not the same, for
getCurrentWriteMessage, pos is 0; while for getCurrentWriteRequest, the pos is
25.
and in line 46989, localWrittenBytes is 164, which mean only 164 bytes got
written to channel, and we exactly lost the first 25 bytes in the tcpdump.
do you know if we have the thread safe for the buffer or writerequest?
{noformat}
#46980:2016-07-30 21:20:44,492 INFO (Timer-3) ()
com.ipx.cpsmscapis.smpp.NorthSmppAdapter - SmppSystemId=02980,
CompositeUserId=02980, SMPP Session: BindType=[Transceiver],
Transmitter=[Local:127.0.0.1:10001,Remote:127.0.0.1:59638](0x00000BFB: nio
socket, server, /127.0.0.1:59638 => /127.0.0.1:10001). Details -->
CreationTime=Sat Jul 30 10:53:40 PDT 2016, LastIoTime=Sat Jul 30 21:20:44 PDT
2016,
isClosing=false, isConnected=true, isBothIdle=false,
isReaderIdle=false, isReadSuspended=false, isWriterIdle=false,
isWriteSuspended=false,
LastReadTime=Sat Jul 30 21:20:44 PDT 2016, LastReaderIdleTime=Sat Jul
30 10:53:40 PDT 2016, ReaderIdleCount=0, ReadBytes=8964432,
ReadMessages=108521,
LastWriteTime=Sat Jul 30 21:20:44 PDT 2016, LastWriterIdleTime=Sat Jul
30 10:53:40 PDT 2016, WriterIdleCount=0, WrittenBytes=14204045,
WrittenMessages=108521,
CurrentWriteMessage=[null], CurrentWriteRequest=[null],
Receiver=[Local:127.0.0.1:10001,Remote:127.0.0.1:59638](0x00000BFB: nio socket,
server, /127.0.0.1:59638 => /127.0.0.1:10001). Details --> CreationTime=Sat Jul
30 10:53:40 PDT 2016, LastIoTime=Sat Jul 30 21:20:44 PDT 2016,
isClosing=false, isConnected=true, isBothIdle=false,
isReaderIdle=false, isReadSuspended=false, isWriterIdle=false,
isWriteSuspended=false,
LastReadTime=Sat Jul 30 21:20:44 PDT 2016, LastReaderIdleTime=Sat Jul
30 10:53:40 PDT 2016, ReaderIdleCount=0, ReadBytes=8964432,
ReadMessages=108521,
LastWriteTime=Sat Jul 30 21:20:44 PDT 2016, LastWriterIdleTime=Sat Jul
30 10:53:40 PDT 2016, WriterIdleCount=0, WrittenBytes=14204045,
WrittenMessages=108521,
CurrentWriteMessage=[HeapBuffer[pos=0 lim=189 cap=189: 00 00 00 BD 00
00 00 05 00 00 00 00 00 01 18 11 00 01 01 31 38 31 36 39 31 34 35 36 34 39 00
04...]], CurrentWriteRequest=[WriteRequest: HeapBuffer[pos=25 lim=189 cap=189:
34 35 36 34 39 00 04 09 32 32 36 32 32 00 04 00 00 00 00 00 00 00 00 6F 69 64
3A 31 31 36 30 37...]]
{noformat}
{noformat}
#46989: 2016-07-30 21:20:44,492 DEBUG (NioProcessor-2) ()
org.apache.mina.core.polling.AbstractPollingIoProcessor - ***5.0 After
NioProcessor write method, in Mina AbstractPollingIoProcessor writeBuffer
session's localWrittenBytes: 164
{noformat}
> Mina 2.0.4 truncated the PDU
> ----------------------------
>
> Key: DIRMINA-1040
> URL: https://issues.apache.org/jira/browse/DIRMINA-1040
> Project: MINA
> Issue Type: Bug
> Components: Filter
> Affects Versions: 2.0.4
> Environment: Mina 2.0.4 version
> pl-1@ECE8000-Z1 ~ # /usr/java/latest/bin/java -version
> java version "1.6.0_45"
> Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
> Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
> Reporter: Silver Cheng
> Labels: PDU, truncated
> Attachments: Mina-2.0.13-code delta.docx, mina log and tcpdump.zip,
> mina-debug-logging.zip, tcpdump-10001.zip
>
>
> Background:
> our app messaging-server is to handle the SMPP protocol messages, and we use
> Mina 2.0.4 for the lower TCP transport function.
> Problem:
> sometime, not often, I found that the PDU could be truncated by Mina from
> tcpdump. I added some debug loggers to mina codes, and found that indeed the
> PDU truncated is occuring at Mina.
> from below logs, you can see in #3, the buf which got from WriteRequest got
> truncated the first 16 bytes in Mina. could you know if it's a known issue
> in 2.0.4?
> Debug loggers & Logs:
> 1. IoHandler:
> WriteFuture future = iosession.write(deliverSm);
> 2016-07-14 01:52:19,865 DEBUG (62451235@WebForward 0.0.0.0:5001-21)
> (bbfa6690c88ab98aec4e) com.ipx.cpsmscapis.smpp.NorthSmppIoHandler - Sending
> DeliverSM: 00 00 00 be 00 00 00 05 00 00 00 00 00 00 03 02 00 01 01 31 32 30
> 32 34 36 30 38 39 33 33 00 04 09 37 36 32 32 36 35 00 04 00 00 00 00 00 00 00
> 00 6f 69 64 3a 32 31 36 30 37 31 34 30 31 30 30 31 32 34 32 32 38 35 38 20 73
> 75 62 3a 30 30 31 20 64 6c 76 72 64 3a 30 30 31 20 73 75 62 6d 69 74 20 64 61
> 74 65 3a 31 36 30 37 31 34 30 31 35 32 20 64 6f 6e 65 20 64 61 74 65 3a 31 36
> 30 37 31 34 30 31 35 32 20 73 74 61 74 3a 44 45 4c 49 56 52 44 20 65 72 72 3a
> 30 30 30 20 74 65 78 74 3a 04 27 00 01 02 00 1e 00 14 32 31 36 30 37 31 34 30
> 31 30 30 31 32 34 32 32 38 35 38 00
> 2. AbstractIoSession:
> public WriteFuture write(Object message, SocketAddress remoteAddress) {
> if (message == null) {
> throw new IllegalArgumentException("message");
> }
>
> //added by Silver
> if (DEBUG) {
> if
> (message.getClass().getName().equals("org.smpp.pdu.DeliverSM")) {
> LOGGER.debug( "***1 Enter Mina AbstractIoSession write
> method Object message: {};",message);
> }
> }
> 2016-07-14 01:52:19,866 DEBUG (62451235@WebForward 0.0.0.0:5001-21)
> (bbfa6690c88ab98aec4e) org.apache.mina.core.session.AbstractIoSession - ***1
> Enter Mina AbstractIoSession write method Object message: 00 00 00 be 00 00
> 00 05 00 00 00 00 00 00 03 02 00 01 01 31 32 30 32 34 36 30 38 39 33 33 00 04
> 09 37 36 32 32 36 35 00 04 00 00 00 00 00 00 00 00 6f 69 64 3a 32 31 36 30 37
> 31 34 30 31 30 30 31 32 34 32 32 38 35 38 20 73 75 62 3a 30 30 31 20 64 6c 76
> 72 64 3a 30 30 31 20 73 75 62 6d 69 74 20 64 61 74 65 3a 31 36 30 37 31 34 30
> 31 35 32 20 64 6f 6e 65 20 64 61 74 65 3a 31 36 30 37 31 34 30 31 35 32 20 73
> 74 61 74 3a 44 45 4c 49 56 52 44 20 65 72 72 3a 30 30 30 20 74 65 78 74 3a 04
> 27 00 01 02 00 1e 00 14 32 31 36 30 37 31 34 30 31 30 30 31 32 34 32 32 38 35
> 38 00;
> 3. AbstractPollingIoProcessor:
> private int writeBuffer(S session, WriteRequest req,
> boolean hasFragmentation, int maxLength, long currentTime)
> throws Exception {
> IoBuffer buf = (IoBuffer) req.getMessage();
>
> //add by silver
> if (DEBUG) {
> LOGGER.debug( "***3 Mina AbstractPollingIoProcessor writeBuffer
> session's hasFragmentation: {} ; session: {}; ",
> hasFragmentation,session.getCurrentWriteMessage());
> LOGGER.debug( "***3 Mina AbstractPollingIoProcessor writeBuffer
> session's maxWrittenBytes: {} ; buf: {};", maxLength,buf.getHexDump());
> }
> 2016-07-14 01:52:19,866 DEBUG (NioProcessor-3) ()
> org.apache.mina.core.polling.AbstractPollingIoProcessor - ***3 Mina
> AbstractPollingIoProcessor writeBuffer session's maxWrittenBytes: 98304 ;
> buf: 00 01 01 31 32 30 32 34 36 30 38 39 33 33 00 04 09 37 36 32 32 36 35 00
> 04 00 00 00 00 00 00 00 00 6F 69 64 3A 32 31 36 30 37 31 34 30 31 30 30 31 32
> 34 32 32 38 35 38 20 73 75 62 3A 30 30 31 20 64 6C 76 72 64 3A 30 30 31 20 73
> 75 62 6D 69 74 20 64 61 74 65 3A 31 36 30 37 31 34 30 31 35 32 20 64 6F 6E 65
> 20 64 61 74 65 3A 31 36 30 37 31 34 30 31 35 32 20 73 74 61 74 3A 44 45 4C 49
> 56 52 44 20 65 72 72 3A 30 30 30 20 74 65 78 74 3A 04 27 00 01 02 00 1E 00 14
> 32 31 36 30 37 31 34 30 31 30 30 31 32 34 32 32 38 35 38 00;
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)