Open liuxiaomeiG opened 1 year ago
We have experienced this also in a non concurrent environment. PredecessorMap()
is guarded against nil access, I wonder if it was intended to leave it out in AdjacencyMap()
. If not, would you accept a PR to add an initialization if the edge.Target
is not found ?
@davidovich Yes. AdjacencyMap
should behave exactly as PredecessorMap
since these functions do the same thing but complement each other.
While investigating this issue, it appeared to me that the code is correct on assuming the presence of a vertex, hence it would be, IMHO, a bad fix to just initialize the map on an un-existing source vertex because that would create a degenerate edge.
In our implementation of the store interface, we hit a panic because the store was returning edges with vertices that did not exist. So I went and opened a PR for reporting that error instead of panicking.
Concurrent calls to AddVertex, AddEdge, and AdjacencyMap redundantly panic.
ListVertices and ListEdges directly occur AddVertex and AddEdge will cause this problem