Open
Description
Hi,
I'm using an external predicate to read in csv data and apply these to the overrided predicate step
in DataFlow::SharedFlowStep
. This is nice because it allows me to make changes to the entire Dataflow easily, which is what I want.
This works, but for certain queries I get this error:
Oops! A fatal internal error occurred. Details:
java.lang.IllegalStateException: Tried to record two values for the extensional patchInfo. Old value: {[0, 29, foo, example.js, 5, example.js, false]}. New value: {[0, 29, foo, example.js, 5, example.js, false]}
at com.semmle.api.backend.ExtensionalValuesBase.put(ExtensionalValuesBase.java:82)
at com.semmle.cli2.execute.ExecuteQueriesCommand.loadExtensionals(ExecuteQueriesCommand.java:395)
at com.semmle.cli2.execute.ExecuteQueriesCommand$ExecutionIterator.startImpl(ExecuteQueriesCommand.java:235)
at com.semmle.cli2.execute.ExecuteQueriesCommand$ExecutionIterator.start(ExecuteQueriesCommand.java:192)
at com.semmle.cli2.execute.ExecuteQueriesCommand$ExecutionIterator.lambda$next$0(ExecuteQueriesCommand.java:187)
at com.semmle.util.concurrent.FutureUtils.supplyCompose(FutureUtils.java:248)
at com.semmle.util.concurrent.Paralleliser.lambda$startMoreJobs$3(Paralleliser.java:109)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
I'm pretty positive this is occurring due to another file using DataFlow::SharedFlowStep::step
which hits the external predicate more than once and causes errors.
I'm not sure if there is a way around this by perhaps:
- only loading the external predicate once
- forcing my class that overrides
DataFlow::SharedFlowStep::step
to run last
or some other fix.
Thanks!