I'm seeing the following show up when i kill the connection to my FIX destination:
<20070713-01:24:51, FIX.4.4:test-quote-asker->test-exchange, event> (Forcibly disconnecting session)
<20070713-01:24:51, FIX.4.4:test-quote-asker->test-exchange, event> (Disconnecting)
<20070713-01:24:51, FIX.4.4:test-quote-asker->test-exchange, event> (Disconnecting)
18:24:51,172 ERROR [SocketConnectorIoProcessor-1.0] mina.initiator.InitiatorIoHandler (AbstractIoHandler.java:77) - protocol handler exception
jjava.lang.NullPointerException
at quickfix.Session.disconnect(Session.java:1369)
at quickfix.mina.AbstractIoHandler.sessionClosed(AbstractIoHandler.java:99)
This happens in Session.disconnect(), where we have the following code:
if (hasResponder()) {
getLog().onEvent("Disconnecting");
NPE>>>> getResponder().disconnect();
both hasResponder() and getResponder() are protected with synchronized(responderSync), but it seems that we have a situation where the responder itself disappears between the call to hasResponder() and when it's being used.
Perhaps we need to put a bigger lock around the whole test/get/use structure?
|