RET Adapter Toolkit Logs

In the following walkthrough, we will look at a typical RET Adapter all-<Adapter Name>.log file and briefly explain what the logs are describing. We will examine the log meanings and point out specific log outputs that require attention.

During a typical start up of the ExampleCalendarAdapter the adapter usually starts with the following line that explains the different parts of the adapter:

2015 Mar 19 11:40:20.200 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapter - **********Starting Calendar Adapter.********
2015 Mar 19 11:40:20.203 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapter - Version: null

Now the adapter loads up and displays a list of properties and configurations that you should check to ensure that the adapter is set up correctly:

2015 Mar 19 11:40:20.213 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.config.CalendarAdapterInitialiser - Loading datasource configuration properties file <E:\Development\Stash\rettoolkit\clients\Example\CalendarAdapter\Blade\DataSource\..\overrides\CalendarAdapter\etc\adapter.properties>
2015 Mar 19 11:40:20.251 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.config.CalendarAdapterInitialiser -
[Datasource Properties]
2015 Mar 19 11:40:20.251 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.config.CalendarAdapterInitialiser - No adapter configuration listener registered. Not loading any custom configuration

Next, the adapter will load the TrAPI connection properties that you can then check to ensure that it is connecting to the correct RET environment along with the correct users:

2015 Mar 19 11:40:20.276 +0000  -  [main] INFO  com.caplin.ret.trapi.configuration.TrAPIUnderlyingManager - Initialising connections
2015 Mar 19 11:40:20.314 +0000  -  [main] INFO  com.caplin.ret.trapi.configuration.TrAPIProperties -

There are properties which are common across all adapters, as well as adapter specific properties that you can view in the two sections below, under - [Common Properties] and [CalendarConnection. One important property to check is USE_MOCKS in order to see whether the adapter is running against mock data provided by the RETAdapterToolkit, or real data streamed via an external Reuters system:

[Common Properties]
USE_MOCKS = true, PORT = <SCS Relay port>, RECONNECTION_EXPONENTIAL_INITIAL_INTERVAL = 5, RET_LOG_ENABLED = true, HOST = <SCS Relay host>, RECONNECTION_EXPONENTIAL_MAX_INTERVAL = 600

This log output below displays all the possible properties that can be set along with the default values if none were set in the trapi-connection.properties file.

[CalendarConnection]
USE_MOCKS=true, SIMULATE_LOMS_TIMEOUT_CURRENCY_PAIR=, MODIFY_STRATEGY_TIMEOUT=120000, SIMULATE_LOMS_ACTIVE_ORDER_CURRENCY_PAIR=, CAN_TRADE_ON_SETTLEMENT_CCY_HOLIDAYS=null, TRAPI_PROPERTIES=,
STRATEGY_ACTIVATE_TRANSACTION_TIMEOUT=null, LBN_RECONNECTION_ATTEMPTS=0, CONNECTION_TYPE=direct_scs, ADD_USERSET_USERS=false, CONNECTION_POOL_KEY=default_connection_pool_key, RET_LOG_APPEND=true,
LOAD_CURRENCY_PAIRS=false, SIMULATE_LOMS_DORMANT_ORDER_CURRENCY_PAIR=, ADD_USER_TO_OWN_USERSET=true, CUSTOM_TRANSITIONS=, RET_LOG_ENABLED=true, ORDER_MODIFY_TRANSACTION_TIMEOUT=null,
HOST=<SCS Relay host>, RET_LOG_LOCATION=var, ORDER_TYPE=market, STRATEGY_SUBMIT_AND_ACTIVATE_TRANSACTION_TIMEOUT=null, LBN_LOG_LOCATION=var, CLIENT=null,
RECONNECTION_INTERVAL=5, INSTRUMENTS=, SIMULATE_LOMS_REGISTER_FAIL_CURRENCY_PAIR=, ENCRYPTION_TYPE=none, LOAD_INVERSE_CURRENCY_PAIRS=false, SL_MARKUP_SOURCE=null,
MARKET_ORDER_RESOURCE=GID.orders, USER_GROUPS_TO_LOAD=, PASSWORD=*****, LBN_MOCK_SERVER_HOST=<LBN Mock server host>, SIMULATE_LOMS_ACTIVATE_FAIL_CURRENCY_PAIR=, RECONNECTION_EXPONENTIAL_INITIAL_INTERVAL=5,
LBN_MOCK_SERVER_PORT=<LBN Mock server port>, USE_CHECK_PRICE_TOLERANCE=false, TP_MARKUP_SOURCE=null, TIMEOUT_MULTIPLIER=0.990, STRATEGY_LOCK_TRANSACTION_TIMEOUT=null, LBN_LOG_NAME=LBN_@.log,
TRADING_CONNECTION_STAGING_INTERVAL=5000, STRATEGY_SUBMIT_ONLY_TRANSACTION_TIMEOUT=null, TRANSFER_PROTOCOL=standard, SEND_PEER_INFO=false, RECONNECTION_ATTEMPTS=-1, USERSET_USERS=,
LIMIT_ORDER_RESOURCE=BT.Server.LOMS, DEFAULT_TRANSACTION_TIMEOUT=15000, USERNAME=username, RATE_SUBSCRIPTION_THREAD_POOL_SIZE=12, CONF_DIRECTORY=etc, USE_AS_MONITOR=false,
SIMULATE_LOMS_ORDER_FILL_CURRENCY_PAIR=, LBN_RESOURCE=GID.orders, LABEL=CalendarConnection, LAS_RESOURCE=GID.logs, LBN_HEARTBEAT=10, USE_COMPRESSION=false,
CURRENCY_PAIRS_TO_LOAD=, URL_ENCODE_TAKER_ORDER_CUSTOM=false, HEARTBEAT=10, STRATEGY_DEACTIVATE_TRANSACTION_TIMEOUT=null, START_LBN_MOCK_SERVER=false, RFQ_CONCURRENCY_LIMIT=1000,
LBN_LOG_APPEND=true, ORDER_ACCOUNT_TRANSACTION_TIMEOUT=null, PORT=<SCS Relay port>, USE_FOR_TRADING=false, STRATEGY_UNLOCK_TRANSACTION_TIMEOUT=null, ORDER_DELETE_TRANSACTION_TIMEOUT=null,
CACHE_ORDER_HISTORIES=true, RECONNECTION_EXPONENTIAL_MAX_INTERVAL=600, ORDER_CANCEL_TRANSACTION_TIMEOUT=null, RET_LOG_NAME=ret.log, SIMULATE_SETTLEMENT_DATES_FOR_CURRENCY_PAIRS=
2015 Mar 19 11:40:20.314 +0000  -  [main] INFO  com.caplin.ret.trapi.configuration.TrAPIUnderlyingManager - Using default configuration loader.

The following is a full list of TrAPI specific logs that are displayed on start up. Listed, are version numbers and license file usage:

2015 Mar 19 11:40:20.343 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using System Properties>
2015 Mar 19 11:40:20.345 +0000  -  [main] WARN  com.caplin.motif.fx.ret.common.configurationproperties.ConfigurationLoaderImpl - The configuration file <trapi.lic> does not exist in configuration directories
2015 Mar 19 11:40:20.345 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <Using licence file:>
2015 Mar 19 11:40:20.347 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <>
2015 Mar 19 11:40:20.347 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <TrAPI - Trading Application Interface Library: TrAPI-3.5.126.BD>
2015 Mar 19 11:40:20.348 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <TrAPI   using JavaLib: 3.5.953 (Core: 3.5.21.4 r232610)>
2015 Mar 19 11:40:20.348 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <TrAPI   using PrAPI: 1.0.129>
2015 Mar 19 11:40:20.348 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <TrAPI   using native JCL comms: 3.5.21.4 r232610>
2015 Mar 19 11:40:20.350 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <TrAPI   using Licence Handler: 23>
2015 Mar 19 11:40:20.350 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <TrAPI   using API Common: 2.0.63>
2015 Mar 19 11:40:20.350 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <>

These logs describe the creation of Reuters proxy user connections, based on the definitions in the trapi-configuration.properties file:

2015 Mar 19 11:40:20.350 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.DefaultConnectionManager - Connections created
2015 Mar 19 11:40:20.359 +0000  -  [main] INFO  com.caplin.ret.trapi.concurrent.ExecutorManager - Created scheduled single-threaded executor <com.caplin.ret.trapi.concurrent.executor.ScheduledSingleThreadExecutor@f7c31d>
2015 Mar 19 11:40:20.360 +0000  -  [main] INFO  com.caplin.ret.trapi.concurrent.ExecutorManager - Created scheduled single-threaded executor <com.caplin.ret.trapi.concurrent.executor.ScheduledSingleThreadExecutor@ff2413>
...

Inside the trapi-configuration.properties file the following property was set: ret_log_enabled=true. This information is displayed in the logs directly below, along with some other Reuters system properties:

2015 Mar 19 11:40:20.506 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using com.m_systems.trapi.log.enable:[true]>
2015 Mar 19 11:40:20.506 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using com.m_systems.trapi.log.location:[var]>
2015 Mar 19 11:40:20.506 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using com.m_systems.trapi.log.name:[ret.log]>
2015 Mar 19 11:40:20.506 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using com.m_systems.trapi.log.append:[true]>
2015 Mar 19 11:40:20.512 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using message log:[file:[E:\Development\Stash\rettoolkit\clients\Example\CalendarAdapter\Blade\DataSource\var\ret.log]]>
2015 Mar 19 11:40:20.718 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using com.m_systems.trapi.proxy_load_account_details:[true]>
2015 Mar 19 11:40:20.718 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** INFO ** Using com.m_systems.trapi.callback_threads:[10]>

The following set of logs indicate an error with the TrAPI connectivity, pointing out that the TrAPI licence is either missing or invalid:

2015 Mar 19 11:40:20.720 +0000  -  [main] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** ERROR ** com.m_systems.utils.TrAPI_e$b: Unable to read the licence stream.>
2015 Mar 19 11:40:20.722 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.ConnectionProperties - getMockCurrencyPairFormatsConfigurationFile() called on configuration loader
2015 Mar 19 11:40:20.722 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.ConnectionProperties - getMockCurrencyPairFormatsConfigurationFile() returning path <E:\Development\Stash\rettoolkit\clients\Example\CalendarAdapter\Blade\DataSource\etc\currency_pair_formats.csv>
2015 Mar 19 11:40:20.737 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.ConnectionProperties - GetMockCurrencySeedsConfigurationFile() called on configuration loader
2015 Mar 19 11:40:20.737 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.ConnectionProperties - GetMockCurrencySeedsConfigurationFile() returning path <E:\Development\Stash\rettoolkit\clients\Example\CalendarAdapter\Blade\DataSource\etc\currencyseeds.csv>
2015 Mar 19 11:40:20.761 +0000  -  [main] INFO  com.caplin.ret.trapi.rates.impl.TrAPIRatesProxy - TrAPIRatesProxy initialised for <username>
2015 Mar 19 11:40:20.764 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.ConnectionProperties - getMockCurrencyPairFormatsConfigurationFile() called on configuration loader
2015 Mar 19 11:40:20.765 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.ConnectionProperties - getMockCurrencyPairFormatsConfigurationFile() returning path <E:\Development\Stash\rettoolkit\clients\Example\CalendarAdapter\Blade\DataSource\etc\currency_pair_formats.csv>
2015 Mar 19 11:40:20.774 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.DefaultConnectionManager - Added connection for user <username> and label <CalendarConnection>
2015 Mar 19 11:40:20.775 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.DefaultConnectionManager - Connections created
2015 Mar 19 11:40:20.775 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.DefaultConnectionManager - Connections created
2015 Mar 19 11:40:20.775 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.DefaultConnectionManager - Connections created
2015 Mar 19 11:40:20.775 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.CompositeConnectionFactory - Composite Connection Manager initialised.
2015 Mar 19 11:40:21.168 +0000  -  [main] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Adding composite status listener <com.caplin.motif.fx.ret.calendar.CalendarAdapterStatusListener@51ef4e>
2015 Mar 19 11:40:21.169 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapterStatusListener - Received on status down.
2015 Mar 19 11:40:21.169 +0000  -  [main] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Adding composite status listener <com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher@6db33c>
2015 Mar 19 11:40:21.170 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Setting DataSource status to <DOWN>
2015 Mar 19 11:40:21.170 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Adapter already <DOWN>, doing nothing
2015 Mar 19 11:40:21.181 +0000  -  [main] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Created scheduled single-threaded executor <com.caplin.ret.trapi.concurrent.executor.ScheduledSingleThreadExecutor@c1186f>
2015 Mar 19 11:40:21.181 +0000  -  [main] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Adding connection label <CalendarConnection>
2015 Mar 19 11:40:21.183 +0000  -  [main] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Added RET Connection Status Listeners <[RETMarketOrderConnectionStatusListener{isUp=false, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}]>
2015 Mar 19 11:40:21.183 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.config.CalendarAdapterInitialiser - TrAPI manager initialised.
2015 Mar 19 11:40:21.183 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapter - Initiating connection to TrAPI
2015 Mar 19 11:40:21.183 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Attempting to set status <DOWN>, all connection status listeners <[RETMarketOrderConnectionStatusListener{isUp=false, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}]>, down connection status listeners <[RETMarketOrderConnectionStatusListener{isUp=false, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}]>

These sets of logs are describing a specific type of connection being made to a Reuters system. There are different types of connections that exist, in this case it's a MarketOrderConnection that is being initiated:

2015 Mar 19 11:40:21.183 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - Connect called for user <username> from host <SCS Relay host> and port <SCS Relay port>
2015 Mar 19 11:40:21.184 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - Connect called for user <username>
2015 Mar 19 11:40:21.184 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapterStatusListener - Received on status down.
2015 Mar 19 11:40:21.184 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - Calling PerformConnection for user: <username>,  Host: <SCS Relay host> Port: <SCS Relay port>
2015 Mar 19 11:40:21.184 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - Perform connection called for proxy user <username>, host<SCS Relay host>, port<SCS Relay port>, connection label <CalendarConnection> no client
2015 Mar 19 11:40:21.184 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - Connecting to RET for user <username>, host<SCS Relay host>, port<SCS Relay port> with connection label <CalendarConnection>
2015 Mar 19 11:40:21.184 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - Connection completed for user <username>, host<SCS Relay host>, port<SCS Relay port> with connection label <CalendarConnection>
2015 Mar 19 11:40:21.184 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - Connection successful for user <username>, host<SCS Relay host>, port<SCS Relay port> with connection label <CalendarConnection>

The specific type of connection — MarketOrderConnection — that was was initiated previously has now successfully connected to a Reuters system. The logs below describe how the connection status is now being set to <UP>:

2015 Mar 19 11:40:21.184 +0000  -  [main] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderEventListenerProxy - Set performReconnection to <true> for user <username>
2015 Mar 19 11:40:21.185 +0000  -  [main] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderEventListenerProxy - onConnect call for user <username>
2015 Mar 19 11:40:21.185 +0000  -  [main] INFO  com.caplin.ret.trapi.connection.MarketOrderConnection - User <username>: Connected successfully to host <SCS Relay host> and port <SCS Relay port>
2015 Mar 19 11:40:21.185 +0000  -  [main] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapter - Finished initiating to TrAPI, waiting for connection up or connection down callback
2015 Mar 19 11:40:21.186 +0000  -  [caplin.DedicatedSerialExecutor-<thread:0>] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderEventListenerProxy - Sending onTradingUnavailable to Trading Connection Listener for id <com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener/com.caplin.ret.trapi.connection.MarketOrderConnection/03ed3749-0786-47da-8685-e39560597313> for connection name <username>, label <CalendarConnection>
2015 Mar 19 11:40:21.184 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Setting DataSource status to <DOWN>
2015 Mar 19 11:40:21.186 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Adapter already <DOWN>, doing nothing
2015 Mar 19 11:40:21.186 +0000  -  [caplin.DedicatedSerialExecutor-<thread:0>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Receiving onConnectionDown connection event for user <username> and connection label <CalendarConnection>.
2015 Mar 19 11:40:21.186 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - After connection down called.
2015 Mar 19 11:40:21.186 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Set status to <DOWN>
2015 Mar 19 11:40:21.187 +0000  -  [caplin.DedicatedSerialExecutor-<thread:0>] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderEventListenerProxy - Sending onTradingAvailable to Trading Connection Listener for id <com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener/com.caplin.ret.trapi.connection.MarketOrderConnection/03ed3749-0786-47da-8685-e39560597313> for connection name <username>, label <CalendarConnection>
2015 Mar 19 11:40:21.187 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Connections in close of day awaiting reconnection <[]>
2015 Mar 19 11:40:21.187 +0000  -  [caplin.DedicatedSerialExecutor-<thread:0>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Receiving onConnectionUp connection event for user <username> and connection label <CalendarConnection>
2015 Mar 19 11:40:21.187 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Handling connection down for user <username> and connection label <CalendarConnection>.
2015 Mar 19 11:40:21.188 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Attempting to set listener <com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener/com.caplin.ret.trapi.connection.MarketOrderConnection/03ed3749-0786-47da-8685-e39560597313> status to <DOWN>
2015 Mar 19 11:40:21.188 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Setting listener <com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener/com.caplin.ret.trapi.connection.MarketOrderConnection/03ed3749-0786-47da-8685-e39560597313> status to DOWN
2015 Mar 19 11:40:21.188 +0000  -  [caplin.DedicatedSerialExecutor-<thread:0>] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderEventListenerProxy - Sending onTradingAvailable to Trading Connection Listener for id <com.caplin.ret.trapi.rates.impl.TrAPIRatesProxy:1426765220760> for connection name <username>, label <CalendarConnection>
2015 Mar 19 11:40:21.188 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - On Connection status Listener DOWN received  from listener <RETMarketOrderConnectionStatusListener{isUp=false, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}>

The logs directly below show the TrAPIRatesProxy that is used as a single entry point via the RETIntegrationAPI to receive all rate-related callbacks from the RET system:

2015 Mar 19 11:40:21.188 +0000  -  [caplin.DedicatedSerialExecutor-<thread:0>] INFO  com.caplin.ret.trapi.rates.impl.TrAPIRatesProxy - Received connection UP for user <username> and label <CalendarConnection>
2015 Mar 19 11:40:21.189 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Attempting to set status <DOWN>, all connection status listeners <[RETMarketOrderConnectionStatusListener{isUp=false, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}]>, down connection status listeners <[RETMarketOrderConnectionStatusListener{isUp=false, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}]>
2015 Mar 19 11:40:21.189 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapterStatusListener - Received on status down.
2015 Mar 19 11:40:21.189 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Setting DataSource status to <DOWN>
2015 Mar 19 11:40:21.189 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Adapter already <DOWN>, doing nothing
2015 Mar 19 11:40:21.189 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - After connection down called.
2015 Mar 19 11:40:21.189 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Set status to <DOWN>
2015 Mar 19 11:40:21.190 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Handling connection up for user <username> and connection label <CalendarConnection>
2015 Mar 19 11:40:21.190 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Attempting to set listener <com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener/com.caplin.ret.trapi.connection.MarketOrderConnection/03ed3749-0786-47da-8685-e39560597313> status to <UP>
2015 Mar 19 11:40:21.190 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener - Setting listener <com.caplin.motif.fx.ret.common.adapterstatus.RETMarketOrderConnectionStatusListener/com.caplin.ret.trapi.connection.MarketOrderConnection/03ed3749-0786-47da-8685-e39560597313> status to <UP>

These logs show that when one connection is <UP>, the datasource status will also be set as <UP>:

2015 Mar 19 11:40:21.191 +0000  -  [pool-22-thread-1] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - On Connection status Listener UP received  from listener <RETMarketOrderConnectionStatusListener{isUp=true, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}>
2015 Mar 19 11:40:21.191 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Attempting to set status <UP>, all connection status listeners <[RETMarketOrderConnectionStatusListener{isUp=true, connectionLabels=[CalendarConnection], connections=[Connection with user name [username]]}]>, down connection status listeners <[]>
2015 Mar 19 11:40:21.191 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.calendar.CalendarAdapterStatusListener - Received on status up. Clearing FXCalendarAdapter cache
2015 Mar 19 11:40:21.192 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Starting DataSource and setting status to <UP>

This log shows that the adapter is now <UP> and running, and thus should appear to be so on the Liberator status page:

2015 Mar 19 11:40:21.193 +0000  -  [caplin.DedicatedSerialExecutor-<thread:2>] INFO  com.caplin.motif.fx.ret.common.adapterstatus.CompositeStatusManager - Set status to <UP>

This log also show that the Liberator is sending a connection <UP> message as well:

2015 Mar 19 11:14:47.569 +0000  -  [datasource.peer(0)] INFO  com.caplin.motif.fx.ret.common.adapterstatus.AdapterStatusPublisher - Received connected message from peer <liberator1> with peer ID <0>

Request Handling logs

In the following logs throughout this section we will take a look at the ExampleCalendarAdapter request handling.

On thread 5 of thread pool 18 a request is made to receive the tenor date CALENDAR/TENORDATES/EURUSD/user1@caplin.com :

2015 Mar 19 11:19:08.545 +0000  -  [pool-18-thread-5] INFO  com.caplin.motif.fx.ret.calendar.request.CalendarServiceRequestListener - Received Tenor Dates request <RETTenorDateSubjectInfo [username=user1@caplin.com, getSubject()=/CALENDAR/TENORDATES/EURUSD/user1@caplin.com, getCurrencyPair()=EURUSD]> with callback <com.caplin.motif.fx.calendar.TenorDateDataProvider$1$1@126ec30c>

On thread 6 of thread pool 18 a request is made to receive the settlement date /CALENDAR/SETTLEMENTDATE/EURUSD/2015/04/user1@caplin.com :

2015 Mar 19 11:19:08.579 +0000  -  [pool-18-thread-6] INFO  com.caplin.motif.fx.ret.calendar.request.CalendarServiceRequestListener - Received Settlement Dates request for <RETSettlementDateSubjectInfo [username=user1@caplin.com, getSubject()=/CALENDAR/SETTLEMENTDATE/EURUSD/2015/04/user1@caplin.com, getCurrencyPair()=EURUSD, getYear()=2015, getMonth()=04]> on callback <com.caplin.motif.fx.calendar.SettlementDateDataProvider$1$1@46ff33c6>

TrAPILogger implements RET ILogDevice to handle RET log messages. You will see a lot of the following log lines as RET attempts to log every incoming message regardless of length. In the case of a historic trade request these lines can exceed two million characters, this then causes log4j to throw an OutOfMemoryError. Therefore, it is needed to truncate the log lines lines to 5000 characters in order to avoid running out of heap space:

2015 Mar 19 11:19:09.197 +0000  -  [pool-18-thread-3] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** DEBUG ** GID.DateServer connected>
2015 Mar 19 11:19:09.251 +0000  -  [WorkerThread 3] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** DEBUG ** GID.DateServer disconnected>
2015 Mar 19 11:19:09.251 +0000  -  [WorkerThread 3] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** DEBUG ** GID.DateServer completely disconnected>

These logs described data retrieval from Reuters for settlement date requests:

2015 Mar 19 11:19:10.414 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - GetValidSettlementDays called for year <2015> month <04> and currency pair <EURUSD>, instrument <FX.CROSS>
2015 Mar 19 11:19:10.416 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150403> for currency pair <EURUSD> is INVALID because it is a holiday other than a settlement currency holiday <[5]>
2015 Mar 19 11:19:10.416 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150404> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.417 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150405> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.418 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150406> for currency pair <EURUSD> is INVALID because it is a holiday other than a settlement currency holiday <[5]>
2015 Mar 19 11:19:10.420 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150411> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.421 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150412> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.428 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150418> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.429 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150419> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.431 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150425> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.432 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Date <20150426> for currency pair <EURUSD> is INVALID because it is a <rest day>
2015 Mar 19 11:19:10.434 +0000  -  [pool-18-thread-6] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Returning <[20150401, 20150402, 20150407, 20150408, 20150409, 20150410, 20150413, 20150414, 20150415, 20150416, 20150417, 20150420, 20150421, 20150422, 20150423, 20150424, 20150427, 20150428, 20150429, 20150430]> for GetValidSettlementDays called for year <2015> month <04> and currency pair <EURUSD>, instrument <FX.CROSS>
2015 Mar 19 11:19:10.435 +0000  -  [pool-18-thread-6] INFO  com.caplin.motif.fx.ret.calendar.request.CalendarServiceRequestListener - Generated settlement Dates for <EURUSD>  <04/2015> is <[20150401, 20150402, 20150407, 20150408, 20150409, 20150410, 20150413, 20150414, 20150415, 20150416, 20150417, 20150420, 20150421, 20150422, 20150423, 20150424, 20150427, 20150428, 20150429, 20150430]>

These logs describe data retrieval from Reuters for tenor date requests:

2015 Mar 19 11:19:10.446 +0000  -  [pool-18-thread-5] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Received GetTenorDates for currency pair <EURUSD> and instrument <FX.CROSS>
2015 Mar 19 11:19:10.446 +0000  -  [pool-18-thread-5] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - Retrieving Value dates for tenors <[ON, TODAY, TN, TOM, SPOT, 1D, SN, 1W, 2W, 3W, 1M, 2M, 3M, 4M, 5M, 6M, 7M, 8M, 9M, 10M, 11M, 1Y, 15M, 18M, 2Y, 3Y, 4Y, 5Y]> for requested currency pair <EURUSD> and instrument <FX.CROSS>

These logs describe data being published for a /CALENDAR/SETTLEMENTDATE/EURUSD/2015/04/user1@caplin.com request:

2015 Mar 19 11:19:10.447 +0000  -  [pool-18-thread-6] INFO  com.caplin.motif.fx.ret.calendar.request.CalendarServiceRequestListener - Published settlement Dates for <EURUSD>  <04/2015> is <[20150401, 20150402, 20150407, 20150408, 20150409, 20150410, 20150413, 20150414, 20150415, 20150416, 20150417, 20150420, 20150421, 20150422, 20150423, 20150424, 20150427, 20150428, 20150429, 20150430]>

As mentioned before, RET attempts to log every incoming message regardless of character length. In the case of a historic trade request these lines can exceed two million characters which can then cause log4j to throw an OutOfMemoryError. It is needed to truncate these lines to a max length of 5000 characters in order to avoid running out of heap space:

2015 Mar 19 11:19:10.482 +0000  -  [pool-18-thread-5] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** DEBUG ** GID.DateServer connected>
2015 Mar 19 11:19:10.577 +0000  -  [pool-18-thread-5] INFO  com.caplin.ret.trapi.logging.TrAPILogger - TrAPI Log ==> <** DEBUG ** GID.DateServer connected>

These logs describe data retrieval from Reuters for tenor date requests:

2015 Mar 19 11:19:10.629 +0000  -  [pool-18-thread-5] INFO  com.caplin.ret.trapi.fx.execution.impl.TrAPIMarketOrderCalendarService - GetTenorDates for currency pair <EURUSD> and instrument <FX.CROSS>. Tenors received <[ON, TODAY, TN, TOM, SPOT, 1D, SN, 1W, 2W, 3W, 1M, 2M, 3M, 4M, 5M, 6M, 7M, 8M, 9M, 10M, 11M, 1Y, 15M, 18M, 2Y, 3Y, 4Y, 5Y]> and final result to be returned <{10M=20160125, 11M=20160223, 15M=20160623, 18M=20160923, 1D=20150324, 1M=20150423, 1W=20150330, 1Y=20160323, 2M=20150526, 2W=20150407, 2Y=20170323, 3M=20150623, 3W=20150413, 3Y=20180323, 4M=20150723, 4Y=20190325, 5M=20150824, 5Y=20200323, 6M=20150923, 7M=20151023, 8M=20151123, 9M=20151223, ON=20150319, SN=20150324, SPOT=20150323, TN=20150320, TODAY=20150319, TOM=20150320}>

These logs display the log lines for a tenor date request:

2015 Mar 19 11:19:10.634 +0000  -  [pool-18-thread-5] INFO  com.caplin.motif.fx.ret.calendar.request.CalendarServiceRequestListener - Generated Tenor Dates for currency pair <EURUSD> is <{10M=20160125, 11M=20160223, 15M=20160623, 18M=20160923, 1D=20150324, 1M=20150423, 1W=20150330, 1Y=20160323, 2M=20150526, 2W=20150407, 2Y=20170323, 3M=20150623, 3W=20150413, 3Y=20180323, 4M=20150723, 4Y=20190325, 5M=20150824, 5Y=20200323, 6M=20150923, 7M=20151023, 8M=20151123, 9M=20151223, ON=20150319, SN=20150324, SPOT=20150323, TN=20150320, TODAY=20150319, TOM=20150320}>
2015 Mar 19 11:19:10.657 +0000  -  [pool-18-thread-5] INFO  com.caplin.motif.fx.calendar.TenorDates - Publishing {10M=20160125, 11M=20160223, 15M=20160623, 18M=20160923, 1D=20150324, 1M=20150423, 1W=20150330, 1Y=20160323, 2M=20150526, 2W=20150407, 2Y=20170323, 3M=20150623, 3W=20150413, 3Y=20180323, 4M=20150723, 4Y=20190325, 5M=20150824, 5Y=20200323, 6M=20150923, 7M=20151023, 8M=20151123, 9M=20151223, ON=20150319, SN=20150324, SPOT=20150323, TN=20150320, TODAY=20150319, TOM=20150320} Tenor Dates for subject /CALENDAR/TENORDATES/EURUSD/user1@caplin.com

These logs describe data being published for a /CALENDAR/TENORDATES/EURUSD/user1@caplin.com request:

2015 Mar 19 11:19:10.665 +0000  -  [pool-18-thread-5] INFO  com.caplin.motif.fx.ret.calendar.request.CalendarServiceRequestListener - Published Tenor Dates for currency pair <EURUSD> is <{10M=20160125, 11M=20160223, 15M=20160623, 18M=20160923, 1D=20150324, 1M=20150423, 1W=20150330, 1Y=20160323, 2M=20150526, 2W=20150407, 2Y=20170323, 3M=20150623, 3W=20150413, 3Y=20180323, 4M=20150723, 4Y=20190325, 5M=20150824, 5Y=20200323, 6M=20150923, 7M=20151023, 8M=20151123, 9M=20151223, SPOT=20150323, TODAY=20150319, TOM=20150320}>