Skip to content

Commit 4f3651c

Browse files
committed
traversal: fix race in interface metrics step
1 parent 72d7ce8 commit 4f3651c

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

cmd/allinone/allinone.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ var AllInOneCmd = &cobra.Command{
134134

135135
os.Setenv("SKYDIVE_ANALYZERS", fmt.Sprintf("%s:%d", addr, svcAddr.Port))
136136
os.Setenv("SKYDIVE_LOGGING_FILE_PATH", logFile+"-agent"+extension)
137-
137+
138138
agentAttr := &os.ProcAttr{
139139
Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
140140
Env: os.Environ(),

graffiti/graph/traversal/traversal.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,9 @@ func (tv *GraphTraversalV) Sort(ctx StepContext, keys ...interface{}) *GraphTrav
890890
sortBy = defaultSortBy
891891
}
892892

893+
tv.GraphTraversal.RLock()
893894
graph.SortNodes(tv.nodes, sortBy, sortOrder)
895+
tv.GraphTraversal.RUnlock()
894896

895897
return tv
896898
}

gremlin/traversal/topology.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,19 @@ func InterfaceMetrics(ctx traversal.StepContext, tv *traversal.GraphTraversalV,
3939
}
4040

4141
startField := key + ".Start"
42-
4342
tv = tv.Dedup(ctx, "ID", startField).Sort(ctx, common.SortAscending, startField)
4443

4544
if tv.Error() != nil {
4645
return NewMetricsTraversalStepFromError(tv.Error())
4746
}
4847

48+
tv.GraphTraversal.RLock()
49+
defer tv.GraphTraversal.RUnlock()
50+
4951
metrics := make(map[string][]common.Metric)
5052
it := ctx.PaginationRange.Iterator()
5153
gslice := tv.GraphTraversal.Graph.GetContext().TimeSlice
5254

53-
tv.GraphTraversal.RLock()
54-
defer tv.GraphTraversal.RUnlock()
55-
5655
nodeloop:
5756
for _, n := range tv.GetNodes() {
5857
if it.Done() {

0 commit comments

Comments
 (0)