Elektron Transport API Java Application Got Disconnected Randomly
Hi guys,
Our team is developing a Java application using ETA API to obtain and contribution information from TREP. I have been following the online guidance developing the consumer application and so far there's a concerning bug. Our application occasionally lost channel connection with TREP and we have to setup automatic recovering method to keep the market information live. The disconnect happens randomly, range from once a week to once a day. I have followed the following link's example to program the ping handler that will periodically check the channel status. I will assume the channel connection is bad if my ping action returns return code that's less than TransportReturnCodes.SUCCESS.
How can I trace down the root cause of this failing ping attempts? Is there something wrong with the client application / example code or the TREP ADS service?
Please help, and thank you for your time.
Answers
-
First, we need to determine which side (TREP or client application) has cut the connection.
Typically, when TREP cuts the connection, the reason for disconnection will show in the ADS log file. There are two reasons for TREP to cut the connection.
1. Buffer overflow condition. This indicates that the application is a slow consumer which is unable to handle the number of messages sent by ADS
User user at position 10.42.68.175/net on host host1 using application256 on channel 257 has been disconnected due to an overflow condition.
2. Ping timeout. This indicates that the application didn't send ping messages to ADS
RSSL disconnect from "user" at position "10.42.68.175/U8009686-TPL-A" on host "host1" using application "256" on channel 19.
Reason: Client application did not ping.Please verify the ADS log for the reason of disconnection if TREP has cut the connection.
0 -
I have confirmed with our engineer and they don't find any ADS logs around the time of disconnect. That's very strange. On the consumer client side, here's my client application log:
============================
PolarisMarketDataServer.log:2019-10-02 16:14:54,704 ERROR j.l.Class [Thread-3] channelInactive portno=java.nio.channels.SocketChannel[connected local=/172.18.228.106:35266 remote=njads1-1/192.168.5.207:14002]<SocketChannel.read returned -1 (end-of-stream)>.
PolarisMarketDataServer.log:2019-10-02 16:14:54,704 ERROR j.l.Class [Thread-3] Uninitializing Channel State is closed! SocketChannel.read returned -1 (end-of-stream)
PolarisMarketDataServer.log:2019-10-02 16:14:54,704 ERROR j.l.Class [Thread-3] ChannelSession Error: FAILURE in ETA Adapter receiving thread.SocketChannel.read returned -1 (end-of-stream)
PolarisMarketDataServer.log:2019-10-02 16:14:54,793 ERROR c.s.c.c.m.ETAPingHandler [SMBCScheduler_Worker-2] ETA send ping failed!socket channel is not in the active state for ping
============
Seems to me the disconnect is from the server side, not my client side. Can you please suggest how to diagnose this issue? Thank you!
0 -
My ping handler mainly does one thing, which is these lines of code from example above.
/* send ping to remote (connection) If failed, alert the clients. */
int ret = chnl.ping(error);
if (ret < TransportReturnCodes.SUCCESS)
{
return ret;
}
0 -
To see these logs, you need to set logMountRequests to True and logger*selector to *info in the TREP configuration file.
*ads*logMountRequests: True
*ads*logger*selector : *.info0 -
Update from @ccai via an email.
Hi,
I believe the logging is enabled on the server end by our developers. And I can see the overflow and timeout information in the logging. However, I don’t think the error log capture the system disconnect related to our application, rather, it captured other people’s mistakes. I need to go through the latest log again once it’s shared with me. So far I don’t find the log that helpful.
Can you please suggest other ways to debug or possible solutions? I am happy to call with your team anytime to resolve this issue. This really make us concerned about the production environment and the stability of the API.
0
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛