Error processing message

Hello, I had an issue whereby I missed a BLANK check and the code threw an exception at which point no more messages were processed. Seems wrong for calling code to not handle the exception Code snippet here with BLANk check added final short fid = (short) fieldEntry.fieldId(); final String name = fieldEntry.name(); if (Chains.REF_COUNT_FID == fid && Data.DataCode.BLANK != fieldEntry.code()) { refCount = ((int) fieldEntry.uintValue()); Exception Exception in thread "pool-55-thread-1" Exception Type='OmmInvalidUsageException', Text='Attempt to uintValue() while entry data is blank.', Error Code='-4048' at com.thomsonreuters.ema.access.EntryImpl.ommIUExcept(EntryImpl.java:628) at com.thomsonreuters.ema.access.EntryImpl.uintValue(EntryImpl.java:347) at com.nomura.estrat.reuters.ema.chains.ChainEventHandler.processChain(ChainEventHandler.java:92) at com.nomura.estrat.reuters.ema.chains.ChainEventHandler.onRefreshMsg(ChainEventHandler.java:47) at com.thomsonreuters.ema.access.ItemCallbackClientConsumer.notifyOnRefreshMsg(ItemCallbackClient.java:2561) at com.thomsonreuters.ema.access.ItemCallbackClient.processRefreshMsg(ItemCallbackClient.java:1789) at com.thomsonreuters.ema.access.ItemCallbackClient.defaultMsgCallback(ItemCallbackClient.java:1626) at com.thomsonreuters.upa.valueadd.reactor.Reactor.sendDefaultMsgCallback(Reactor.java:1894) at com.thomsonreuters.upa.valueadd.reactor.Reactor.sendAndHandleDefaultMsgCallback(Reactor.java:1909) at com.thomsonreuters.upa.valueadd.reactor.WlItemHandler.callbackUser(WlItemHandler.java:2940) at com.thomsonreuters.upa.valueadd.reactor.WlItemHandler.readRefreshMsg(WlItemHandler.java:2191) at com.thomsonreuters.upa.valueadd.reactor.WlItemHandler.readMsg(WlItemHandler.java:1905) at com.thomsonreuters.upa.valueadd.reactor.Watchlist.readMsg(Watchlist.java:292) at com.thomsonreuters.upa.valueadd.reactor.Reactor.performChannelRead(Reactor.java:2861) at com.thomsonreuters.upa.valueadd.reactor.Reactor.dispatchChannel(Reactor.java:2481) at com.thomsonreuters.upa.valueadd.reactor.ReactorChannel.dispatch(ReactorChannel.java:574) at com.thomsonreuters.ema.access.OmmBaseImpl.rsslReactorDispatchLoop(OmmBaseImpl.java:1487) at com.thomsonreuters.ema.access.OmmBaseImpl.run(OmmBaseImpl.java:1620) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748)

Best Answer

  • Gurpreet
    Answer ✓

    Hi @john.moorhouse,

    I think, it would be incorrect for a real-time SDK which promises to deliver every message, to handle/ignore an exception and continue working. You can view the source code at Refinitiv github site here, and propose a pull request for any deficiency.

    PS: You are using an older version of SDK, and should update to a latest one.