During the testing of my new non-interactive code, EMA reports error
“Attempt to submit( const UpdateMsg& ) using a registered handle”
To illustrate my usecase, I instructed application to:
(1) create record RIC
(2) create record RIC1
(3) update RIC
(4) update RIC1
(5) drop RIC
(6) create RIC2
(7) create RIC3
(8) update RIC3
(9) update RIC2
The moment I try to update RIC2, it report the error message and below is XML message trace from EMA Logger
TimeStamp: 14:45:58.949 ClientName: Provider_1_1 Severity: Verbose Text: Received RefreshMsg with market domain; Handle = 1000000000000, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:45:58.950 ClientName: Provider_1_1 Severity: Verbose Text: Received RefreshMsg with market domain; Handle = 1000000000001, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:46:22.143 ClientName: Provider_1_1 Severity: Verbose Text: Received UpdateMsg with market domain; Handle = 1000000000000, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:46:23.951 ClientName: Provider_1_1 Severity: Verbose Text: Received UpdateMsg with market domain; Handle = 1000000000001, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:46:35.455 ClientName: Provider_1_1 Severity: Verbose Text: Received StatusMsg with market domain; Handle = 1000000000000, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:46:56.079 ClientName: Provider_1_1 Severity: Verbose Text: Received RefreshMsg with market domain; Handle = 1000000000002, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:46:56.130 ClientName: ItemCallbackClient Severity: Error Text: Received an item event without user specified pointer or stream info Instance Name Provider_1_1 RsslReactor 0x0xf77930 RsslReactorChannel 0x0xf77930 RsslSocket 14 loggerMsgEnd loggerMsg TimeStamp: 14:47:09.647 ClientName: Provider_1_1 Severity: Verbose Text: Received RefreshMsg with market domain; Handle = 1000000000003, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:47:23.095 ClientName: Provider_1_1 Severity: Verbose Text: Received UpdateMsg with market domain; Handle = 1000000000003, user assigned streamId = 0. loggerMsgEnd loggerMsg TimeStamp: 14:47:30.439 ClientName: Provider_1_1 Severity: Error Text: Attempt to submit( const UpdateMsg& ) using a registered handle. loggerMsgEnd
Turn on EMA XML trace message and found unexpected stream id as below trace log. It looks like after EMA receive close message for "RIC" and the time I create "RIC2", the stream id is positive value "5" instead of negative value for Non-Interactive. I think this may cause the error when I update "RIC2".
<!-- End Message (Channel IPC descriptor = 14) --> <!-- Outgoing Message (Channel IPC descriptor = 14) --> <!-- Time: 14:46:23:951 --> <!-- rwfMajorVer="14" rwfMinorVer="0" --> <updateMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="-6" containerType="RSSL_DT_FIELD_LIST" flags="0x0" updateType="0 (RDM_UPD_EVENT_TYPE_UNSPECIFIED)" dataSize="35"> <dataBody> <fieldList flags="0x8 (RSSL_FLF_HAS_STANDARD_DATA)"> <fieldEntry fieldId="-9000" data="476F 2073 6565 206C 6120 6C61 206C 616E 64"/> <fieldEntry fieldId="22" data="0C11 B6"/> <fieldEntry fieldId="25" data="0C12 44"/> </fieldList> </dataBody> </updateMsg> <!-- End Message (Channel IPC descriptor = 14) --> <!-- Outgoing Message (Channel IPC descriptor = 14) --> <!-- Time: 14:46:35:455 --> <!-- rwfMajorVer="14" rwfMinorVer="0" --> <statusMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="-5" containerType="RSSL_DT_NO_DATA" flags="0x28 (RSSL_STMF_HAS_MSG_KEY|RSSL_STMF_HAS_STATE)" dataState="RSSL_DATA_NO_CHANGE" streamState="RSSL_STREAM_CLOSED" code="RSSL_SC_NOT_OPEN" text="Closed" dataSize="0"> <key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="1" name="RIC"/> <dataBody> </dataBody> </statusMsg> <!-- End Message (Channel IPC descriptor = 14) --> <!-- Outgoing Message (Channel IPC descriptor = 14) --> <!-- Time: 14:46:56:079 --> <!-- rwfMajorVer="14" rwfMinorVer="0" --> <refreshMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="5" containerType="RSSL_DT_FIELD_LIST" flags="0x148 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_REFRESH_COMPLETE|RSSL_RFMF_CLEAR_CACHE)" groupId="0" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="Refresh Completed" dataSize="8"> <key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="1" name="RIC2"/> <dataBody> <fieldList flags="0x8 (RSSL_FLF_HAS_STANDARD_DATA)"> <fieldEntry fieldId="22" data="0E03"/> </fieldList> </dataBody> </refreshMsg> <!-- End Message (Channel IPC descriptor = 14) --> <!-- Incoming Message (Channel IPC descriptor = 14) --> <!-- Time: 14:46:56:130 --> <!-- rwfMajorVer="14" rwfMinorVer="0" --> <closeMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="5" containerType="RSSL_DT_NO_DATA" flags="0x0" dataSize="0"> <dataBody> </dataBody> </closeMsg>
I'm using Elektron-SDK 1.0.8.
Do you know what can cause the error message and how to resolve the issue?