RE: [Quickfix-developers] Java Exception reveals the problem with TAG 52
Brought to you by:
orenmnero
|
From: Steve B. <st...@te...> - 2005-06-28 21:28:30
|
> Here is what I see happening
> F (my company) sends a 35=A to C the client
> Client sends 35=A
> QF does not like tag 52...do not know why yet...
> and it tries to reject that message before login occurs
> so an exception is thrown and then we know the rest...
>
> I guess the same thing happened yesterday with Quickfix.
>
> This is with QuickfixJ.
Ah, a good compatibility test. ;-)
What is the value of tag 52 in the logon response (assuming
the tag exists)?
Steve
> Oren, now I am going to do the cvs up command see if the updates help
> me nudge along.
> ( I am guessing the CVS up is shorthand for CVS update...I am severely
> handicapped with C++, CVS and windows)
> I hope am not being taken for high maintenance user
> --
> RK
>
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
> (8=FIX.4.29=7135=A34=149=FTEST52=20050628-
> 18:28:04.33156=CTEST98=0108=3010=197)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon request)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, outgoing>
> (8=FIX.4.29=7135=A34=149=FTEST52=20050628-
> 18:28:04.33156=CTEST98=0108=3010=197)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, incoming>
> (8=FIX.4.29=8735=A49=CTEST56=FTEST34=0000198=052=20050628-
> 18:27:49108=60141=N383=5600010=203)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (error while receiving
> message
> quickfix.SessionException: Tried to send a reject while not logged on:
> Tag specified out of required order (field 52)
> at quickfix.Session.generateReject(Session.java:753)
> at quickfix.Session.next(Session.java:508)
> at
> quickfix.netty.AbstractSocketInitiator.processMessage(AbstractSocketInitia
> tor.java:210)
> at quickfix.SocketInitiator.onMessage(SocketInitiator.java:94)
> at
> quickfix.netty.AbstractSocketInitiator$SessionConnection$NettySessionListe
> ner.messageReceived(AbstractSocketInitiator.java:380)
> at
> net.gleamynode.netty2.Session.fireMessageReceived(Session.java:733)
> at
> net.gleamynode.netty2.LowLatencyEventDispatcher.flush(LowLatencyEventDispa
> tcher.java:67)
> at
> net.gleamynode.netty2.ReadController.processEvent(ReadController.java:360)
> at net.gleamynode.netty2.IoProcessor.process(IoProcessor.java:334)
> at
> net.gleamynode.netty2.IoProcessor.access$500(IoProcessor.java:73)
> at
> net.gleamynode.netty2.IoProcessor$Worker.run(IoProcessor.java:364)
> )
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Dropped Connection)
> FIX.4.2:FTEST->CTEST is LOGGED OUT <20050628-18:28:04,
> FIX.4.2:FTEST->CTEST, outgoing>
> (8=FIX.4.29=7135=A34=249=FTEST52=20050628-
> 18:28:04.63356=CTEST98=0108=3010=203)
> <20050628-18:28:04, FIX.4.2:FTEST->CTEST, event> (Initiated logon request)
>
> On 6/28/05, VP Marketing IT Asset Enterprise Technologies
> <ass...@gm...> wrote:
> > I switched to an executor in the LAN and it worked fine. You are correct
> > the trouble earlier was with the settings file...
> >
> > The file is there. But there is only one session and that is with an
> external
> > party and it could be failing for a number of reasons.
> >
> > The error (console) output did not indicate that. It misdirects to an
> > initiator not
> > being there.
> >
> > We can talk about how to structure a generic Error control and
> communication
> > exception hierarchy.
> >
> > Consider the following three classes:
> >
> > class QuickfixJErrorList
> > {
> > final String error_string[] =
> > {
> > "ILLEGAL ARGUMENT/INTERNAL ERROR",
> > "CONFIG FILE NOT READABLE",
> > "CONFIG NOT ACCORDING TO SPECIFICATION", // somethign simpler may be
> > "SESSION COULD NOT BE INITIALIZED",
> >
> > };
> > final int base_error=1300;
> > final int error_no[] = {1300,1301,1302, 1303} ; // this coudl be
> > base_error, base_error+1, etc
> >
> > static public String getErrorMessage(int code) {
> > return
> error_string[(code>base_error&&(code<(base_error+error_no.length)))?code:0
> );
> > }
> > static public String getErrorMessage(String code){
> > try {
> > return getErrorMessage(Integer.parseInt(code.trim()));
> > } catch(Exception e) { }
> > return getErrorMessage(0);
> > }
> > }
> > class QuickfixException extends Exception
> > {
> > QuickfixException (String msgCode)
> > {
> > super(QuickfixJErrorList.getErrorMessage(msg);
> > }
> > }
> >
> > And we can implement the JErrorList in XML and load the DOM
> > or put it on HSQLDB or some such thing and manage it from anywhere.
> > instead of being static class...
> >
> > I am hacking as I am writing this email.. the idea may be clearer...
> > I can do this..if you send me a specification what you want.
> > --
> > rk
> >
|