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
FMXML Handler initialization:
<timestamp> INFO [FMXMLHandler] <thread> FMXMLHandler v.0.0.0.3 has been initialized.
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.
Sessions initialization:
<timestamp> INFO [Engine] <thread> Session <CMESTPFIX1, nasdaq> : Change state: old state=Initial new state=WaitForFirstLogon
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.
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.
Expected log records
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
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.
OpenLDAP functionality wasn't enabled due to an exception during initialization
A record in the logs:
<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
<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