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

QueryTable Select/Update Lose Outer Stack on Parallelization Failure #5164

Closed
nbauernfeind opened this issue Feb 16, 2024 · 0 comments · Fixed by #5165
Closed

QueryTable Select/Update Lose Outer Stack on Parallelization Failure #5164

nbauernfeind opened this issue Feb 16, 2024 · 0 comments · Fixed by #5165
Assignees
Labels
bug Something isn't working core Core development tasks

Comments

@nbauernfeind
Copy link
Member

t = emptyTable(10).update("I = ii").partitionBy("I").transform({ _ -> throw new RuntimeException("test")})

Yields this exception:

r-Scheduler-Serial-1 | .c.ConsoleServiceGrpcImpl | Error running script: java.lang.RuntimeException: test
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:263)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
	at io.deephaven.dynamic.Script_6$_run_closure1.doCall(Script_6.groovy:2)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030)
	at groovy.lang.Closure.call(Closure.java:427)
	at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:50)
	at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:112)
	at jdk.proxy1/jdk.proxy1.$Proxy28.apply(Unknown Source)
	at io.deephaven.engine.table.impl.partitioned.PartitionedTableImpl.lambda$assertResultsStatic$8(PartitionedTableImpl.java:428)
	at io.deephaven.engine.table.impl.partitioned.TableTransformationColumn$OutputFormula.transformAndFill(TableTransformationColumn.java:153)
	at io.deephaven.engine.table.impl.partitioned.TableTransformationColumn$OutputFormula.fillChunk(TableTransformationColumn.java:132)
	at io.deephaven.engine.table.impl.sources.ViewColumnSource.fillChunk(ViewColumnSource.java:219)
	at io.deephaven.engine.table.impl.select.analyzers.SelectColumnLayer.doApplyUpdate(SelectColumnLayer.java:412)
	at io.deephaven.engine.table.impl.select.analyzers.SelectColumnLayer.lambda$doParallelApplyUpdate$3(SelectColumnLayer.java:280)
	at io.deephaven.engine.util.systemicmarking.SystemicObjectTracker.executeSystemically(SystemicObjectTracker.java:56)
	at io.deephaven.engine.table.impl.select.analyzers.SelectColumnLayer.doParallelApplyUpdate(SelectColumnLayer.java:279)
	at io.deephaven.engine.table.impl.select.analyzers.SelectColumnLayer.lambda$prepareParallelUpdate$0(SelectColumnLayer.java:246)
	at io.deephaven.engine.table.impl.util.JobScheduler.lambda$iterateParallel$1(JobScheduler.java:353)
	at io.deephaven.engine.table.impl.util.JobScheduler$IterationManager$TaskInvoker.execute(JobScheduler.java:255)
	at io.deephaven.engine.table.impl.util.JobScheduler$IterationManager.lambda$startTasks$0(JobScheduler.java:161)
	at io.deephaven.engine.table.impl.util.OperationInitializerJobScheduler.lambda$submit$0(OperationInitializerJobScheduler.java:37)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at io.deephaven.engine.context.ExecutionContext.lambda$apply$0(ExecutionContext.java:196)
	at io.deephaven.engine.context.ExecutionContext.apply(ExecutionContext.java:207)
	at io.deephaven.engine.context.ExecutionContext.apply(ExecutionContext.java:195)
	at io.deephaven.engine.table.impl.OperationInitializationThreadPool$1.lambda$newThread$0(OperationInitializationThreadPool.java:53)
	at java.base/java.lang.Thread.run(Thread.java:833)

I would expect to see the call to transform somewhere in the call stack. If this were not a toy script, it becomes rather difficult to figure out the source the exception. Any partition table transformation failure hits this kind of obscure issue.

I see a similar degenerate code path for the initialization of updateBy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working core Core development tasks
Projects
None yet
1 participant