fix(Query): Fix wrong path response for k-shortest paths (dgraph-io#6437
) (dgraph-io#6791)
The k-shortest path query sometimes returns a wrong response. The cause
of this issue is inappropriate use of sync.pools. Whenever a valid path
is found a new variable is assigned with this route and that variable is
appended in the kroutes (which is then parsed to produce response).
But the route is also put in the sync.pool. Since the route is a
structure containing a pointer to slice along with other fields, when
it is fetched back from the pool in future then any mutation on this fetched
route causes modification in the kroutes, resulting in garbage response.
This issue is fixed by making a copy of the route struct rather
than just assigning it to a variable, which causes a shallow copy.
(cherry picked from commit 4792d8b)