Discover Refinitiv
MyRefinitiv Refinitiv Perspectives Careers
Created with Sketch.
All APIs Questions & Answers  Register |  Login
Ask a question
  • Questions
  • Tags
  • Badges
  • Unanswered
Search:
  • Home /
  • TREP APIs /
  • RFA /
avatar image
Question by rodney.morris · Sep 26, 2016 at 11:51 PM · rfac++OMM

Bad directory data with multiple clients

Hi.

I'm connecting directly to our Elektron Edge Device, which has two services, ELEKTRON_AD and ELEKTRON_DD. I'm running software that instantiates multiple RFA client objects (derived from rfa::common::Client), using the same Session configuration. I'm using C++ RFA7.6.2.L1, I've also tried 7.6.1.E1, and 8.0.1.L1 (all win-shared, VS2013, windows 7).

The problem is that second and subsequent clients receive incorrect directory information.

To demonstrate the problem, example program "Consumer" (directory \Examples\Consumer in C++ RFA version 7.6.2.L1.win-shared) can be modified to show the problem. Modify Application.cpp, at line 157 insert "::Sleep(15000);". This makes the second and subsequent clients start up after a delay. Note that the problem doesn't manifest without the delay between clients starting up.

When configured with multiple clients, only the first client gets the expected directory data:

ConsumerClient_10 :
/Directory cache (Msg Refresh)
Service: ELEKTRON_AD  last action: Add
  INFO:
  ServiceId: 265
  Vendor: Reuters
  IsSource: False
  Capabilities:
  Dictionary
  MarketPrice
  MarketByOrder
  MarketByPrice
  MarketMaker
  SymbolList
  Invalid mmt(11)
  Invalid mmt(13)
  Invalid mmt(18)
  Invalid mmt(19)
  Invalid mmt(20)
  Invalid mmt(21)
  Invalid mmt(23)
  Invalid mmt(24)
  Invalid mmt(25)
  Invalid mmt(26)
  Invalid mmt(28)
  Invalid mmt(126)
  DictionariesProvided:
  RWFFld
  RWFEnum
  DictionariesUsed:
  RWFFld
  RWFEnum
  QoS:
  Timeliness: RealTime
  Rate: TickByTick
  SupportsQosRange: No
  SupportsOutOfBandSnapshots: Yes
  AcceptingConsumerStatus: No
  STATE:
  ServiceState: Up (Yes)
  AcceptingRequests: Yes
  Status:
  dataState: Ok
  streamState: Open
  statusCode: None
  statusText: Up

Second and subsequent clients get "bad" directory data:

ConsumerClient_11 :
/Directory cache (Msg Refresh)
Service: UNKNOWN  last action: Add
  INFO:
  ServiceId: 265
  Vendor:
  IsSource: False
  Capabilities:
  DictionariesProvided:
  DictionariesUsed:
  QoS:
  Timeliness: RealTime
  Rate: TickByTick
  SupportsQosRange: No
  SupportsOutOfBandSnapshots: Yes
  AcceptingConsumerStatus: No
  STATE:
  ServiceState: Down (No)
  AcceptingRequests: No
/End Directory cache (Msg Refresh)

My application configuration, which I would have attached but for whatever reason attachment upload isn't working:

\ConsumerClient_10\session = "Session1"
\ConsumerClient_10\service = "ELEKTRON_AD"
\ConsumerClient_10\itemList = "BHP.AX"
\ConsumerClient_10\msgModelRequestType = "marketPrice"
\ConsumerClient_10\msgModelDefaultDisplay = true 
\ConsumerClient_10\userName = "treprt"
\ConsumerClient_10\appId = "256"
\ConsumerClient_10\InstanceId = "<Instance Id>" 
\ConsumerClient_10\loadLocalDicts = false
\ConsumerClient_10\fieldDictionaryFilename = "./RDMFieldDictionary"
\ConsumerClient_10\enumDictionaryFilename = "./enumtype.def"
\ConsumerClient_10\directoryReqFilter = "SERVICE_INFO_FILTER | SERVICE_STATE_FILTER"
\ConsumerClient_10\SourceMirroringMode = "0"
\ConsumerClient_10\useEventQueue = true
\ConsumerClient_11\session = "Session1"
\ConsumerClient_11\service = "ELEKTRON_AD"
\ConsumerClient_11\itemList = "CBA.AX"
\ConsumerClient_11\msgModelRequestType = "marketPrice"
\ConsumerClient_11\msgModelDefaultDisplay = true 
\ConsumerClient_11\userName = "treprt"
\ConsumerClient_11\appId = "256"
\ConsumerClient_11\InstanceId = "<Instance Id>" 
\ConsumerClient_11\loadLocalDicts = false
\ConsumerClient_11\fieldDictionaryFilename = "./RDMFieldDictionary"
\ConsumerClient_11\enumDictionaryFilename = "./enumtype.def"
\ConsumerClient_11\directoryReqFilter = "SERVICE_INFO_FILTER | SERVICE_STATE_FILTER"
\ConsumerClient_11\SourceMirroringMode = "0"
\ConsumerClient_11\useEventQueue = true
\ConsumerClient_12\session = "Session1"
\ConsumerClient_12\service = "ELEKTRON_AD"
\ConsumerClient_12\itemList = "CBA.AX"
\ConsumerClient_12\msgModelRequestType = "marketPrice"
\ConsumerClient_12\msgModelDefaultDisplay = true 
\ConsumerClient_12\userName = "treprt"
\ConsumerClient_12\appId = "256"
\ConsumerClient_12\InstanceId = "<Instance Id>" 
\ConsumerClient_12\loadLocalDicts = false
\ConsumerClient_12\fieldDictionaryFilename = "./RDMFieldDictionary"
\ConsumerClient_12\enumDictionaryFilename = "./enumtype.def"
\ConsumerClient_12\directoryReqFilter = "SERVICE_INFO_FILTER | SERVICE_STATE_FILTER"
\ConsumerClient_12\SourceMirroringMode = "0"
\ConsumerClient_12\useEventQueue = true

I haven't included my RFA.cfg file, because obviously its contents are unique to my environment.

Notice the service name is "UNKNOWN". If you inspect the contents of the directory message more closely, it seems to contain what looks like "stale" data.

Our organisation has an RHS solution as well, and the problem does not manifest there - it only occurs when directly connecting to the Elektron Edge Device.

Because of the architecture of our application and our deployment environment, all clients need to use the same login/Session.

Is the above a bug in RFA? Is there something fundamentally wrong with my use of RFA here?

Thanks in advance!

People who like this

0 Show 5
Comment
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
REFINITIV
warat.boonyanit ♦♦ · Sep 27, 2016 at 07:07 AM 0
Share

Hi Rodney

I'm using both 7.6.2.L1 and 8.0.1.L1 but I was unable to reproduce the problem.

Since the problem occurs only when you connect directly to your Elektron Edge Device, you should try enable tracing and see if there is any unusual messages sent from Elektron Edge Device.

Otherwise, if you have the TR Developer Connect membership, then you should submit a TRDC ticket. The support team should be able to help you investigate.

https://customers.reuters.com/developer/crmcontactus/support.aspx

avatar image
rodney.morris warat.boonyanit ♦♦ · Oct 02, 2016 at 05:47 PM 0
Share

Thanks. I have enabled tracing, and see no unusual messages. Second and subsequent directory requests don't hit the wire.

As per Steven's reply below, I tried configuring multiple sessions (one per client), each using the same login credentials. I saw the same problem.

Unfortunately I don't have a TRDC membership.

avatar image
REFINITIV
warat.boonyanit ♦♦ rodney.morris · Oct 04, 2016 at 07:06 AM 0
Share

@rodney.morris

Could you please attached the trace file?

The way RFA API work is, if you use the same login credentials for multiple Session/OMMConsumer, it will not re-send the login and source directory request. The login and source directory response you get from the second login is from RFA internal cache.

Your issue looks like RFA internal cache corrupt. But since it worked on other providers (including mine), then I suspect that your Elektron Edge Device source directory response sent something special that corrupt the cache.

3 Replies

  • Sort: 
avatar image
REFINITIV
Best Answer
Answer by warat.boonyanit · Oct 10, 2016 at 05:18 AM

The way RFA API work is, if you use the same login credentials for multiple Session/OMMConsumer, RFA will not re-send the login and source directory request but it will use the information from RFA internal cache.

However, it seems that getting a group status message from Elektron Edge Device will break RFA internal directory cache.


This issue has been reported to development team.

Comment

People who like this

0 Show 2 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
REFINITIV
warat.boonyanit ♦♦ · Aug 10, 2017 at 12:36 AM 1
Share

Update

This issue has been fixed in RFA 8.1.0.L1.

avatar image
rodney.morris · Oct 17, 2016 at 06:38 PM 0
Share

Many thanks for your time and effort!

avatar image
REFINITIV
Answer by steven.peng · Sep 28, 2016 at 10:18 AM

Rodney,

The Readme file of the Consumer example has clearly indicated each consumer client must have it's own session and event queue. Your configuration shows all three consumer clients use the same session "Session1". If your connection is DACS enabled, the second and third client will receive login error because you can only login to the server once at a time. I tested the consumer with multiple clients connecting to server with either DACS enabled or disabled and they all worked fine with proper configuration. If you still encounter the same issue after changing your configuration, please turn on trace in the configuration, re-run the application and send the complete output file together with the source files to TRDC as suggested by Warat.

Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
Answer by rodney.morris · Aug 10, 2017 at 06:32 PM

Confirmed fixed in RFA 8.1.0.L1.

Thank you.

Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Watch this question

Add to watch list
Add to your watch list to receive emailed updates for this question. Too many emails? Change your settings >
10 People are following this question.

Related Questions

cleanup() halts on rfa::common::EventQueue::destroy()

OMMMsg uniqueness

Application crashing with error 80131506

In RFA Trade update, is TRDPRC_1 the price for the trade? How about IRGPRC? Also in Refresh, I some time see both TRDPRC_1 and IRGPRC exist, does mean there are two trades?

How to get all possible enum values in RFA C++?

  • Feedback
  • Copyright
  • Cookie Policy
  • Privacy Statement
  • Terms of Use
  • Careers
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Alpha
  • App Studio
  • Block Chain
  • Bot Platform
  • Calais
  • Connected Risk APIs
  • DSS
  • Data Fusion
  • Data Model Discovery
  • Datastream
  • Eikon COM
  • Eikon Data APIs
  • Elektron
    • EMA
    • ETA
    • WebSocket API
  • Legal One
  • Messenger Bot
  • Messenger Side by Side
  • ONESOURCE
    • Indirect Tax
  • Open PermID
    • Entity Search
  • Org ID
  • PAM
    • PAM - Logging
  • ProView
  • ProView Internal
  • Product Insight
  • Project Tracking
  • Refinitiv Data Platform
    • Refinitiv Data Platform Libraries
  • Rose's Space
  • Screening
    • Qual-ID API
    • Screening Deployed
    • Screening Online
    • World-Check One
    • World-Check One Zero Footprint
  • Side by Side Integration API
  • TR Knowledge Graph
  • TREP APIs
    • CAT
    • DACS Station
    • Open DACS
    • RFA
    • UPA
  • TREP Infrastructure
  • TRIT
  • TRKD
  • TRTH
  • Thomson One Smart
  • Transactions
    • REDI API
  • Velocity Analytics
  • Wealth Management Web Services
  • World-Check Data File
  • Explore
  • Tags
  • Questions
  • Badges