typedb icon indicating copy to clipboard operation
typedb copied to clipboard

Unexpected error during traversal plan optimisation

Open lriuui0x0 opened this issue 3 years ago • 3 comments

Running grabl on new cluster get this:

[scip_sol.c:349] ERROR: invalid SCIP stage <10>
13:06:42.555 g.c.t.p.GraphPlanner ERROR [127.0.0.1:11729::cluster-client-rpc::2] - Graph Planner: {
	vertices:
		$n [thing] { hasIID: false, types: [name], predicates: [] } (end)
		$o [thing] { hasIID: false, types: [organisation], predicates: [] } (start)
	edges:
		($o H[HAS]T $n)
}
13:06:42.556 g.c.t.p.GraphPlanner ERROR [127.0.0.1:11729::cluster-client-rpc::2] - \ Generated by MPModelProtoExporter
\   Name             :
\   Format           : Free
\   Constraints      : 15
\   Variables        : 14
\     Binary         : 14
\     Integer        : 0
\     Continuous     : 0
Minimize
 Obj:
Subject to
 vertex_con_$o_has_incoming_edges: +1 vertex_var_$o_has_incoming_edges -1 edge_var_($n_H[HAS]T_$o)_is_selected  = 0
 vertex_con_$o_has_outgoing_edges: +1 vertex_var_$o_has_outgoing_edges -1 edge_var_($o_T[HAS]H_$n)_is_selected  = 0
 vertex_con_$o_starting_or_incoming: +1 vertex_var_$o_is_starting_vertex +1 vertex_var_$o_has_incoming_edges  = 1
 vertex_con_$o_ending_or_outgoing: +1 vertex_var_$o_is_ending_vertex +1 vertex_var_$o_has_outgoing_edges  = 1
 vertex_con_$n_has_incoming_edges: +1 vertex_var_$n_has_incoming_edges -1 edge_var_($o_T[HAS]H_$n)_is_selected  = 0
 vertex_con_$n_has_outgoing_edges: +1 vertex_var_$n_has_outgoing_edges -1 edge_var_($n_H[HAS]T_$o)_is_selected  = 0
 vertex_con_$n_starting_or_incoming: +1 vertex_var_$n_is_starting_vertex +1 vertex_var_$n_has_incoming_edges  = 1
 vertex_con_$n_ending_or_outgoing: +1 vertex_var_$n_is_ending_vertex +1 vertex_var_$n_has_outgoing_edges  = 1
 planner_vertex_con_one_starting_vertex: +1 vertex_var_$o_is_starting_vertex +1 vertex_var_$n_is_starting_vertex  = 1
 edge_con_($o_H[HAS]T_$n)_one_direction: +1 edge_var_($o_T[HAS]H_$n)_is_selected +1 edge_var_($n_H[HAS]T_$o)_is_selected  = 1
 edge_con_($o_T[HAS]H_$n)_order_if_selected: -1 edge_var_($o_T[HAS]H_$n)_is_selected +1 edge_var_($o_T[HAS]H_$n)_order_assignment[0]  = 0
 edge_con_($o_T[HAS]H_$n)_assign_order_number: -1 edge_var_($o_T[HAS]H_$n)_order_number +1 edge_var_($o_T[HAS]H_$n)_order_assignment[0]  = 0
 edge_con_($n_H[HAS]T_$o)_order_if_selected: -1 edge_var_($n_H[HAS]T_$o)_is_selected +1 edge_var_($n_H[HAS]T_$o)_order_assignment[0]  = 0
 edge_con_($n_H[HAS]T_$o)_assign_order_number: -1 edge_var_($n_H[HAS]T_$o)_order_number +1 edge_var_($n_H[HAS]T_$o)_order_assignment[0]  = 0
 planner_edge_con_one_edge_at_order_01: +1 edge_var_($o_T[HAS]H_$n)_order_assignment[0] +1 edge_var_($n_H[HAS]T_$o)_order_assignment[0]  = 1
Bounds
 0 <= vertex_var_$o_is_starting_vertex <= 1
 0 <= vertex_var_$o_is_ending_vertex <= 1
 0 <= vertex_var_$o_has_incoming_edges <= 1
 0 <= vertex_var_$o_has_outgoing_edges <= 1
 0 <= vertex_var_$n_is_starting_vertex <= 1
 0 <= vertex_var_$n_is_ending_vertex <= 1
 0 <= vertex_var_$n_has_incoming_edges <= 1
 0 <= vertex_var_$n_has_outgoing_edges <= 1
 0 <= edge_var_($o_T[HAS]H_$n)_is_selected <= 1
 0 <= edge_var_($o_T[HAS]H_$n)_order_number <= 1
 0 <= edge_var_($o_T[HAS]H_$n)_order_assignment[0] <= 1
 0 <= edge_var_($n_H[HAS]T_$o)_is_selected <= 1
 0 <= edge_var_($n_H[HAS]T_$o)_order_number <= 1
 0 <= edge_var_($n_H[HAS]T_$o)_order_assignment[0] <= 1
Binaries
 vertex_var_$o_is_starting_vertex
 vertex_var_$o_is_ending_vertex
 vertex_var_$o_has_incoming_edges
 vertex_var_$o_has_outgoing_edges
 vertex_var_$n_is_starting_vertex
 vertex_var_$n_is_ending_vertex
 vertex_var_$n_has_incoming_edges
 vertex_var_$n_has_outgoing_edges
 edge_var_($o_T[HAS]H_$n)_is_selected
 edge_var_($o_T[HAS]H_$n)_order_number
 edge_var_($o_T[HAS]H_$n)_order_assignment[0]
 edge_var_($n_H[HAS]T_$o)_is_selected
 edge_var_($n_H[HAS]T_$o)_order_number
 edge_var_($n_H[HAS]T_$o)_order_assignment[0]
End

13:06:42.559 g.c.r.RocksStorage ERROR [127.0.0.1:11729::cluster-client-rpc::2] - [INT11] Invalid Internal State: Unexpected error during traversal plan optimisation.
grakn.core.common.exception.GraknException: [INT11] Invalid Internal State: Unexpected error during traversal plan optimisation.
	at grakn.core.common.exception.GraknException.of(GraknException.java:55)
	at grakn.core.traversal.planner.GraphPlanner.throwPlanningError(GraphPlanner.java:372)
	at grakn.core.traversal.planner.GraphPlanner.optimise(GraphPlanner.java:355)
	at grakn.core.traversal.planner.Planner.tryOptimise(Planner.java:34)
	at grakn.core.traversal.Traversal.producer(Traversal.java:128)
	at grakn.core.traversal.TraversalEngine.producer(TraversalEngine.java:54)
	at grakn.core.traversal.TraversalEngine.producer(TraversalEngine.java:48)
	at grakn.core.reasoner.Reasoner.producer(Reasoner.java:165)
	at grakn.core.reasoner.Reasoner.lambda$execute$3(Reasoner.java:101)
	at grakn.core.common.iterator.MappedIterator.next(MappedIterator.java:40)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at grakn.core.common.iterator.AbstractResourceIterator.toList(AbstractResourceIterator.java:136)
	at grakn.core.reasoner.Reasoner.execute(Reasoner.java:101)
	at grakn.core.query.Matcher.execute(Matcher.java:120)
	at grakn.core.query.Matcher.execute(Matcher.java:116)
	at grakn.core.query.QueryManager.match(QueryManager.java:71)
	at grakn.core.server.rpc.query.QueryHandler.match(QueryHandler.java:104)
	at grakn.core.server.rpc.query.QueryHandler.handleRequest(QueryHandler.java:71)
	at grakn.core.server.rpc.TransactionRPC.handleRequest(TransactionRPC.java:101)
	at grakn.core.server.rpc.TransactionStream.handleRequest(TransactionStream.java:118)
	at grakn.core.server.rpc.TransactionStream.onNext(TransactionStream.java:82)
	at grakn.core.server.rpc.TransactionStream.onNext(TransactionStream.java:48)
	at io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(ServerCalls.java:255)
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailableInternal(ServerCallImpl.java:309)
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:292)
	at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:782)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

lriuui0x0 avatar Feb 25 '21 13:02 lriuui0x0

@haikalpribadi can't seem to reproduce this anymore :(

lriuui0x0 avatar Feb 25 '21 14:02 lriuui0x0

Okay we'll move this to backlog for now, till we can reproduce it again, @lriuui0x0

haikalpribadi avatar Feb 27 '21 19:02 haikalpribadi

Log from another instance of this happening:

14:32:28.299 g.c.t.p.GraphPlanner ERROR [grakn-core-service::0] - Graph Planner: {
	vertices:
		$n [thing] { hasIID: false, types: [name], predicates: [] } (start)
		$o [thing] { hasIID: false, types: [organisation], predicates: [] } (end)
	edges:
		($o T[HAS]H $n)
}
14:32:28.299 g.c.t.p.GraphPlanner ERROR [grakn-core-service::0] - \ Generated by MPModelProtoExporter
\   Name             : 
\   Format           : Free
\   Constraints      : 15
\   Variables        : 14
\     Binary         : 14
\     Integer        : 0
\     Continuous     : 0
Minimize
 Obj: 
Subject to
 vertex_con_$n_has_incoming_edges: +1 vertex_var_$n_has_incoming_edges -1 edge_var_($o_T[HAS]H_$n)_is_selected  = 0
 vertex_con_$n_has_outgoing_edges: +1 vertex_var_$n_has_outgoing_edges -1 edge_var_($n_H[HAS]T_$o)_is_selected  = 0
 vertex_con_$n_starting_or_incoming: +1 vertex_var_$n_is_starting_vertex +1 vertex_var_$n_has_incoming_edges  = 1
 vertex_con_$n_ending_or_outgoing: +1 vertex_var_$n_is_ending_vertex +1 vertex_var_$n_has_outgoing_edges  = 1
 vertex_con_$o_has_incoming_edges: +1 vertex_var_$o_has_incoming_edges -1 edge_var_($n_H[HAS]T_$o)_is_selected  = 0
 vertex_con_$o_has_outgoing_edges: +1 vertex_var_$o_has_outgoing_edges -1 edge_var_($o_T[HAS]H_$n)_is_selected  = 0
 vertex_con_$o_starting_or_incoming: +1 vertex_var_$o_is_starting_vertex +1 vertex_var_$o_has_incoming_edges  = 1
 vertex_con_$o_ending_or_outgoing: +1 vertex_var_$o_is_ending_vertex +1 vertex_var_$o_has_outgoing_edges  = 1
 planner_vertex_con_one_starting_vertex: +1 vertex_var_$n_is_starting_vertex +1 vertex_var_$o_is_starting_vertex  = 1
 edge_con_($o_T[HAS]H_$n)_one_direction: +1 edge_var_($o_T[HAS]H_$n)_is_selected +1 edge_var_($n_H[HAS]T_$o)_is_selected  = 1
 edge_con_($o_T[HAS]H_$n)_order_if_selected: -1 edge_var_($o_T[HAS]H_$n)_is_selected +1 edge_var_($o_T[HAS]H_$n)_order_assignment[0]  = 0
 edge_con_($o_T[HAS]H_$n)_assign_order_number: -1 edge_var_($o_T[HAS]H_$n)_order_number +1 edge_var_($o_T[HAS]H_$n)_order_assignment[0]  = 0
 edge_con_($n_H[HAS]T_$o)_order_if_selected: -1 edge_var_($n_H[HAS]T_$o)_is_selected +1 edge_var_($n_H[HAS]T_$o)_order_assignment[0]  = 0
 edge_con_($n_H[HAS]T_$o)_assign_order_number: -1 edge_var_($n_H[HAS]T_$o)_order_number +1 edge_var_($n_H[HAS]T_$o)_order_assignment[0]  = 0
 planner_edge_con_one_edge_at_order_01: +1 edge_var_($o_T[HAS]H_$n)_order_assignment[0] +1 edge_var_($n_H[HAS]T_$o)_order_assignment[0]  = 1
Bounds
 0 <= vertex_var_$n_is_starting_vertex <= 1
 0 <= vertex_var_$n_is_ending_vertex <= 1
 0 <= vertex_var_$n_has_incoming_edges <= 1
 0 <= vertex_var_$n_has_outgoing_edges <= 1
 0 <= vertex_var_$o_is_starting_vertex <= 1
 0 <= vertex_var_$o_is_ending_vertex <= 1
 0 <= vertex_var_$o_has_incoming_edges <= 1
 0 <= vertex_var_$o_has_outgoing_edges <= 1
 0 <= edge_var_($o_T[HAS]H_$n)_is_selected <= 1
 0 <= edge_var_($o_T[HAS]H_$n)_order_number <= 1
 0 <= edge_var_($o_T[HAS]H_$n)_order_assignment[0] <= 1
 0 <= edge_var_($n_H[HAS]T_$o)_is_selected <= 1
 0 <= edge_var_($n_H[HAS]T_$o)_order_number <= 1
 0 <= edge_var_($n_H[HAS]T_$o)_order_assignment[0] <= 1
Binaries
 vertex_var_$n_is_starting_vertex
 vertex_var_$n_is_ending_vertex
 vertex_var_$n_has_incoming_edges
 vertex_var_$n_has_outgoing_edges
 vertex_var_$o_is_starting_vertex
 vertex_var_$o_is_ending_vertex
 vertex_var_$o_has_incoming_edges
 vertex_var_$o_has_outgoing_edges
 edge_var_($o_T[HAS]H_$n)_is_selected
 edge_var_($o_T[HAS]H_$n)_order_number
 edge_var_($o_T[HAS]H_$n)_order_assignment[0]
 edge_var_($n_H[HAS]T_$o)_is_selected
 edge_var_($n_H[HAS]T_$o)_order_number
 edge_var_($n_H[HAS]T_$o)_order_assignment[0]
End

vmax avatar Apr 22 '21 14:04 vmax

The planner has now been overhauled with added fallbacks in case of planning errors. Resolved.

dmitrii-ubskii avatar Jan 11 '23 09:01 dmitrii-ubskii