Explanation of messages in FIXEdge logs

Introduction

In this article, you can find a description of errors, warnings, debug, and information messages which may be spotted in FIXEdge log files.

ERROR

Tag not defined for this message type

<Timestamp>    ERROR    [Engine]  Session <Session_Name>; Parse Error : Tag not defined for this message type. Parsing stopped at column: *** [RefSeqNum: **, RefTagID: **, RefMsgType: **].

Description or root cause

It means that FIXEdge received a FIX message that contains a tag [RefTagID], which is not described in FIX dictionaries for this type of message. Also, it may mean that tag [RefTagID] is outside the repeating group while in the dictionary this tag is inside the repeating group or vice versa. The exact message can be identified by its sequence number [RefSeqNum].

Solution or troubleshooting steps

 Get the FIX message itself from <session>.in file (use RefSeqNum value for assistance). Check the corresponding FIX dictionary to validate the correctness of the error. Contact counter-party to resolve the issue or describe this custom tag in the corresponding FIX dictionary.

Message cannot be sent

<Timestamp>    ERROR    [CC_Layer]  LayerImpl::sendMessage2ClientId() has failed: Message cannot be sent: client TestSMTPClient is not logged in

Description or root cause

This message occurs when there is an attempt to send a message to a not initialized ("logged in") Client of Transport Adapter (TA). The disclosed in log record "client" name represents the name of TA Client in FIXEdge.properties.

Depending on TA type, the Client may be also referred to as "Session". For example, Clients of SMTP TA are listed under TransportLayer.SmtpTA.SMTPSessions parameter.

The reason for this is that specific TA, to which the Client belongs, is not added to the list of enabled adapters TransportLayer.TransportAdapters in FIXEdge.properties. Once added, you will see in log (after FIXEdge restart) records like:

<Timestamp>   INFO    [CC_Layer]  Client TestSMTPClient has logged in

Solution or troubleshooting steps

1. First of all, review BL_Config.xml file for the Rule, that routes messages to mentioned Client, and check if it is correct and does what is required by your system. Remove the Rule if there is no need for it.
For instance, the ERROR in this specific example was caused by the default BL Rule which was left unintentionally in place:

<Rule>
	<Source>
		<FixSession SenderCompID=".*" TargetCompID=".*"/>
	</Source>
	<Condition>
		<EqualField Field="35" Value="C"/>
	</Condition>
	<Action>
		<Send>
			<Client Name="TestSMTPClient"/>
		</Send>
	</Action>
</Rule>

2. Check that the corresponding TA client was successfully started and connected. Check FIXEdge.properties for correctness, especially that TA is added to TransportLayer.TransportAdapters list.

The connection association got dropped by a network device (NAT/router/switch)

<Timestamp>    ERROR    [Engine] <Thread ID> New incoming connection from :0 was rejected because of the error during processing: getpeername. Transport endpoint is not connected. (Error code = 107)

Description or root cause

The record means that there had been a connection attempt from a counterparty, and when FIX Engine was trying to detect its source IP/port with getpeername function, the connection association got dropped by a network device (NAT/router/switch).

Solution or troubleshooting recommendations

Reconnect the session.

New incoming connection was rejected

<Timestamp>    ERROR    [Engine]  New incoming connection from xxx.xxx.xxx.x:xxxxx was rejected because of the error during processing: Connection::receive(), EOF from xxx.xxx.xxx.x:xxxxx

Description or root cause

This error occurs when a network device drops connection association, or there is a code issue resulting in FIX connection being terminated unexpectedly without Logouts exchange.

Solution or troubleshooting steps

Contact your counter-party for an explanation from their side and related events that make bring more light on the root cause.

Error during processing Logon message

<Timestamp>    ERROR    [Engine]  Session <Session_Name> : Error during processing Logon message from xx.xxx.x.xx:xxxxx: Incoming connection is rejected by application: Cannot create session. Reason: Authentication is failed or session is not configured to accept connection

Description or root cause

This is related to setup with LDAP authentication. Authentication is performed against Session identifier  (SenderCompID and TrargetCompID) and LDAP using the Username (tag 553) and Password (tag 554) from FIX Logon message.

Solution or troubleshooting steps

  1. Work with the counterparty to make sure that those supplied Logon credentials are correct.
  2. Check if credentials are correct in LDAP and any other issues with LDAP itself.
  3. Review and check the LDAPAuthenticate section in the BL_Config.xml file.

Unable to establish the connection (Error code = 10060)

engine.log
<Timestamp>    ERROR    [Engine] <Thread ID>  Session <Session_Name> : Unable to establish connection: connect() to (xxx.xxx.xxx.x:xxxxx) failed. A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (Error code = 10060)

Description or root cause

This is related to an address or a port of destination that is not available from the host machine.

Solution or troubleshooting recommendations

  1. Use telnet to check the connection. Fix network issues.
  2. Make sure that the counterparty sees the connect attempts.
  3. Once the network has been configured and the node has become available, try to connect again.

Cannot bind to <host>:<port>. Address already in use.

engine.log
<Timestamp>    ERROR    [Engine] <Thread ID>  FixEngine::init: Cannot bind to 0.0.0.0:9110. Address already in use. (Error code = 98)

Description or root cause

FIX Engine can't start properly because the listening port is already occupied by another process

Solution or troubleshooting recommendations

  1. Check what application uses the port. Make sure that another copy of the application is not running.
  2. Modify the Listening ports in the engine.properties: ListenPort

Incorrect path to the properties file

<Timestamp>    ERROR    [Engine] Unable to initialize EngineAdaptor. Reason: Please check settings: Cannot open the file "<path>". No such file or directory.

Description or root cause

This message appears when the IncludeProperties property is specified with the non-existent path. 

Solution or troubleshooting steps

Change the value of the IncludeProperties property in the FIXEdge.properties file.

DEBUG

No OnActionFail is specified for the rule

<Timestamp>    DEBUG    [BL_RoutingTable]  No OnActionFail is specified for rule for 'Rule_Name'

Description or root cause

This message usually indicates that you have a routing rule, but haven’t specified what will happen if the Rule fails.

Solution or troubleshooting steps

This is not error, just indication that the <OnActionFail> condition might be also set up.

'StorageCreationTime' property was updated

<Timestamp>    DEBUG   [Engine]  "StorageCreationTime" is updated with the current date in the FIX log storage "<path to file>/<storage file name with timestamp>", because of parameter absence

Description or root cause

This message indicates that 'StorageCreationTime' property was updated in log storage. This message appears in case of re-using old FIX log storage with absent 'StorageCreationTime' property.

Solution or troubleshooting steps

This message can be ignored since it is not an error. 

WARN

The telecommunication link error

<Timestamp>    WARN    [Engine]  Session <Session_Name> : the telecommunication link error was detected (Connection::receive(), EOF)

Description or root cause

It means that the TCP connection was terminated unexpectedly by the counter-party, without Logouts exchange.

Solution or troubleshooting steps

Contact counter-party and query them for the sanity of their FIX adaptor/engine.

"MessageStorageType storageType" parameter is deprecated

<Timestamp>    WARN    [Engine]  Session <Session_Name> : FixEngine::CreateSession(...) "MessageStorageType storageType" parameter is deprecated. Please use SessionExtraParameters::storageType instead

Description or root cause

Some of the FIX Antenna API methods can become deprecated in the new version of the product's release. This message appears if the FIX Antenna API user creates the session with deprecated FixEngine::CreateSession API method and passes storage type not via SessionExtraParameters structure. It is recommended to pick another method for session creation.

Solution or troubleshooting steps

This message can be ignored. To remove this record from the log FIX Antenna user should use the non-deprecated FixEngine::CreateSession method.

The session was created in danger mode

<Timestamp>    WARN    [Engine]  Session <Session_Name> : session was created in danger mode - it does not use persistent message storage

Description or root cause

It means that a session uses transient storage, i.e. no log files with FIX messages will be created.

Solution or troubleshooting steps

In FIXEdge.properties file you can turn on logging for a session by setting 'FixLayer.FixEngine.Session.<SessionName>.StorageType = persistentMM' (or persistent). For Admin Session (a session between FIXEdge and FIXICC Agent) you need to change the property Monitoring.AdminSession.AdminClient.StorageType (which is in engine.properties file) accordingly, but we don’t recommend doing this for Admin Session - there will be quite a lot of messages.

Garbled message

<Timestamp>    WARN    [Engine]  Garbled message: <FIX_Message>

Description or root cause

The FIX Protocol takes the optimistic view; it presumes that a garbled message is received due to a transmission error rather than a FIX system problem. Therefore, if a Resend Request is sent the garbled message will be retransmitted correctly. If a message is not considered garbled then it is recommended that a session-level Reject message be sent.

What constitutes a garbled message:
• BeginString (tag #8) is not the first tag in a message or is not of the format 8=FIX.n.m.
• BodyLength (tag #9) is not the second tag in a message or does not contain the correct byte count.

Solution or troubleshooting steps

Make sure that the FIX message was re-transmitted correctly. If not, contact your counterparty regarding malformed messages from their side.

Parse Error: Incorrect size of a repeating group

Parse Error : Incorrect size of a repeating group. Expected: 1. In fact: 2. Parsing stopped at column: 228 in tag N/A in message E with sequence number 979

Description or root cause

This error will occur if the validation option 'verifyRepeatingGroupBounds' is enabled and FIX Engine receives a message with incorrect repeating group size. In this case, the FIX message will be rejected.

Before FIX Engine version 2.28.1 (and FIXEdge version 6.11.0), this parameter was always enabled.

Solution or troubleshooting steps

To revert this parameter after updating to the versions stated above, this parameter should be set to false. Additionally, for FIX Engine, the field should be set to false.

The authentication service doesn't send a response in time

<timestamp>   WARN    [LogonHandler]  <thread>  Session <SenderCompId, TargetCompId> : process logon failed  - request is timed out

Description or root cause

This WARN record occurs in the FixEdge.log file if FIXEdge doesn't receive a response in time.

Solution or troubleshooting steps

Check the incoming FIX session logs and if there are no messages User Response (BF) then the issue is on the Authentification Service side.

FIXEdge can't create a log directory in the specified path

<timestamp>   WARN    [Engine] Session <SenderCompId, TargetCompId>: There was an error while creating path <path>. Using default log directory <logDir>. The error reason: <err.message>.

Description or root cause

This WARN record occurs if FIXEdge C++ can't create a log directory for the FIX session in the specified path.

Solution or troubleshooting steps

Check the value of the LogDirectory property specified for this session.

The property was overridden 

<timestamp>   WARN    [Engine] The "<property_name>"property was overridden by the file <filename>.

Description or root cause

This message appears when the value of some property was overridden by another properties file.

Solution or troubleshooting steps

This message can be ignored.

INFO

The active session was closed non-gracefully

<Timestamp>    INFO    [Engine]  Session <Session_Name> : Change state: old state=Established new state=NonGracefullyTerminated
<Timestamp>    INFO    [Engine]  Session <Session_Name> : active session was closed non-gracefully (The confirming Logout message was received from the counterparty.)

Description or root cause

This message appears when the session was terminated by Logout and IntradayLogoutTolerance mode is enabled. This mode means that during the next session start the same set of logs will be used and the next Logon will be sent with sequence number previous+1 (unless you use ForceSeqNumReset=ALWAYS. See matrix of possible IntradayLogoutTolerance+ForceSeqNumReset combinations).

Solution or troubleshooting steps

This message doesn't indicate an issue, just informs that session was disconnected correctly and sequence numbers were preserved.

Reject task finished

<Timestamp>    INFO    [Engine]  Session <Session_Name> : Reject task finished

Description or root cause

 In FIXEdge there is an option to reject messages that should be routed into the session, which exists, but currently isn't available. This message appears when all such messages were rejected.

Solution or troubleshooting steps

This message doesn't indicate an issue, just informs that the task was finished.

The backup session has the same parameters as the primary session

FixEdge.log
<Timestamp>    INFO    [Engine]  Session <Session_Name> : The backup session has the same parameters as the primary session

Description or root cause

This message appears when the backup session has the same parameters as the primary session.

Solution or troubleshooting steps

This message doesn't indicate an issue, just informs that the backup session's parameters are the same as for the primary session.

A FIX Session storage type isn't specified

FixEdge.log
<Timestamp>   INFO    [Engine]  <thread> Session property 'Session.TESTSESSION.StorageType' is not found. PersistentMM storage type is used

Description or root cause

The option for storage type is not set so the most efficient storage type (PersistentMM) is used.

Solution or troubleshooting steps

Make sure that the storage type is specified correctly. Check if there are spaces between the property and its value.

New log message storage was created

FixEdge.log
<Timestamp>   INFO    [Engine]  <thread> Session <sender, target> : Created new [FIX/FAST] log storage with file name "<path to file>/<storage file name with timestamp>"

Description or root cause

This message appears when FIX Antenna creates new log message storage.

Solution or troubleshooting steps

This message doesn't indicate an issue, just informs that the task was finished.

LogDirectory property was specified with a non-existent path

FixEdge.log
<Timestamp>   INFO    [Engine] Session <sender, target>: Path <location> doesn't exist. Trying to create it.

Description or root cause

This message appears when the LogDirectory property was specified with the non-existent path for the FIX session.

Solution or troubleshooting steps

This message can be ignored. To use the particular existing log directory user must change the value of the LogDirectory property for the FIX session.