Hi all,
please help me with this issue.
Context: EMA C++ based application, using an OmmProviderClient that downloads the Data dictionary over the Login connection.
Issue: timeout while downloading the dictionary (RWFFld is downloaded, RWFEnum isn't).
In the context of reqMsg for login request, the application starts the dictionary download as follows:
..registerClient(ReqMsg().name("RWFFld").filter(DICTIONARY_NORMAL).domainType(MMT_DICTIONARY), ..);
..registerClient(ReqMsg().name("RWFEnum").filter(DICTIONARY_NORMAL).domainType(MMT_DICTIONARY), ..);
From the EmaTrace logs, I can see that the application downloads all the 17255 entries expected in RWFFld within a single refresh message, but no messages at all are received for the request on RWFEnum.
After 15 seconds, the application is notified of the following event (I'd say by the EMA engine itself, due to RequestTimeout hit?):
StatusMsg
streamId="-2"
domain="Dictionary Domain"
state="Closed, Recoverable / Suspect / None / 'request is timeout'"
name="RWFEnum"
filter="7"
StatusMsgEnd
What could be the reason for this issue? A problem in the code, or something else?
Thanks
Best Regards,
Paolo
Please find an excerpt of the relevant messages exchanged over the connection:
<!-- Incoming Message (Channel IPC descriptor = 19) -->
<!-- Time: 7:22:21:400 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<requestMsg domainType="RSSL_DMT_LOGIN" streamId="1" containerType="RSSL_DT_NO_DATA" flags="0x4 (RSSL_RQMF_STREAMING)" dataSize="0">
<key flags="0x26 (RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE|RSSL_MKF_HAS_ATTRIB)" name="rmds" nameType="1" attribContainerType="RSSL_DT_ELEMENT_LIST">
<attrib>
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="AllowSuspectData" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="ApplicationId" dataType="RSSL_DT_ASCII_STRING" data="256"/>
<elementEntry name="DisableDataConversion" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="InstanceId" dataType="RSSL_DT_ASCII_STRING" data="ion"/>
<elementEntry name="ProvidePermissionExpressions" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="ProvidePermissionProfile" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="Role" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="SingleOpen" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="SingleOpenRequests" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="SupportProviderDictionaryDownload" dataType="RSSL_DT_UINT" data="1"/>
</elementList>
</attrib>
</key>
<dataBody>
</dataBody>
</requestMsg>
<!-- Outgoing Message (Channel IPC descriptor = 19) -->
<!-- Time: 7:22:21:401 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<refreshMsg domainType="RSSL_DMT_LOGIN" streamId="1" containerType="RSSL_DT_NO_DATA" flags="0x68 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_REFRESH_COMPLETE)" groupId="0" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="Login accepted" dataSize="0">
<key flags="0x26 (RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE|RSSL_MKF_HAS_ATTRIB)" name="rmds" nameType="1" attribContainerType="RSSL_DT_ELEMENT_LIST">
<attrib>
<elementList flags="0x0">
</elementList>
</attrib>
</key>
<dataBody>
</dataBody>
</refreshMsg>
<!-- Outgoing Message (Channel IPC descriptor = 19) -->
<!-- Time: 7:22:21:401 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<requestMsg domainType="RSSL_DMT_DICTIONARY" streamId="-1" containerType="RSSL_DT_NO_DATA" flags="0xC4 (RSSL_RQMF_STREAMING|RSSL_RQMF_HAS_QOS|RSSL_RQMF_HAS_WORST_QOS)" qosDynamic="0" qosRate="1" qosTimeliness="1" worstQosDynamic="0" worstQosRate="3" worstQosTimeliness="2" worstQosRateInfo="65535" dataSize="0">
<key flags="0xA (RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_FILTER)" name="RWFFld" filter="7"/>
<dataBody>
</dataBody>
</requestMsg>
<!-- Outgoing Message (Channel IPC descriptor = 19) -->
<!-- Time: 7:22:21:401 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<requestMsg domainType="RSSL_DMT_DICTIONARY" streamId="-2" containerType="RSSL_DT_NO_DATA" flags="0xC4 (RSSL_RQMF_STREAMING|RSSL_RQMF_HAS_QOS|RSSL_RQMF_HAS_WORST_QOS)" qosDynamic="0" qosRate="1" qosTimeliness="1" worstQosDynamic="0" worstQosRate="3" worstQosTimeliness="2" worstQosRateInfo="65535" dataSize="0">
<key flags="0xA (RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_FILTER)" name="RWFEnum" filter="7"/>
<dataBody>
</dataBody>
</requestMsg>
<!-- Incoming Message (Channel IPC descriptor = 19) -->
<!-- Time: 7:22:21:409 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<refreshMsg domainType="RSSL_DMT_DICTIONARY" streamId="-1" containerType="RSSL_DT_SERIES" flags="0x168 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_REFRESH_COMPLETE|RSSL_RFMF_CLEAR_CACHE)" groupId="0" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="" dataSize="706983">
<key flags="0xA (RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_FILTER)" name="RWFFld" filter="7"/>
<dataBody>
<series flags="0x7 (RSSL_SRF_HAS_SET_DEFS|RSSL_SRF_HAS_SUMMARY_DATA|RSSL_SRF_HAS_TOTAL_COUNT_HINT)" countHint="17255" containerType="RSSL_DT_ELEMENT_LIST">
<elementSetDefs>
<elementSetDef setId="0">
<elementSetDefEntry name="NAME" dataType="RSSL_DT_ASCII_STRING" />
<elementSetDefEntry name="FID" dataType="RSSL_DT_INT_2" />
<elementSetDefEntry name="RIPPLETO" dataType="RSSL_DT_INT_2" />
<elementSetDefEntry name="TYPE" dataType="RSSL_DT_INT_1" />
<elementSetDefEntry name="LENGTH" dataType="RSSL_DT_UINT_2" />
<elementSetDefEntry name="RWFTYPE" dataType="RSSL_DT_UINT_1" />
<elementSetDefEntry name="RWFLEN" dataType="RSSL_DT_UINT_2" />
<elementSetDefEntry name="ENUMLENGTH" dataType="RSSL_DT_UINT_2" />
<elementSetDefEntry name="LONGNAME" dataType="RSSL_DT_ASCII_STRING" />
</elementSetDef>
</elementSetDefs>
<summaryData>
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="Type" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="DictionaryId" dataType="RSSL_DT_INT" data="1"/>
<elementEntry name="Version" dataType="RSSL_DT_ASCII_STRING" data="4.20.44"/>
</elementList>
</summaryData>
<seriesEntry>
<elementList flags="0x2 (RSSL_ELF_HAS_SET_DATA)">
...
</elementList>
</seriesEntry>
...
</series>
</dataBody>
</refreshMsg>
// No other messages are sent or received on the RSSL_DMT_DICTIONARY domain
<!-- Outgoing Message (Channel IPC descriptor = 19) -->
<!-- Time: 7:22:36:402 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<closeMsg domainType="RSSL_DMT_DICTIONARY" streamId="-2" containerType="RSSL_DT_NO_DATA" flags="0x0" dataSize="0">
<dataBody>
</dataBody>
</closeMsg>