Re: [Quickfix-developers] RE: Intermittent disconnect problem
Brought to you by:
orenmnero
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 > |