{{Quickfixn}} FIX upgrade 1.8 logout event issue

Abhay Vora Abhay.Vora.Contractor at dodgeandcox.com
Mon Mar 11 06:35:39 PDT 2019


Hi Grant,

Please find the below config. We have changed RefreshOnLogon to N for version 1.8 upgrade. This was Y for version 1.5

Also, while debugging, I noticed that the _factories object has 2 factory object(QuickFix.FIX44.MessageFactory and QuickFix.FIX42.MessageFactory) for the first time.

When I use powershell script to stop and start the apppool and website that hosts this application, _factories does not contain any MessageFactory and so the exception is coming.

[DEFAULT]
ConnectionType=initiator
ReconnectInterval=2
FileStorePath=D:\Logs\MyFixEngineService\store
FileLogPath=D:\Logs\MyTradingFixEngineService\fixlog
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=Y
DataDictionary=FIX42.xml
ResetOnLogon=N
RefreshOnLogon=N

###TRADEWEB UAT
[SESSION]
BeginString=FIX.4.4
SenderCompID=MyCompID
TargetCompID=TargetCmpID
HeartBtInt=30
StartTime=00:00:00
EndTime=23:59:00
ResetOnLogon=Y
RefreshOnLogon=N
SocketConnectHost=a.b.c.d
SocketConnectPort=z
SessionQualifier = MySessionQualifier
DataDictionary=FIX44_TRADEWEB.xml

Thanks
Abhay

From: Quickfixn [mailto:quickfixn-bounces at lists.quickfixn.com] On Behalf Of Grant Birchmeier
Sent: Monday, March 4, 2019 7:54 AM
To: Mailing list for QuickFIX/n
Subject: Re: {{Quickfixn}} FIX upgrade 1.8 logout event issue

This is an EXTERNAL EMAIL. Stop and think before clicking a link or opening attachments.
Also, let me see your config file.  I have a hunch that something is wrong in there.

On Mon, Mar 4, 2019 at 8:11 AM Mike Gatny <mgatny at connamara.com<mailto:mgatny at connamara.com>> wrote:
Wow interesting.  Nice debugging there! Can you send us the offending message (sensitive fields sanitized as needed) that caused the exception?
--
Mike Gatny
Connamara Systems


On Mon, Mar 4, 2019 at 6:30 AM Abhay Vora <Abhay.Vora.Contractor at dodgeandcox.com<mailto:Abhay.Vora.Contractor at dodgeandcox.com>> wrote:
Thanks Grant. I debugged the QuickFIX project and found that the exception is being thrown in DefaultMessageFactoryClass for incoming  messages that have group tags present.

_factories variable below is null and constructor which populates this variable is also not getting called which results in the error highlighted in yellow below.

Can you please suggest what might be causing this issue?

public class DefaultMessageFactory : IMessageFactory
    {
        private static int _dllLoadFlag;
        private readonly IReadOnlyDictionary<string, IMessageFactory> _factories;

        /// <summary>
        /// This consctructor will
        /// 1. Dynamically load all QuickFix.*.dll assemblies into the current appdomain
        /// 2. Find all IMessageFactory implementations in these assemblies (must have parameterless constructor)
        /// 3. Use them based on begin strings they support
        /// </summary>
        public DefaultMessageFactory()
        {
            var assemblies = GetAppDomainAssemblies();
            var factories = GetMessageFactories(assemblies);
            _factories = ConvertToDictionary(factories);
        }

        /// <summary>
        /// This constructor will save the IMessageFactory instances based on what they return from GetSupportedBeginStrings()
        /// </summary>
        /// <param name="factories">IMessageFactory instances</param>
        public DefaultMessageFactory(IEnumerable<IMessageFactory> factories)
        {
            _factories = ConvertToDictionary(factories);
        }

        /// <summary>
        /// This constructor will
        /// 1. Locate all IMessageFactory implementations from the provided assemblies (must have parameterless constructor)
        /// 2. Use them based on begin strings they support
        /// </summary>
        /// <param name="assemblies">Assemblies that may contain IMessageFactory implementations</param>
        public DefaultMessageFactory(IEnumerable<Assembly> assemblies)
        {
            var factories = GetMessageFactories(assemblies);
            _factories = ConvertToDictionary(factories);
        }

        public Group Create(string beginString, string msgType, int groupCounterTag)
        {
            // FIXME: This is a hack.  FIXT11 could mean 50 or 50sp1 or 50sp2.
            // We need some way to choose which 50 version it is.
            // Choosing 50 here is not adequate.
            var key = beginString.Equals(FixValues.BeginString.FIXT11)
                ? FixValues.BeginString.FIX50
                : beginString;

            if (_factories.TryGetValue(key, out var factory))
            {
                return factory.Create(beginString, msgType, groupCounterTag);
            }
            else
            {
                throw new UnsupportedVersion(beginString);
            }
        }

Thanks
From: Quickfixn [mailto:quickfixn-bounces at lists.quickfixn.com<mailto:quickfixn-bounces at lists.quickfixn.com>] On Behalf Of Grant Birchmeier
Sent: Monday, February 25, 2019 8:31 AM
To: Mailing list for QuickFIX/n
Subject: Re: {{Quickfixn}} FIX upgrade 1.8 logout event issue

This is an EXTERNAL EMAIL. Stop and think before clicking a link or opening attachments.
I added a small improvement sometime back that adds the found BeginString into field 58, so you'll at least know what the engine thinks it's actually seeing.  Can you make a build from latest and give it a try?

NOTE: there was a change that split the QF/n binaries into message specific DLLs, so you'll now need to include both QuickFix.dll and QuickFix.FIX44.dll.  (You can find both in Messages\FIX44\bin\<x>\<x>\)

When I saw this problem, it turned out that my QuickFix.dll was not finding my QuickFix.FIX44.dll due to some wacky windows hijinks.  I don't expect that to be the case for you (since 1.8 didn't split the dll yet), but we can see if it goes away in the latest codebase.  And if it doesn't go away, the updated error message might give us a clue.

-Grant

On Mon, Feb 25, 2019 at 4:44 AM Abhay Vora <Abhay.Vora.Contractor at dodgeandcox.com<mailto:Abhay.Vora.Contractor at dodgeandcox.com>> wrote:
Hi,

I am working on an application which sends and receives  FIX messages to the BLP session. Our application is a WCF service hosted on Windows IIS. This application has business logic to send and process the FIX messages and it uses FIX version 1.8 dlls to establish connection with Bloomberg session.

We are able to send message type = D to Bloomberg(BLP) session. On processing this message, BLP session is sending the  execution report acknowledgement message (35=8, 150=0) successfully to us. While fix engine receives and parses this message, it is throwing an error with message type = 5(logout) to the BLP session. Below is the message logged in the fixstore log file:  8=FIX.4.49=8535=549=IRS56=BLP34=352=20190225-08:44:16.48358=Incorrect BeginString10=179.

This issue started coming when we started to use 1.8 version client side FIX dlls.  Please note, when we deploy this application(which contains our business logic + FIX dlls ) and restart the WCF service, everything works fine as expected. The issue starts on subsequent restart of this IIS service. If we deploy the bits again on encountering the Incorrect BeginString error, it starts to work again till the point we do not restart the service. So, issue is that restarting the service is causing trouble and starts sending logout messages to BLP session. Only way to correct is to redeploy the bits again.

Can you please suggest what might be causing this issue as everything is working fine if we use our existing 1.1 version FIX dlls.

Many Thanks
________________________________
Please follow the hyperlink to important disclosures.
https://www.dodgeandcox.com/disclosures/email_disclosure_funds.html
_______________________________________________
Quickfixn mailing list
Quickfixn at lists.quickfixn.com<mailto:Quickfixn at lists.quickfixn.com>
http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.quickfixn.com_listinfo.cgi_quickfixn-2Dquickfixn.com&d=DwMFaQ&c=AQ5yCnCZOLz3HYYKvbnj5ppyDxNZuxkzDrQyIFuxC1E&r=JPV8QVxFRDcfzBl0MFbNPfqe_45vCThWzqPhDx41k-3u7y246hC-MXudLMhBfk3D&m=kiFqqIJ6Tfru1jnz1CyLgJUB2wmIrT6pKQXY9kwjeNY&s=KTUWq13mMvn9P5ib4qmykpbxA_xiyPQaOTK_Ppz3xFM&e=>


--
Grant Birchmeier
Connamara Systems, LLC
Made-To-Measure Trading Solutions.
Exactly what you need. No more. No less.
http://connamara.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__connamara.com&d=DwMFaQ&c=AQ5yCnCZOLz3HYYKvbnj5ppyDxNZuxkzDrQyIFuxC1E&r=JPV8QVxFRDcfzBl0MFbNPfqe_45vCThWzqPhDx41k-3u7y246hC-MXudLMhBfk3D&m=kiFqqIJ6Tfru1jnz1CyLgJUB2wmIrT6pKQXY9kwjeNY&s=O6qmzWqMMXHJoXHnN92vgGTrK3IlqMEzHYbKE-fQ_AM&e=>
_______________________________________________
Quickfixn mailing list
Quickfixn at lists.quickfixn.com<mailto:Quickfixn at lists.quickfixn.com>
http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.quickfixn.com_listinfo.cgi_quickfixn-2Dquickfixn.com&d=DwMFaQ&c=AQ5yCnCZOLz3HYYKvbnj5ppyDxNZuxkzDrQyIFuxC1E&r=JPV8QVxFRDcfzBl0MFbNPfqe_45vCThWzqPhDx41k-3u7y246hC-MXudLMhBfk3D&m=awZcE9irE75v_t500Lk-OTUrXTrafahyUySqM_NtG1g&s=NeY7z2k8MIeZNFWZ5dffkIDW70Bmnn91w4ztdL2oEsc&e=>
_______________________________________________
Quickfixn mailing list
Quickfixn at lists.quickfixn.com<mailto:Quickfixn at lists.quickfixn.com>
http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.quickfixn.com_listinfo.cgi_quickfixn-2Dquickfixn.com&d=DwMFaQ&c=AQ5yCnCZOLz3HYYKvbnj5ppyDxNZuxkzDrQyIFuxC1E&r=JPV8QVxFRDcfzBl0MFbNPfqe_45vCThWzqPhDx41k-3u7y246hC-MXudLMhBfk3D&m=awZcE9irE75v_t500Lk-OTUrXTrafahyUySqM_NtG1g&s=NeY7z2k8MIeZNFWZ5dffkIDW70Bmnn91w4ztdL2oEsc&e=>


--
Grant Birchmeier
Connamara Systems, LLC
Made-To-Measure Trading Solutions.
Exactly what you need. No more. No less.
http://connamara.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__connamara.com&d=DwMFaQ&c=AQ5yCnCZOLz3HYYKvbnj5ppyDxNZuxkzDrQyIFuxC1E&r=JPV8QVxFRDcfzBl0MFbNPfqe_45vCThWzqPhDx41k-3u7y246hC-MXudLMhBfk3D&m=awZcE9irE75v_t500Lk-OTUrXTrafahyUySqM_NtG1g&s=CvewEPmJqKPt_QTDq2mnJRGSe-V2yB1klVstqEL7RyM&e=>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/attachments/20190311/25a2ff9b/attachment.htm>


More information about the Quickfixn mailing list