Troubleshooting using FIXEdge CME STP Solution

Solution overview

The solution is using the following components:

  • FIX Engine – responsible for session management and messages validation.

Categories: [Engine], [EngineAdaptor]

  • Business Layer – responsible for routing and rules processing.

Categories: [BL_Layer], [BL_RoutingTable]

  • JavaScript Engine - responsible for scripts processing on Business Layer

Category: [JS_interpreter]

  • FM XML Handler – responsible for FIX to FMXML conversions

Category: [FMXMLHandler]

  • CME STP Transport Adapter – responsible for communication with CME STP, prepares and sends 35=AD and 35=BE messages, receives and process 35=AE messages.

Category: [STPAdaptor]


Each component could generate error records depending on conditions causing the issue.

FIXEdge initialization steps

  1. FMXML Handler initialization:

    <timestamp> INFO    [FMXMLHandler]  <thread> FMXMLHandler v.0.0.0.3 has been initialized.
  2. FIX Engine initialization:

    <timestamp> INFO    [Engine]  <thread>   The B2BITS FIX Engine 2.20.2 (r59) is starting (using /FixEdge1-qa/FixEdge1/conf/engine.properties)
    <timestamp> INFO    [Engine]  <thread>   The B2BITS FIX Engine was started successfully.
  3. Sessions initialization:

    <timestamp> INFO    [Engine]  <thread>   Session <CMESTPFIX1, nasdaq> :  Change state: old state=Initial new state=WaitForFirstLogon
  4. STP adaptor initialization:

    <timestamp> INFO    [STPAdaptor]  <thread>   CMESTP Adaptor 0.1 rev. 238 has been initialized.
    <timestamp> INFO    [STPAdaptor]  <thread> STP Adaptor v.0.1 started.
  5. FIXEdge initialization has been finished:

    <timestamp>  INFO    [FIXEdge init]  <thread>  FixEdge pid file '/FixEdge1-qa/FixEdge.pid'.

    FIXEdge has been initialized and ready to work.

There should be no messages with ERROR and FATAL before this record.

Expected log records 

  1. An administrative session for FIXICC has been connected:

    <timestamp> INFO    [Engine]  <thread>  Incoming TCP connection was detected (from 127.0.0.1:<port>).
    <timestamp> INFO    [Engine]  <thread>  Session <FIXADMIN, AdminClient> : session with 127.0.0.1:<port> was established
    <timestamp> INFO    [Engine]  <thread>  Session <FIXADMIN, AdminClient> :  Change state: old state=WaitForFirstLogon new state=Established
  2. STP Adapter Sends trade capture reports to the user:

    <timestamp> UTC   INFO    [STPAdaptor]  <thread>  Start processing of <XXX> of <YYY> : <TrdCaptRpt > ... </ TrdCaptRpt >

Troubleshooting

Session disconnections

<timestamp>  INFO    [Engine]  <thread>  Session <FIXCLIENT, FIXSERVER> :  Change state: old state=Established new state=NonGracefullyTerminated

Connection attempts with an unexpected session:

A record in the logs:

<timestamp>    WARN    [Engine]  <thread>  Session <FIXCLIENT, FIXSERVER> : Error during processing Logon message from 10.101.4.131:64333: Session with SenderCompID=FIXCLIENT, TargetCompID=FIXSERVER is not found.

Solution:

Add session <FIXCLIENT, FIXSERVER> to FIXEdge. E.g. via FIXICC

Error. STP adapter unable to route a message

A record in the logs:

<timestamp> ERROR   [STPAdaptor]  <thread>  Send message to user failed, reason: 'Observer->send returns false'.

Solution:

Ignore.

Fixed since FIXEdge 6.4.0

OpenLDAP functionality wasn't enabled due to an exception during initialization

A record in the logs:

FixEdge.log
<timestamp> Severity=ERROR TheardID=<thread> Category=BL_RoutingTable Incorrect event found: OpenLDAP functionality wasn't enabled due to exception during initialization: Error loading library 'libldap_r.so' or dependencies. libldap_r.so: cannot open shared object file: No such file or directory
FixEdge.log
<timestamp> Severity=INFO LogID=N/A TheardID=<thread> Category=STPAdaptor Created new user session CMESTPFIX3@SESSION1 
<timestamp> Severity=WARN LogID=N/A TheardID=<thread> Category=STPAdaptor not logged in, sending reject message.

The reason: 

FIXEdge FIXEdge couldn't initialize OpenLDAP library so LDAP can't be initialized. 

Solution:

Make sure that libldap is installed.

To install it on RH7 use:

yum install openldap

Make sure that libldap.so and libldap_r.so are in the system paths, otherwise please create a symlink

ln -s /usr/lib64/libuser/libuser_ldap.so /usr/lib64/libldap.so
ln -s /usr/lib64/libldap_r-2.4.so.2.10.7 /usr/lib64/libldap_r.so