[ 
https://issues.apache.org/jira/browse/DIRMINA-714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12715410#action_12715410
 ] 

ncanis2 edited comment on DIRMINA-714 at 6/2/09 1:11 AM:
---------------------------------------------------------

Thank you for your reply. But I have still something bug.

===========================================================================

After I read this, received newest source from svn(mina).

But, I had problem in heavy load server.

This is server log
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=140, 
protocol=14
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=141, 
protocol=13
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=142, 
protocol=14
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=144, 
protocol=19

This is client log
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=13, seq=141
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=14, seq=142
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=19, seq=144
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=14, seq=143


in Server.
If I send 141,142,143,144,    I receive 141,142,144,143  in messageSent method.
So client can't receive right packet from server.

=============================================
This is my encoder source..
- MessageEncoder
        @Override
        public void encode(IoSession session, Object message, 
ProtocolEncoderOutput out)
                        throws Exception {
                RomiMessage msg = (RomiMessage) message;
                IoBuffer buf_in = msg.getBuf();
                IoBuffer buf_out = IoBuffer.allocate(buf_in.limit()+4).sweep();

                buf_out.setAutoExpand(true); // Enable auto-expand for easier 
encoding          
                encodeBody(session,msg, buf_out);               
                buf_out.flip();
                out.write(buf_out);
                msg = null;
        }
=============================================
This is my decoder source..
- MessageDecoder
@Override
        public MessageDecoderResult decodable(IoSession session, IoBuffer in) {
                
                if (in.prefixedDataAvailable(HEADER_SIZE, MAX_LENGTH)) {
                        return MessageDecoderResult.OK;
                } else {
                        return MessageDecoderResult.NEED_DATA;
                }
                // Return NOT_OK if not matches.
                // return MessageDecoderResult.NOT_OK;
        }

        @Override
        public MessageDecoderResult decode(IoSession session, IoBuffer in,
                        ProtocolDecoderOutput out) throws Exception {

                MessageDecoderResult result = decodable(session,in);
                if(result!=MessageDecoderResult.OK) return result;
                
                IoBuffer buf = decodeBody(session, in);
                if (buf == null) {
                        return MessageDecoderResult.NOT_OK;
                } else {
                        out.write(buf);
                }

                return MessageDecoderResult.OK;
        }



      was (Author: ncanis2):
    Thank you for your reply. But I have still something bug.

===========================================================================

After I read this, received newest source from svn(mina).

But, I had problem in heavy load server.

This is server log
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=140, 
protocol=14
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=141, 
protocol=13
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=142, 
protocol=14
[16:51]-S[DemuxRomiDecoder(decodeBody:162)]:Trace Log =MSG Recv seq=144, 
protocol=19

This is client log
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=13, seq=141
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=14, seq=142
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=19, seq=144
[2009-06-02 16:51] ERROR [GameEventFilter(close:108)] :Trace Log =Really MSG 
Sent=> protocol=14, seq=143


in Server.
If I send 141,142,143,144,    I receive 141,142,144,143  in messageSent method.
So client can't receive right packet from server.

=============================================
- MessageEncoder
        @Override
        public void encode(IoSession session, Object message, 
ProtocolEncoderOutput out)
                        throws Exception {
                RomiMessage msg = (RomiMessage) message;
                IoBuffer buf_in = msg.getBuf();
                IoBuffer buf_out = IoBuffer.allocate(buf_in.limit()+4).sweep();

                buf_out.setAutoExpand(true); // Enable auto-expand for easier 
encoding          
                encodeBody(session,msg, buf_out);               
                buf_out.flip();
                out.write(buf_out);
                msg = null;
        }
=============================================
- MessageDecoder
@Override
        public MessageDecoderResult decodable(IoSession session, IoBuffer in) {
                
                if (in.prefixedDataAvailable(HEADER_SIZE, MAX_LENGTH)) {
                        return MessageDecoderResult.OK;
                } else {
                        return MessageDecoderResult.NEED_DATA;
                }
                // Return NOT_OK if not matches.
                // return MessageDecoderResult.NOT_OK;
        }

        @Override
        public MessageDecoderResult decode(IoSession session, IoBuffer in,
                        ProtocolDecoderOutput out) throws Exception {

                MessageDecoderResult result = decodable(session,in);
                if(result!=MessageDecoderResult.OK) return result;
                
                IoBuffer buf = decodeBody(session, in);
                if (buf == null) {
                        return MessageDecoderResult.NOT_OK;
                } else {
                        out.write(buf);
                }

                return MessageDecoderResult.OK;
        }


  
> Packet sequence is unordered in multi thread.
> ---------------------------------------------
>
>                 Key: DIRMINA-714
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-714
>             Project: MINA
>          Issue Type: Bug
>          Components: Filter
>    Affects Versions: 2.0.0-M5
>         Environment: xp
>            Reporter: ncanis2
>             Fix For: 2.0.0-M6
>
>
> Hi.
> Packet sequence is unordered.
> = Server & Client = 
> chain.addLast("codec", new ProtocolCodecFilter(rcf));
> chain.addLast("executor", getExecuteFilter());    => 
> OrderedThreadPoolExecutor c = new OrderedThreadPoolExecutor(20,100);
> If server send 1,2,3,4,5,6 , client receive 1,2,3,4,6  from server.
> Clients : 100.
> where I am wrong? 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to