question

Upvotes
Accepted
45 1 3 6

RMDS Subscription Issue

Hi We currently have a process which subscriber to ric based on user request. Request goes as below

Step 1 : User request for RIC : ABC FID : 1 -> Process would place a view requesting for RIC and FID 1 in response

Step 2 : User request for RIC : ABC FID : 2 -> Process would place a view requesting for RIC and FID 1 and 2 in response

Step 3 : User is not actively looking at the RIC : ABC anymore. Our process would deregister the subscription as there is no active interest.

Step 4 :User at later point expresses interest to look at RIC : ABC. We would then create a new Subscription requesting for FID 1, followed by FID 1 and 2.

We observed when we resubscribe for the ric in step 4, we dont get responses certain time.

Below is how we frame the request in both the cases

private static Triple<OMMPool, OMMEncoder ,OMMMsg> buildRecordSubMsg(RmdsRecordKey recordKey, Set<RField> keys) { OMMEncoder encoder = subscriptionPool.acquireEncoder(); OMMMsg ricSubMsg = subscriptionPool.acquireMsg(); ricSubMsg.setMsgType(OMMMsg.MsgType.REQUEST); ricSubMsg.setMsgModelType(RDMMsgTypes.MARKET_PRICE); ricSubMsg.setPriority((byte) 1, 1); ricSubMsg.setAttribInfo(recordKey.serviceName, recordKey.ric, RDMInstrument.NameType.RIC); ricSubMsg = addView(ricSubMsg, keys, encoder); return Triple.of(subscriptionPool, encoder, ricSubMsg); } private static OMMMsg addView(OMMMsg msg, Set<RField> keys, OMMEncoder encoder) { return addView(msg, keys, encoder, null); } private static OMMMsg addView(OMMMsg msg, Set<RField> keys, OMMEncoder encoder, Integer indicationFlags) { if (indicationFlags == null) { msg.setIndicationFlags(OMMMsg.Indication.VIEW); } else { msg.setIndicationFlags(indicationFlags | OMMMsg.Indication.VIEW); } // @formatter:off encoder.initialize(OMMTypes.MSG, 2000); encoder.encodeMsgInit(msg, OMMTypes.NO_DATA, OMMTypes.ELEMENT_LIST); encoder.encodeElementListInit(OMMElementList.HAS_STANDARD_DATA, (short) 0, (short) 0); encoder.encodeElementEntryInit(RDMUser.View.ViewType, OMMTypes.UINT); encoder.encodeUInt(RDMUser.View.FIELD_ID_LIST); encoder.encodeElementEntryInit(RDMUser.View.ViewData, OMMTypes.ARRAY); encoder.encodeArrayInit(OMMTypes.INT, 0); Object[] rmdsKeys = keys.toArray(); for(Object key : rmdsKeys){ encoder.encodeArrayEntryInit(); encoder.encodeInt(((RField)key).id); } encoder.encodeAggregateComplete(); encoder.encodeAggregateComplete(); // @formatter:on OMMMsg viewSubMsg = (OMMMsg) encoder.getEncodedObject(); return viewSubMsg; }

treprfarfa-api
icon clock
10 |1500

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

Upvotes
Accepted
45 1 3 6

Hi
There was problem with the code on our side. Managed to resolve it on my side

Thanks
Prakash

icon clock
10 |1500

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

@prakash.chellappa, thanks for letting us know.

Upvotes
11.5k 16 7 10

Hi @prakash.chellappa

What is the RFA Java version that encounters the problem?

Can you replicate the issue on demand? If so, could you please enable the RFA trace file, replicate the issue and give us the RFA trace file when the problem occurs? The RFA trace file contains incoming/outgoing messages between the API and TREP server which will let us verify this issue in detail.

You can configure the following RFA Java configurations to enable the log file

  • <namespace>/Connections/<Connection Name>/ipcTraceFlags = 7
  • <namespace>/ Connections/<Connection Name>/mountTrace = True
  • <namespace>/ Connections/<Connection Name>/logFileName=<path to log file>

Example:

<node name="rsslConnection">
   <map>
      <entry key="connectionType" value="RSSL"/>
      <entry key="serverList" value="localhost"/>
      <entry key="portNumber" value="14002"/>
      <entry key="ipcTraceFlags" value="7"/>
      <entry key="mountTrace " value="True"/>
      <entry key="logFileName" value=".\logs\RSSL_%U.log"/>
   </map>
</node>
icon clock
10 |1500

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

Click below to post an Idea Post Idea