Thread: RE: [Quickfix-developers] Intermittent disconnect problem
Brought to you by:
orenmnero
From: <or...@qu...> - 2004-11-29 19:56:24
|
Barry, For every disconnect that QuickFIX initiates, there should be a reason provided (not with 1.4.0, but with the new releases). With 1.9.4 (available now), QuickFIX also displays a "Dropped Connection" message if the disconnect is initiated by the peer (1.9.2, does not differentiate). That should help you to verify if it is QuickFIX that is initiating the disconnect. I don't think there are any more cases where QuickFIX initiates a disconnect without providing a reason. If the couterparty drops the connection, then unless they provide information in the form of a reject or logoff text, there is little QuickFIX can do to determine the cause. The best that we can probably do is report whether the socket was dropped gracefully, and therefore intentionally, or if it was an abnormal disconnect of some sort. Is there anything significantly different about this new client? Does their logs reveal anything about the nature of the disconnect? --oren > 1) Anyone have any idea what's going on? > 2) Is there a way to increase the amount of detail in log messages, > especially those to do with disconnection events? > 3) What sort of thing would cause quickfix to disconnect without saying why? > > Thanks in advance, > barry |
From: Bishop, B. <Bar...@gs...> - 2004-11-30 08:11:23
|
Hello Oren, Thanks for the reply. Sounds to me like I should try version 1.9.2 or later in our production environment. I have been unable to reproduce the mysterious disconnect in our QA system to the same client, but this is not surprising as it is so infrequent. I have been simulating it by breaking something else in the chain (which would appear as a client disconnect) so this would explain the lack of an explanation from quickfix. I will try this over the next few days and report back. Thanks again, barry -----Original Message----- From: or...@qu... [mailto:or...@qu...] Sent: Monday, November 29, 2004 7:56 PM To: Bishop, Barry Cc: 'qui...@li...' Subject: RE: [Quickfix-developers] Intermittent disconnect problem Barry, For every disconnect that QuickFIX initiates, there should be a reason provided (not with 1.4.0, but with the new releases). With 1.9.4 (available now), QuickFIX also displays a "Dropped Connection" message if the disconnect is initiated by the peer (1.9.2, does not differentiate). That should help you to verify if it is QuickFIX that is initiating the disconnect. I don't think there are any more cases where QuickFIX initiates a disconnect without providing a reason. If the couterparty drops the connection, then unless they provide information in the form of a reject or logoff text, there is little QuickFIX can do to determine the cause. The best that we can probably do is report whether the socket was dropped gracefully, and therefore intentionally, or if it was an abnormal disconnect of some sort. Is there anything significantly different about this new client? Does their logs reveal anything about the nature of the disconnect? --oren > 1) Anyone have any idea what's going on? > 2) Is there a way to increase the amount of detail in log messages, > especially those to do with disconnection events? > 3) What sort of thing would cause quickfix to disconnect without > saying why? > > Thanks in advance, > barry |
From: Bishop, B. <Bar...@gs...> - 2004-12-01 11:08:34
|
Hi Oren, As promised I'm reporting back on my progress. So far, I have not managed to get a newer version of quickfix in to production for the following reasons: I could not get version 1.9.4 to build at all. I've never managed to build any version of quickfix on solaris using the configure & make files and have always resorted to building everything in to one enormous '.so'. However this time there were just too many problems. I had built version 1.9.2 a couple of weeks ago, so I tested with this under some very stressful loads. After forcing quickfix to disconnect it was able to reconnect and re-synchronise much better than the version we have in production (1.4.0). I had it processing QuoteRequest/Quote and NewOrderSingle/ExecutionReport messages almost continously for three hours while I periodically broke the pipe between us and our client's QA system. Sadly, I overlooked the sending of QuoteAcknowledgement (FIX 4.2) messages and the first time I tried this it went very wrong. The message quickfix sent was malformed with a group of fields repeated approximately six times and an incorrect body length. Needless to say that the client's system rejected this. This morning I realised that 1.9.4 isn't an offical release yet. Is this correct? I will have one more try with version 1.9.3. If I can get this to build then I can test out the QuoteAcknowledgement message. A few questions: 1) The release notes for 1.9.3 mention some fixes in handling repeating groups. Do you think these fixes might help my problem? 2) Does anyone use quickfix on solaris and if so how do they build it? Again, thanks for your help. Some related information is appended to the bottom of this mail. barry ######################################################## The java code that packs a QuoteAcknowledgement message: QuoteAcknowledgement message = new QuoteAcknowledgement(); message.getHeader().setField( new SenderCompID( reject.senderCompId) ); message.getHeader().setField( new TargetCompID( reject.targetCompId) ); message.getHeader().setField( new DeliverToCompID( reject.deliverToCompId) ); message.getHeader().setField( new DeliverToSubID( reject.deliverToSubId) ); message.getHeader().setField( new DeliverToLocationID( reject.deliverToLocationId) ); message.set( new QuoteReqID( reject.quoteReqId ) ); message.set( new QuoteID( reject.quoteId ) ); message.set( new QuoteAckStatus( reject.quoteAckStatus ) ); if ( reject.quoteRejectReason != null ) message.set( new QuoteRejectReason( reject.quoteRejectReason.intValue() ) ); if ( reject.text != null ) message.set( new Text( reject.text ) ); QuoteAcknowledgement.NoQuoteSets.NoQuoteEntries quoteEntries = new QuoteAcknowledgement.NoQuoteSets.NoQuoteEntries(); quoteEntries.set( new IDSource( reject.idSource ) ); quoteEntries.set( new SecurityID( reject.securityId ) ); quoteEntries.set( new Symbol( reject.symbol ) ); quoteEntries.set( new QuoteEntryID() ); // quoteEntries.set( new QuoteEntryID( "1" ) ); ## Tried this also if ( reject.putOrCall != null ) quoteEntries.set( new PutOrCall( reject.putOrCall.intValue() ) ); if ( reject.strikePrice != null ) quoteEntries.set( new StrikePrice( reject.strikePrice.doubleValue() ) ); if ( reject.optAttribute != null ) quoteEntries.set( new OptAttribute( reject.optAttribute.charValue() ) ); if ( reject.maturityMonthYear != null ) quoteEntries.set( new MaturityMonthYear( reject.maturityMonthYear ) ); if ( reject.maturityDay != null ) quoteEntries.set( new MaturityDay( reject.maturityDay ) ); if ( reject.securityDescription != null ) quoteEntries.set( new SecurityDesc( reject.securityDescription ) ); if ( reject.contractMultiplier != null ) quoteEntries.set( new ContractMultiplier( reject.contractMultiplier.doubleValue() ) ); if ( reject.securityType != null ) quoteEntries.set( new SecurityType( reject.securityType ) ); QuoteAcknowledgement.NoQuoteSets quoteSets = new QuoteAcknowledgement.NoQuoteSets(); quoteSets.set( new QuoteSetID() ); // quoteSets.set( new QuoteSetID( "1" ) ); ## Tried this also quoteSets.set( new UnderlyingSymbol( "und" ) ); // Dummy entry, just to make the message work. quoteSets.addGroup( quoteEntries ); message.addGroup( quoteSets ); #################################################### An example of a bad QuoteAcknowledgement message: Message=quickfix.fix42.QuoteAcknowledgement:8=FIX.4.2|9=323|35=b|34=17942|49 =XXXXXXX|52=20041130-16:45:03.556|56=XXXXXX| 128=9999|129=WTSTSTWTSTSTG000|145=2381-QITSCG15|58=Unknown symbol.|117=3WLR1LWS6|131=200411300129|296=1|302=| 311=und|295=1|299=| 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206=L|231 =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206=L|231 =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206=L|231 =0.1|107=XXXXXXXXXX-30-C-0.1|296=1|302=| 311=und|295=1|299=| 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206=L|231 =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206=L|231 =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206=L|231 =0.1|107=XXXXXXXXXX-30-C-0.1|297=5|300=1|10=245 #################################################### My FIX42.xml definition of QuoteAcknowledgement (not sure is this affects outgoing messages) <message name="QuoteAcknowledgement" msgtype="b" msgcat="app"> <field name="QuoteReqID" required="N"/> <field name="QuoteID" required="Y"/> <field name="QuoteAckStatus" required="Y"/> <field name="QuoteRejectReason" required="Y"/> <field name="QuoteResponseLevel" required="N"/> <field name="TradingSessionID" required="N"/> <field name="Text" required="N"/> <!-- <group name="NoQuoteSets" required="N"> --> ## I have tried with both a field or a group here <field name="NoQuoteSets" required="N"/> <field name="QuoteSetID" required="N"/> <field name="UnderlyingSymbol" required="N"/> <field name="UnderlyingSymbolSfx" required="N"/> <field name="UnderlyingSecurityID" required="N"/> <field name="UnderlyingIDSource" required="N"/> <field name="UnderlyingSecurityType" required="N"/> <field name="UnderlyingMaturityMonthYear" required="N"/> <field name="UnderlyingMaturityDay" required="N"/> <field name="UnderlyingPutOrCall" required="N"/> <field name="UnderlyingStrikePrice" required="N"/> <field name="UnderlyingOptAttribute" required="N"/> <field name="UnderlyingContractMultiplier" required="N"/> <field name="UnderlyingCouponRate" required="N"/> <field name="UnderlyingSecurityExchange" required="N"/> <field name="UnderlyingIssuer" required="N"/> <field name="EncodedUnderlyingIssuerLen" required="N"/> <field name="EncodedUnderlyingIssuer" required="N"/> <field name="UnderlyingSecurityDesc" required="N"/> <field name="EncodedUnderlyingSecurityDescLen" required="N"/> <field name="EncodedUnderlyingSecurityDesc" required="N"/> <field name="TotQuoteEntries" required="N"/> <!-- <group name="NoQuoteEntries" required="N"> --> ## I have tried with both here also <field name="NoQuoteEntries" required="N"/> <field name="QuoteEntryID" required="N"/> <field name="Symbol" required="N"/> <field name="SymbolSfx" required="N"/> <field name="SecurityID" required="N"/> <field name="IDSource" required="N"/> <field name="SecurityType" required="N"/> <field name="MaturityMonthYear" required="N"/> <field name="MaturityDay" required="N"/> <field name="PutOrCall" required="N"/> <field name="StrikePrice" required="N"/> <field name="OptAttribute" required="N"/> <field name="ContractMultiplier" required="N"/> <field name="CouponRate" required="N"/> <field name="SecurityExchange" required="N"/> <field name="Issuer" required="N"/> <field name="EncodedIssuerLen" required="N"/> <field name="EncodedIssuer" required="N"/> <field name="SecurityDesc" required="N"/> <field name="EncodedSecurityDescLen" required="N"/> <field name="EncodedSecurityDesc" required="N"/> <field name="QuoteEntryRejectReason" required="N"/> <!--</group>--> <!--</group>--> </message> -----Original Message----- From: Bishop, Barry Sent: Tuesday, November 30, 2004 8:11 AM To: 'or...@qu...' Cc: 'qui...@li...' Subject: RE: [Quickfix-developers] Intermittent disconnect problem QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX FAQ: http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ QuickFIX Support: http://www.quickfixengine.org/services.html Hello Oren, Thanks for the reply. Sounds to me like I should try version 1.9.2 or later in our production environment. I have been unable to reproduce the mysterious disconnect in our QA system to the same client, but this is not surprising as it is so infrequent. I have been simulating it by breaking something else in the chain (which would appear as a client disconnect) so this would explain the lack of an explanation from quickfix. I will try this over the next few days and report back. Thanks again, barry -----Original Message----- From: or...@qu... [mailto:or...@qu...] Sent: Monday, November 29, 2004 7:56 PM To: Bishop, Barry Cc: 'qui...@li...' Subject: RE: [Quickfix-developers] Intermittent disconnect problem Barry, For every disconnect that QuickFIX initiates, there should be a reason provided (not with 1.4.0, but with the new releases). With 1.9.4 (available now), QuickFIX also displays a "Dropped Connection" message if the disconnect is initiated by the peer (1.9.2, does not differentiate). That should help you to verify if it is QuickFIX that is initiating the disconnect. I don't think there are any more cases where QuickFIX initiates a disconnect without providing a reason. If the couterparty drops the connection, then unless they provide information in the form of a reject or logoff text, there is little QuickFIX can do to determine the cause. The best that we can probably do is report whether the socket was dropped gracefully, and therefore intentionally, or if it was an abnormal disconnect of some sort. Is there anything significantly different about this new client? Does their logs reveal anything about the nature of the disconnect? --oren > 1) Anyone have any idea what's going on? > 2) Is there a way to increase the amount of detail in log messages, > especially those to do with disconnection events? > 3) What sort of thing would cause quickfix to disconnect without > saying why? > > Thanks in advance, > barry ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers |
From: Oren M. <or...@qu...> - 2004-12-01 11:42:14
|
Barry, 1.9.4 is an official release. There wasn't an announcement because the fixes were relatively minor so it didn't really warrant the typical release email. The people for whom this release was important pretty much knew about it. I would recommend it over 1.9.3. 1.9.2 did indeed have some pretty serious issues with repeating groups. What you witnessed is typical of the sorts of problems it was having. Those problems were fixed as of 1.9.3. There are a significant amount of Solaris users. You don't mention if you are building with gcc or SunPRO? There were a lot of contributions recently concerning getting QF to build with the SunPRO compiler. What are the sort of problems that you run into? --oren On Dec 1, 2004, at 5:08 AM, Bishop, Barry wrote: > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX FAQ: > http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > QuickFIX Support: http://www.quickfixengine.org/services.html > > Hi Oren, > > As promised I'm reporting back on my progress. > > So far, I have not managed to get a newer version of quickfix in to > production for the following reasons: > > I could not get version 1.9.4 to build at all. I've never managed to > build > any version of quickfix on solaris using the configure & make files > and have > always resorted to building everything in to one enormous '.so'. > However > this time there were just too many problems. > > I had built version 1.9.2 a couple of weeks ago, so I tested with this > under > some very stressful loads. After forcing quickfix to disconnect it was > able > to reconnect and re-synchronise much better than the version we have in > production (1.4.0). I had it processing QuoteRequest/Quote and > NewOrderSingle/ExecutionReport messages almost continously for three > hours > while I periodically broke the pipe between us and our client's QA > system. > > Sadly, I overlooked the sending of QuoteAcknowledgement (FIX 4.2) > messages > and the first time I tried this it went very wrong. The message > quickfix > sent was malformed with a group of fields repeated approximately six > times > and an incorrect body length. Needless to say that the client's system > rejected this. > > This morning I realised that 1.9.4 isn't an offical release yet. Is > this > correct? I will have one more try with version 1.9.3. If I can get > this to > build then I can test out the QuoteAcknowledgement message. > > A few questions: > > 1) The release notes for 1.9.3 mention some fixes in handling repeating > groups. Do you think these fixes might help my problem? > 2) Does anyone use quickfix on solaris and if so how do they build it? > > Again, thanks for your help. Some related information is appended to > the > bottom of this mail. > barry > > > ######################################################## > The java code that packs a QuoteAcknowledgement message: > > QuoteAcknowledgement message = new QuoteAcknowledgement(); > > message.getHeader().setField( new SenderCompID( > reject.senderCompId) > ); > message.getHeader().setField( new TargetCompID( > reject.targetCompId) > ); > message.getHeader().setField( new DeliverToCompID( > reject.deliverToCompId) ); > message.getHeader().setField( new DeliverToSubID( > reject.deliverToSubId) ); > message.getHeader().setField( new DeliverToLocationID( > reject.deliverToLocationId) ); > > message.set( new QuoteReqID( reject.quoteReqId ) ); > message.set( new QuoteID( reject.quoteId ) ); > message.set( new QuoteAckStatus( reject.quoteAckStatus ) ); > > if ( reject.quoteRejectReason != null ) > message.set( new QuoteRejectReason( > reject.quoteRejectReason.intValue() ) ); > > if ( reject.text != null ) > message.set( new Text( reject.text ) ); > > QuoteAcknowledgement.NoQuoteSets.NoQuoteEntries quoteEntries > = new QuoteAcknowledgement.NoQuoteSets.NoQuoteEntries(); > > quoteEntries.set( new IDSource( reject.idSource ) ); > quoteEntries.set( new SecurityID( reject.securityId ) ); > quoteEntries.set( new Symbol( reject.symbol ) ); > quoteEntries.set( new QuoteEntryID() ); > // quoteEntries.set( new QuoteEntryID( "1" ) ); ## Tried this > also > > if ( reject.putOrCall != null ) > quoteEntries.set( new PutOrCall( > reject.putOrCall.intValue() ) ); > if ( reject.strikePrice != null ) > quoteEntries.set( new StrikePrice( > reject.strikePrice.doubleValue() ) ); > if ( reject.optAttribute != null ) > quoteEntries.set( new OptAttribute( > reject.optAttribute.charValue() ) ); > if ( reject.maturityMonthYear != null ) > quoteEntries.set( new MaturityMonthYear( > reject.maturityMonthYear ) ); > if ( reject.maturityDay != null ) > quoteEntries.set( new MaturityDay( > reject.maturityDay ) ); > if ( reject.securityDescription != null ) > quoteEntries.set( new SecurityDesc( > reject.securityDescription ) ); > if ( reject.contractMultiplier != null ) > quoteEntries.set( new ContractMultiplier( > reject.contractMultiplier.doubleValue() ) ); > if ( reject.securityType != null ) > quoteEntries.set( new SecurityType( > reject.securityType ) ); > > QuoteAcknowledgement.NoQuoteSets quoteSets = new > QuoteAcknowledgement.NoQuoteSets(); > > quoteSets.set( new QuoteSetID() ); > // quoteSets.set( new QuoteSetID( "1" ) ); ## Tried this also > > quoteSets.set( new UnderlyingSymbol( "und" ) ); // Dummy > entry, just to make the message work. > quoteSets.addGroup( quoteEntries ); > > message.addGroup( quoteSets ); > > > #################################################### > An example of a bad QuoteAcknowledgement message: > > Message=quickfix.fix42.QuoteAcknowledgement: > 8=FIX.4.2|9=323|35=b|34=17942|49 > =XXXXXXX|52=20041130-16:45:03.556|56=XXXXXX| > 128=9999|129=WTSTSTWTSTSTG000|145=2381-QITSCG15|58=Unknown > symbol.|117=3WLR1LWS6|131=200411300129|296=1|302=| > 311=und|295=1|299=| > 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206= > L|231 > =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| > 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206= > L|231 > =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| > 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206= > L|231 > =0.1|107=XXXXXXXXXX-30-C-0.1|296=1|302=| > 311=und|295=1|299=| > 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206= > L|231 > =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| > 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206= > L|231 > =0.1|107=XXXXXXXXXX-30-C-0.1|295=1|299=| > 55=XXXXXXX|48=GS9709|22=108|167=OPT|200=200506|205=20|201=1|202=30|206= > L|231 > =0.1|107=XXXXXXXXXX-30-C-0.1|297=5|300=1|10=245 > > > #################################################### > My FIX42.xml definition of QuoteAcknowledgement (not sure is this > affects > outgoing messages) > > <message name="QuoteAcknowledgement" msgtype="b" msgcat="app"> > <field name="QuoteReqID" required="N"/> > <field name="QuoteID" required="Y"/> > <field name="QuoteAckStatus" required="Y"/> > <field name="QuoteRejectReason" required="Y"/> > <field name="QuoteResponseLevel" required="N"/> > <field name="TradingSessionID" required="N"/> > <field name="Text" required="N"/> > <!-- <group name="NoQuoteSets" required="N"> --> ## I have > tried with both a field or a group here > <field name="NoQuoteSets" required="N"/> > <field name="QuoteSetID" required="N"/> > <field name="UnderlyingSymbol" required="N"/> > <field name="UnderlyingSymbolSfx" required="N"/> > <field name="UnderlyingSecurityID" required="N"/> > <field name="UnderlyingIDSource" required="N"/> > <field name="UnderlyingSecurityType" required="N"/> > <field name="UnderlyingMaturityMonthYear" > required="N"/> > <field name="UnderlyingMaturityDay" required="N"/> > <field name="UnderlyingPutOrCall" required="N"/> > <field name="UnderlyingStrikePrice" required="N"/> > <field name="UnderlyingOptAttribute" required="N"/> > <field name="UnderlyingContractMultiplier" > required="N"/> > <field name="UnderlyingCouponRate" required="N"/> > <field name="UnderlyingSecurityExchange" required="N"/> > <field name="UnderlyingIssuer" required="N"/> > <field name="EncodedUnderlyingIssuerLen" required="N"/> > <field name="EncodedUnderlyingIssuer" required="N"/> > <field name="UnderlyingSecurityDesc" required="N"/> > <field name="EncodedUnderlyingSecurityDescLen" > required="N"/> > <field name="EncodedUnderlyingSecurityDesc" > required="N"/> > <field name="TotQuoteEntries" required="N"/> > <!-- <group name="NoQuoteEntries" required="N"> --> ## > I > have tried with both here also > <field name="NoQuoteEntries" required="N"/> > <field name="QuoteEntryID" required="N"/> > <field name="Symbol" required="N"/> > <field name="SymbolSfx" required="N"/> > <field name="SecurityID" required="N"/> > <field name="IDSource" required="N"/> > <field name="SecurityType" required="N"/> > <field name="MaturityMonthYear" required="N"/> > <field name="MaturityDay" required="N"/> > <field name="PutOrCall" required="N"/> > <field name="StrikePrice" required="N"/> > <field name="OptAttribute" required="N"/> > <field name="ContractMultiplier" required="N"/> > <field name="CouponRate" required="N"/> > <field name="SecurityExchange" required="N"/> > <field name="Issuer" required="N"/> > <field name="EncodedIssuerLen" required="N"/> > <field name="EncodedIssuer" required="N"/> > <field name="SecurityDesc" required="N"/> > <field name="EncodedSecurityDescLen" required="N"/> > <field name="EncodedSecurityDesc" required="N"/> > <field name="QuoteEntryRejectReason" required="N"/> > <!--</group>--> > <!--</group>--> > </message> > > -----Original Message----- > From: Bishop, Barry > Sent: Tuesday, November 30, 2004 8:11 AM > To: 'or...@qu...' > Cc: 'qui...@li...' > Subject: RE: [Quickfix-developers] Intermittent disconnect problem > > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX FAQ: > http://www.quickfixengine.org/wikifix/index.php?QuickFixFAQ > QuickFIX Support: http://www.quickfixengine.org/services.html > > Hello Oren, > > Thanks for the reply. > > Sounds to me like I should try version 1.9.2 or later in our > production > environment. I have been unable to reproduce the mysterious disconnect > in > our QA system to the same client, but this is not surprising as it is > so > infrequent. I have been simulating it by breaking something else in the > chain (which would appear as a client disconnect) so this would > explain the > lack of an explanation from quickfix. > > I will try this over the next few days and report back. > > Thanks again, > barry > > > -----Original Message----- > From: or...@qu... [mailto:or...@qu...] > Sent: Monday, November 29, 2004 7:56 PM > To: Bishop, Barry > Cc: 'qui...@li...' > Subject: RE: [Quickfix-developers] Intermittent disconnect problem > > > Barry, > > For every disconnect that QuickFIX initiates, there should be a reason > provided (not with 1.4.0, but with the new releases). With 1.9.4 > (available > now), QuickFIX also displays a "Dropped Connection" message if the > disconnect is initiated by the peer (1.9.2, does not differentiate). > That > should help you to verify if it is QuickFIX that is initiating the > disconnect. I don't think there are any more cases where QuickFIX > initiates > a disconnect without providing a reason. If the couterparty drops the > connection, then unless they provide information in the form of a > reject or > logoff text, there is little QuickFIX can do to determine the cause. > The > best that we can probably do is report whether the socket was dropped > gracefully, and therefore intentionally, or if it was an abnormal > disconnect > of some sort. > > Is there anything significantly different about this new client? Does > their > logs reveal anything about the nature of the disconnect? > > --oren > >> 1) Anyone have any idea what's going on? >> 2) Is there a way to increase the amount of detail in log messages, >> especially those to do with disconnection events? >> 3) What sort of thing would cause quickfix to disconnect without >> saying why? >> >> Thanks in advance, >> barry > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real > users. > Discover which products truly live up to the hype. Start reading now. > http://productguide.itmanagersjournal.com/ > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real > users. > Discover which products truly live up to the hype. Start reading now. > http://productguide.itmanagersjournal.com/ > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > |
From: Caleb E. <cal...@gm...> - 2004-12-01 13:23:47
|
On Wed, 1 Dec 2004 05:41:45 -0600, Oren Miller <or...@qu...> wrote: > There are a significant amount of Solaris users. You don't mention if > you are building with gcc or SunPRO? There were a lot of contributions > recently concerning getting QF to build with the SunPRO compiler. What > are the sort of problems that you run into? Barry, if you use the SunPRO C++ compiler, you NEED to follow the directions here: http://tinyurl.com/5sls4 -- Caleb Epstein caleb dot epstein at gmail dot com |
From: Michael H. <mh...@li...> - 2005-02-04 10:42:52
|
I have seen a similar problem when connecting to SFE. They require that I follow the heartbeat procedure defined in the Fix spec. with one exception. At initial start-up time or at certain times throughout the day they may blast a huge amount of data to me which needs to be processed. The QuickFix engine gives priority to these messages and starves the heartbeat time slice. So if I am processing these messages for more then the agreed upon heartbeat period SFE will disconnect the session on their side and then QuickFix re-establishes the session and resyncs. And then they have to retransmit messages and as you can see I will encounter a never ending loop of shit. So I modified the following to code to stop QuickFix from starving the heartbeats. =20 In the following method - void SocketInitiator::onData( SocketConnector& connector, int s ) =20 The current code: while( pSocketConnection->read( connector ) ) {} =20 My modified version: while( pSocketConnection->read( connector ) )=20 { // Modified 11-26-03 by M. Holm. Because heartbeats are being starved! i->second->onTimeout(); } =20 This will ensure that heartbeats will be sent when necessary according to the SFE spec. =20 You might be having a similar problem to the one I encountered. =20 Hope this helps. =20 Michael Holm Liquid Capital Markets Ltd 11 Old Jewry London EC2R 8DU Tel:020 7726 3028 =20 |