Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error and edgecase handling getting ignite data and updating table #1216

Open
Tracked by #1196
naleeha opened this issue Feb 21, 2024 · 1 comment
Open
Tracked by #1196

Error and edgecase handling getting ignite data and updating table #1216

naleeha opened this issue Feb 21, 2024 · 1 comment

Comments

@naleeha
Copy link
Contributor

naleeha commented Feb 21, 2024

Ignite order table should handle various error/edge case & return useful error message

e.g.
image

Do we want to let it throw or return result like Try/Success/Failure Either/This/That
https://blog.rockthejvm.com/idiomatic-error-handling-in-scala/

IgniteOrderDataProvider should handle errors better

  1. group all updates to the table/viewport so if sourcing of the data fails, minimize risk of various updates to table being in consistent state
  2. If getting data/updating fails, currently it throws exception and disconnect the VP. Need to catch and report it appropriately - do we need to report to ui or just log?
This was referenced Feb 21, 2024
@naleeha
Copy link
Contributor Author

naleeha commented Feb 22, 2024

Example error - when filter input fails on the ui and sends "undefined undefined undefined" to server, currently blows up

17:58:55.214 [viewPortExecutorRunner[4]7] INFO o.f.v.e.ignite.IgniteOrderStore - Loaded Ignite ChildOrder for 5156 rows, from index : 0 where order by
line 1:10 no viable alternative at input 'undefinedundefined'
17:58:55.255 [nioEventLoopGroup-3-5] ERROR o.f.vuu.viewport.ViewPortContainer - could not parse filter undefined undefined undefined
org.antlr.v4.runtime.misc.ParseCancellationException: null
at org.antlr.v4.runtime.BailErrorStrategy.recover(BailErrorStrategy.java:51)
at org.finos.vuu.grammar.FilterParser.term(FilterParser.java:513)
at org.finos.vuu.grammar.FilterParser.andExpression(FilterParser.java:221)
at org.finos.vuu.grammar.FilterParser.orExpression(FilterParser.java:164)
at org.finos.vuu.grammar.FilterParser.start(FilterParser.java:121)
at org.finos.vuu.core.filter.FilterSpecParser$.parse(FilterSpecParser.scala:49)
at org.finos.vuu.viewport.ViewPortContainer.$anonfun$parseFilter$1(ViewPortContainer.scala:406)
at scala.util.Try$.apply(Try.scala:210)
at org.finos.vuu.viewport.ViewPortContainer.parseFilter(ViewPortContainer.scala:406)
at org.finos.vuu.viewport.ViewPortContainer.change(ViewPortContainer.scala:429)
at org.finos.vuu.core.CoreServerApiHandler.process(CoreServerApiHandler.scala:272)
at org.finos.vuu.net.DefaultMessageHandler.handle(ClientConnectionCreator.scala:132)
at org.finos.vuu.net.RequestProcessor.handleViewServerMessage(RequestProcessor.scala:76)
at org.finos.vuu.net.RequestProcessor.handle(RequestProcessor.scala:43)
at org.finos.vuu.net.ViewServerHandler.handle(ViewServerHandler.scala:39)
at org.finos.vuu.net.ws.WebSocketServerHandler.handleWebSocketFrame(WebSocketServerHandler.scala:99)
at org.finos.vuu.net.ws.WebSocketServerHandler.channelRead0(WebSocketServerHandler.scala:29)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1471)
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1334)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1383)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.antlr.v4.runtime.NoViableAltException: null
at org.antlr.v4.runtime.atn.ParserATNSimulator.noViableAlt(ParserATNSimulator.java:2031)
at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:470)
at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:396)
at org.finos.vuu.grammar.FilterParser.term(FilterParser.java:387)
... 46 common frames omitted

@naleeha naleeha moved this to 📋 Backlog in Vuu board Apr 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 📋 Backlog
Development

No branches or pull requests

1 participant