I removed the following lines in the NotificationThread.java as suggested by
the you in the test setup and tried the same (3 clients + 1 server + 500
notifications) what we done before. We are not getting the notifications
drop every time. But if you try the same 3 or 4 times, then you will get the
notification drops in the client.

Removed lines from the NotificationThread.java
---------------------------------------------------------
buffer.release();
buffer = null;

FYI: the behavior differs in Windows & Linux. In Linux I am getting the
notification drops very often compare than windows. 

Kindly help me to resolve the issue. Thanks.



Trustin Lee wrote:
> 
> It's unlikely that MINA misses any data unless there's disconnection.
> 
> It might be because you are releasing the buffer unnecessarily.
> Please remove the two lines (buffer.release() and buffer = null).
> Also, make sure no exception is caught in your IoHandler
> implementation.
> 
> There's also possibility you are not taking care of TCP/IP packet
> fragmentation in NotificationObject.getObject(...) (i.e. two messages
> are received in one ByteBuffer.)
> 
> Trustin
> 
> On Dec 11, 2007 11:11 PM, AmalRaj P <[EMAIL PROTECTED]> wrote:
>>
>> In my project I am using MINA framework for notification, with multiple
>> clients in place I faced packet loss issues.
>>
>> Then I planned to setup a sample environment with a server and three
>> clients
>> connected to it.
>>
>> Server:
>>
>> Will publish numbers generated in loop to all clients
>> connected/registered
>>
>> public void run()
>>     {
>>         IoSession session = null;
>>         int j = 0;
>>         while (j < 500)
>>         {
>>             for (int i = 0; i < sessions.size(); i++)
>>             {
>>                 String msg = "For client " + i + " value sent is:" + j;
>>                 System.out.println(msg);
>>                 byte data[] = NotificationObject.getBytes(new
>> String(msg));
>>                 ByteBuffer buffer = ByteBuffer.wrap(data);
>>                 session = (IoSession) sessions.get(i);
>>                 session.write(buffer);
>>                 buffer.release();
>>                 buffer = null;
>>
>>             }
>>             j++;
>>         }
>>     }
>>
>>
>> Client:
>>
>> Will just receive the message and print it
>>
>>   public void messageReceived(IoSession session, Object message)
>>     {
>>         ByteBuffer buffer = (ByteBuffer) message;
>>         byte[] data = new byte[buffer.remaining()];
>>         buffer.get(data);
>>         Object obj = NotificationObject.getObject(data);
>>         System.out.println("ClientHandler : data received is : " + obj);
>>     }
>>
>>
>> Results:
>>
>> Client1                         Missed: 203, 253, 293
>>
>> Client2                         Missed: 204, 252
>>
>> Client3                         Missed: 247, 252
>>
>> I don't know why I am getting packet loss in the Client side. Need some
>> help
>> as every single notification in our process cannot be missed.
>>
>> I have attached the test setup. Just use the batch files inside bin.
>> Sample
>> logs where you can see the issues are also available.
>> http://www.nabble.com/file/p14274506/MinaTestSetup.zip MinaTestSetup.zip
>> --
>> View this message in context:
>> http://www.nabble.com/Packet-loss-Issue-tp14274506s16868p14274506.html
>> Sent from the Apache MINA Support Forum mailing list archive at
>> Nabble.com.
>>
>>
> 
> 
> 
> -- 
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP Key ID: 0x0255ECA6
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Packet-loss-Issue-tp14274506s16868p14295021.html
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.

Reply via email to