Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Incomplete
-
2.0.4
-
None
-
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)
Description
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)
//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;