question

Upvotes
Accepted
20 1 2 6

Legacy code SSL (market data) does not work with the latest version of dictionary/appendix_a

Hi,

In our company we still have a couple of applications that still run using the legacy API (SSL based). We tried to update these apps using the latest version of RDMFieldDictionary and appendix_a. Unfortunately after the dictionary update these applications fail to get any updates from the server after an interest (source, ricname) is registered with the server. But as soon as we revert back to the old RDMFieldDictionary and appendix_a things get back to normal.

The rfa library version used in these applications is: 7.6.1. When running the applications using the latest versions of RDMFieldDictionary and appendix_a the following error happens:

SURF_PB::0#AMCHNCNHGOV, STALE

********Info Message : MARKET_DATA_ITEM_EVENT, service = SURF_PB, item = 0#AMCHNCNHGOV, MarketDataMessageType = STATUS, MarketDataItemStatus = { state: STALE, code: NONE, text: "Waiting on data dictionary... "}, data = NULL


Nov 04, 2021 12:57:41 PM com.reuters.rfa.internal.session.md.DictLoader$DataDictInfoWatchEntry runImpl

INFO: com.reuters.rfa.session

Attempt to download MarketFeed dictionary failed

Exception requesting dictionary: Unable to open or read specified input file


Does anyone have any idea why? I would appreciate your help. Many thanks in advance.


rfa-apisslservice-dictionary
icon clock
10 |1500

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

Upvote
Accepted
23.5k 84 10 22

Hi @AMofidy-Rouhi

How old were the previous versions - the version number should be near the start of the files?

Are you loading them from a local file or trying to request + download them from an ADS/P2PS server?

Also, I would not expect you to use both an RDMFieldDictionary + appendix_a file.

You would use either one of the following pairs

  1. RDMFieldDictionary + enumtype.def (matching pair) OR
  2. appendix_a + enumtype.def (matching pair)

Also, there is a format/content difference between an RDMFieldDictionary and an appendix_a file.

RDMFieldDictionary is the newer format for OMM data / RSSL connections and appendix_a is the older format for MarketFeed data / SSL connections - which is the type you are using.

However, an ADS/P2PS normally converts an RDMFieldDictionary to appendix_a when downloaded via an SSL connection by a MarketFeed application.

If you are loading local files, then I do not believe legacy RFA MF can convert from RDMFieldDictionary to the legacy format of appendix_a.


icon clock
10 |1500

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

@umer.nalla Hi and thanks for the response. It has been really useful. You have to forgive me in case I ask any stupid question as I am a newbie in this particular field. Here are the version information both for the new and old appendix_a files:

OLD

Version 4.10_RMDS_12.41 03-06-2011

Modified 03/06/2011 at Bangkok:- This file is a based on appendixa.dat from RDFD V4.10.

NEW

Version 4.20.24_TREP_16.41 05/12/2016

Modified 05/12/2016 at Oak Brook - This file is a based on APPENDIXA.DAT from RDMD V4.20.24.

The answer to your question regarding loading the file is that the file is loaded from my local drive. In my application set up there is RMDS config file from which the following snippet comes from:

<node name="SSL_TULConnection">

<map>

<entry key="connectionType" value="SSL" />

<entry key="downloadDataDict" value="false" />

<entry key="downloadFullMarketFeedDataDict" value="false" />

<entry key="ipcTraceFlags" value="15" />

<entry key="enumTypeFile" value="C:\PDD\RMDSConfiguration\NewDics\enumtype.def" />

<entry key="masterFidFile" value="C:\PDD\RMDSConfiguration\NewDics\appendix_a" />

<entry key="portNumber" value="8101" />

</map>

</node>

Would it be possible downloading the latest appendix_a work by setting downloadDataDict and downloadFullMarketFeedDataDict to true?

Upvotes
14.3k 23 8 12

Hello @AMofidy-Rouhi

According to your RFA Java configuration, you set the API to download the dictionary files from a local folder "C:\PDD\RMDSConfiguration\NewDics\" location. Do the appendix_a and enumtype.def files available in that folder?

icon clock
10 |1500

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

@wasin.w Hi and thanks for coming back to me.

The two key entries in the configuration tell the library where to pick the files from in case they are on the disk. When I tested earlier by removing the two keys and having this key set to true: <entry key="downloadDataDict" value="true" /> I guess the appendix_a gets downloaded (in-memory) as the application works flawlessly. Also when the aforementioned keys are removed from the config and we have the setting <entry key="downloadDataDict" value="false" /> the application fails due to lack of dictionary which is appendix_a when utilizing the SSL libraries.

Upvote
23.5k 84 10 22

Hi @AMofidy-Rouhi

That's great news - we always advise customers to not use local dictionary files - as you then have the overhead of constantly updating them.

Please continue to use the download option - that way your app will get the versions on your organisation's ADS (P2PS) - which your MDS team should be updating regularly.


icon clock
10 |1500

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

Hi @AMofidy-Rouhi

I should also mention that we recommend customers with legacy API applications seriously consider migrating them to a newer strategic API

Migrating from the Legacy Robust Foundation API (RFA) to the Enterprise Message API (EMA) | Refinitiv Developers

As you will see from the above, the newer EMA Java and EMA C++ are much easier to learn and code(+ far less code to maintain) - and will ensure longer-term support for newer OSs, compilers, IDEs etc