"This stopwatch is already running" errors

Stardog is version 8.0.0

Occasionally with large queries (nested SELECTS, many OPTIONALs) we're getting the following error -
"java.lang.IllegalStateException: This stopwatch is already running."

We're not using any profiling settings.

Target database has just over 335M triples so not that large.
Similar query run on a database with over 850M triples works fine so doesn't appear to be related to size.

Stacktrace is :

java.lang.IllegalStateException: This stopwatch is already running.

at com.google.common.base.Preconditions.checkState(Preconditions.java:510) ~[guava-30.1.1-jre.jar:?]
at com.google.common.base.Stopwatch.start(Stopwatch.java:158) ~[guava-30.1.1-jre.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.VariableReplacementSolutionTable$3.reset(VariableReplacementSolutionTable.java:522) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.VariableReplacementSolutionTable.replaceConstants(VariableReplacementSolutionTable.java:237) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.VariableReplacementSolutionTable.compatibleWith(VariableReplacementSolutionTable.java:394) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.SolutionTable.lookup(SolutionTable.java:44) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp._nextLeft(HashJoinOp.java:245) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.BindJoin._nextLeft(BindJoin.java:223) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp.computeNext(HashJoinOp.java:178) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp.computeNext(HashJoinOp.java:43) ~[stardog-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.tryToComputeNext(AbstractSkippingIterator.java:183) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.hasNext(AbstractSkippingIterator.java:164) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.SolutionSequences.addAll(SolutionSequences.java:74) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp.addAll(HashJoinOp.java:339) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp.buildHashTable(HashJoinOp.java:321) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp._init(HashJoinOp.java:289) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp.computeNext(HashJoinOp.java:169) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.HashJoinOp.computeNext(HashJoinOp.java:43) ~[stardog-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.tryToComputeNext(AbstractSkippingIterator.java:183) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.hasNext(AbstractSkippingIterator.java:164) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.SingleProjectionOp.computeNext(SingleProjectionOp.java:95) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.impl.SingleProjectionOp.computeNext(SingleProjectionOp.java:32) ~[stardog-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.tryToComputeNext(AbstractSkippingIterator.java:183) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.hasNext(AbstractSkippingIterator.java:164) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.util.AutoCloseOperator.computeNext(AutoCloseOperator.java:121) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.util.AutoCloseOperator.computeNext(AutoCloseOperator.java:26) ~[stardog-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.tryToComputeNext(AbstractSkippingIterator.java:183) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.common.collect.AbstractSkippingIterator.hasNext(AbstractSkippingIterator.java:164) ~[stardog-utils-common-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.util.OpBasedBindingSetIteration.computeNext(OpBasedBindingSetIteration.java:117) ~[stardog-8.0.0.jar:?]
at com.complexible.stardog.plan.eval.operator.util.OpBasedBindingSetIteration.computeNext(OpBasedBindingSetIteration.java:38) ~[stardog-8.0.0.jar:?]
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:141) ~[guava-30.1.1-jre.jar:?]
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:136) ~[guava-30.1.1-jre.jar:?]
at com.complexible.common.base.CloseableIterator$2.computeNext(CloseableIterator.java:84) ~[stardog-utils-common-8.0.0.jar:?]
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:141) ~[guava-30.1.1-jre.jar:?]
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:136) ~[guava-30.1.1-jre.jar:?]
at com.complexible.common.rdf.query.IteratorAsTupleQueryResult.computeNext(IteratorAsTupleQueryResult.java:98) ~[stardog-utils-rdf-8.0.0.jar:?]
at com.complexible.common.rdf.query.IteratorAsTupleQueryResult.computeNext(IteratorAsTupleQueryResult.java:24) ~[stardog-utils-rdf-8.0.0.jar:?]
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:141) ~[guava-30.1.1-jre.jar:?]
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:136) ~[guava-30.1.1-jre.jar:?]
at com.stardog.stark.query.ClosingSpliterator.forEachRemaining(ClosingSpliterator.java:37) ~[stardog-stark-query-api-8.0.0.jar:?]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647) ~[?:1.8.0_332]
at com.stardog.stark.query.io.QueryResultWriters.write(QueryResultWriters.java:140) ~[stardog-stark-query-io-8.0.0.jar:?]
at com.stardog.stark.query.io.QueryResultWriters.write(QueryResultWriters.java:126) ~[stardog-stark-query-io-8.0.0.jar:?]
at com.complexible.stardog.protocols.http.server.ProtocolUtils.writeTupleResponse(ProtocolUtils.java:696) ~[stardog-protocols-http-server-8.0.0.jar:?]
at com.complexible.stardog.protocols.http.server.ProtocolUtils.executeReadQuery(ProtocolUtils.java:588) ~[stardog-protocols-http-server-8.0.0.jar:?]
at com.complexible.stardog.protocols.http.server.ProtocolUtils.executeReadQuery(ProtocolUtils.java:557) ~[stardog-protocols-http-server-8.0.0.jar:?]
at com.complexible.stardog.protocols.http.server.ProtocolUtils.executeReadQuery(ProtocolUtils.java:515) ~[stardog-protocols-http-server-8.0.0.jar:?]
at com.complexible.stardog.protocols.http.server.SPARQLProtocol.executeQuery(SPARQLProtocol.java:250) ~[stardog-protocols-http-server-8.0.0.jar:?]
at com.complexible.stardog.protocols.http.server.SPARQLProtocol.postSparqlQuery(SPARQLProtocol.java:174) ~[stardog-protocols-http-server-8.0.0.jar:?]

Hi Chris,

Yes, it's a known bug that's about to be fixed in the upcoming minor release (8.0.1). Do your queries have LIMIT with a small number, say, <500? If not, one workaround would be to add #pragma join.bind off on the first line after WHERE.

Let us know if it helps,
Pavel