Hello,
We are using the latest version of EMA Java 3.10.0.1 and we were connecting to RTO WebSocket.
Because of a known issue (https://github.com/Refinitiv/Real-Time-SDK/issues/338) we cannot download the Dictionary on this type of connection, which means we are using a local dictionary which is taken from that project as well. It seemed that we failed to update it in time when the dictionary from RT SDK project was updated, which led to the following situation.
We subscribed on MarketMakers & MarketPrice & MarketByPrice for AAPL.O, AAPL.PH, AAPL.A, AAPL.MEM etc and received the following uncaught exception in the output and then no data could be provided anymore for any symbol:
Exception in thread "pool-39-thread-1" java.lang.IllegalMonitorStateException
at java.base/java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:149)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1302)
at java.base/java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:439)
at com.refinitiv.ema.access.OmmConsumerImpl.handleJsonConverterError(OmmConsumerImpl.java:714)
at com.refinitiv.ema.access.OmmBaseImpl.reactorJsonConversionEventCallback(OmmBaseImpl.java:477)
at com.refinitiv.eta.valueadd.reactor.Reactor.performChannelRead(Reactor.java:5587)
at com.refinitiv.eta.valueadd.reactor.Reactor.dispatchAll(Reactor.java:9037)
at com.refinitiv.ema.access.OmmBaseImpl.rsslReactorDispatchLoop(OmmBaseImpl.java:2270)
at com.refinitiv.ema.access.OmmBaseImpl.run(OmmBaseImpl.java:2439)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
This stacktrace does not contain parts of our code, so we unsure what exactly we could do to fix/circumvent it.
With debug, errors such as this could be observed around that area of the code:
Error
channel: null
ErrorId: -1
sysError: 0
text: Failed to convert JSON message: {"ID":17,"Type":"Error","Text":"JSON Converter error: encountered unexpected fid = BOLO_IND while decoding FieldEntry","Debug":{"File":"com.refinitiv.eta.json.converter.JsonConverterBaseImpl","Line":829,"Message":"{"ID":17,"Type":"Update","UpdateType":"Quote","SeqNumber":25216,"Fields":{"BOLO_IND":"0","GV1_FLAG":" ","QTE_ORIGIN":" ","ODD_ASK":299.75,"SRC_ES_NS":"12:46:05.978137396","ORDRECV_MS":"12:46:05.977","ODD_ASKSIZ":2,"ODD_ASK_NS":"12:46:05.977721779","ODD_BID":299.67,"ODD_BIDSIZ":22,"ODD_BID_NS":"12:46:05.977792588"}}"}}
We updated the dictionary and we will pay more attention to keep it up to date.
But is there a way in which we can specify somewhere in the config that the json convertor should not fail on unknown fields?
Thanks