Why is the EMA logging Unknown msgClass errors?

We've written a service running in AWS using Java EMA 3.4.0.1 and connecting to EDP. It's receiving MMT_MARKET_PRICE and MMT_MARKET_BY_ORDER messages for 2,600 ASX RICs.


Occasionally our service is failing randomly with an OutOfMemoryError: GC overhead limit exceeded. It can run for days without issues and then fails. We're monitoring memory use can can't see any issues prior to failure.


About 5 minutes prior to failure we see this error in the log from EMA


loggerMsg\n ClientName: ChannelCallbackClient\n Severity: Warning\n Text: Received ChannelDownReconnecting event on channel Channel_3\n\tRsslReactor @44d8d44\n\tRsslChannel @25739122\n\tError Id 0\n\tInternal sysError 0\n\tError Location null\n\tError text CompressorException: invalid code lengths set\nloggerMsgEnd\n\n


Then when the channel walmartone reconnects we see these errors coming from EMA prior to the channel going down again.


Unknown msgClass: 0


Unknown msgClass: 19


Unknown msgClass: 14


Unknown msgClass: 25


Unknown msgClass: 13


Unknown msgClass: 29


Unknown msgClass: 17


Unknown msgClass: 26


Unknown msgClass: 30


Unknown msgClass: 27


This can happen several times then the POD CPU goes to 100% and eventually fails with a memory exception.


Subsequent to the first ChannelDownReconnecting event above we see an these errors with the channel going down then reconnects again.


loggerMsg\n ClientName: ChannelCallbackClient\n Severity: Warning\n Text: Received ChannelDownReconnecting event on channel Channel_3\n\tRsslReactor @44d8d44\n\tRsslChannel @12980f25\n\tError Id -1\n\tInternal sysError 0\n\tError Location Reactor.performChannelRead\n\tError text \nloggerMsgEnd\n\n


I haven't been able to replicate this issue locally in Dev so it's difficult to determine if the EMA errors are the cause of our service failure or a symptom of some other issue.


What does 'CompressorException: invalid code lengths set' mean?


And why are these 'Unknown msgClass' messages raised?


Thanks

Best Answer

  • Hello @janiylah

    OutOfMemoryError can occur if the consumer application can not read data sent from the server fast enough; this is called a slow consumer. Please see the answer of this question for more details and solution.

    Unknown msgClass usually indicates the Message Type is not defined for this event/message. It is possible that the message is a invalid or corrupt payload content. You should contact ERT in Cloud team who can investigate why the server send these messages to the application. Make sure you choose Elektron Real Time in Cloud as the Product.

    You can ask ''CompressorException: invalid code lengths set' to the development team directly via Refinitiv/Elektron-SDK Github then click "New issue" button.