[QFJ-307] Messages Logged as being sent but never sent over the wire Created: 24/Apr/08  Updated: 15/Nov/12  Resolved: 08/Sep/08

Status: Closed
Project: QuickFIX/J
Component/s: Networking
Affects Version/s: 1.3.1
Fix Version/s: None

Type: Bug Priority: Default
Reporter: Saqib Rasul Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 0
Labels: None

Attachments: Java Source File IoSessionResponder.java    
Issue Links:
Relates
is related to QFJ-345 Support configuration for controlling... Closed

 Description   

We had an issue with QuickfixJ where the logs told us that messages were being sent, but were infact never sent over the wire. A network trace and the resulting actions from the counterpart that we were connected to also proved that messages were never sent. What seemed to happen is that after a certain point, no messages were sent to the other party.

the strange things is that this issue only ocured on one of our platforms and we could not reproduce it on any other platform.

After diggind in QuickfixJ code and Mina code, i made several changes: those described in QFJ-296 and some others in the IoSessionResponder.java class. this seemed to resolve this issue. i wanted to get your feedback on these changes and see what you think.



 Comments   
Comment by Saqib Rasul [ 24/Apr/08 ]

the changed IoSessionResponder class. my change is in the send method

Comment by Steve Bate [ 18/Jun/08 ]

Did you determine why MINA was not able to transmit your messages? Were you having network problems? I'm concerned that your proposed change will significantly lower message throughput by effectively disabling asynchronous output.

Comment by Saqib Rasul [ 18/Jun/08 ]

I was not able to find out why mina (or java) was not sending the messages over the network. i can say that there were no network problems. We tried to trace the problem also down the system calls layer and found that the systems calls to do the network-send were not being called even though from the mina and jre perspective they seemed to be sent. from the mina logs we would see that it would not write data to the output stream.

i agree that my change is not optimal. i would be fine with being able to configure waiting for a write via session config. this way we can have the waiting on a user-by-user basis. if you want i can submit a patch for being able to configure this waiting from outside.

Comment by Steve Bate [ 20/Jun/08 ]

Did adding the join on the write cause the data to be transmitted over the wire? Or are you trying to make the app hang before logging a message transmission if it can't send a message? If you're sure it's not the network and MINA has tried to send the message, then that seems to leave a JVM NIO bug as a prime suspect. I'm not confident that adding the join will reliably solve the problem if it is actually a bug in a specific JVM implementation.

Can you leave a comment to document which version of QFJ, JVM (vendor and build), operating system, and hardware platform you were using when this occurred. Although no one else has reported this problem, the information may be useful if someone else does encounter something similar. Thanks.

Generated at Fri May 10 08:46:32 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.