Message encoding error in IProvider

I’m developing Interactive Publisher using Elektron SDK v1.2.0.

And I have multiple Services in EmaConfig.xml which are used to publish data and when the number of services is 5 or less everything works fine. All services on the list are identical except the Name and ServiceId fields which differ.

But adding 6th Service to the list I’ve got the following error in emaLog:

loggerMsg
TimeStamp: 09:39:47.658
ClientName: DirectoryHandler
Severity: Error
Text: Internal error: failed to encode RsslRDMDirectoryMsg in DirectoryHandler::handleDirectoryRequest()
Client handle 775567904
Instance Name Provider_1_1Error Id -21
Internal sysError 0
Error Location /local/jenkins/workspace/ESDKCore/OS/RH6-64/esdk/Cpp-C/Eta/Impl/RDM/rsslRDMDirectoryMsg.c:445
Error Text (ret = rsslEncodeArrayEntry(pEncodeIter, 0, &pInfo->dictionariesUsedList[j])) == RSSL_RET_SUCCESS
loggerMsgEnd

Is there a limit for the number of services or what can I do to add more than 5?

Best Answer

  • Jirapongse
    Answer ✓

    @dmitry.vasilenko

    The error ID (-21) is "buffer too small". Therefore, it means that the buffer reserved by EMA is too small to encode the source directory. EMA is open source so you directly increase the buffer size in the DirectoryHandler::initialize(...) method (Cpp-C\Ema\Src\Access\Impl\DirectoryHandler.cpp), and then rebuild the EMA package. Otherwise, you can contact the RDC or development team to fix this issue by:

    image

Answers

  • Confirm, increasing the buffer size in the DirectoryHandler::initialize fixes the issue. Thank you!