Skip to content

Commit 82f6320

Browse files
committed
[core] when getting task traits, retrieve parent only once for thread safety
1 parent 56edb77 commit 82f6320

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

core/task/task.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -242,20 +242,18 @@ func (t *Task) GetControlMode() controlmode.ControlMode {
242242
return controlmode.DIRECT
243243
}
244244

245-
func (t *Task) GetTraits() Traits {
246-
if class := t.GetTaskClass(); class != nil {
247-
if t.GetParent() != nil {
248-
return t.GetParent().GetTaskTraits()
249-
}
245+
func getTraits(role parentRole) Traits {
246+
if role != nil {
247+
return role.GetTaskTraits()
250248
}
251249
return Traits{}
252250
}
253251

254-
// lock-free version of GetTraits
255-
func (t *Task) getTraits() Traits {
252+
func (t *Task) GetTraits() Traits {
256253
if class := t.GetTaskClass(); class != nil {
257-
if t.parent != nil {
258-
return t.parent.GetTaskTraits()
254+
parent := t.GetParent()
255+
if parent != nil {
256+
return getTraits(parent)
259257
}
260258
}
261259
return Traits{}
@@ -535,7 +533,7 @@ func (t *Task) SendEvent(ev event.Event) {
535533
Hostname: t.hostname,
536534
ClassName: t.className,
537535
Path: t.getParentRolePath(),
538-
Traits: traitsToPbTraits(t.getTraits()),
536+
Traits: traitsToPbTraits(getTraits(t.parent)),
539537
}
540538

541539
if t.parent == nil {

0 commit comments

Comments
 (0)