File tree Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -667,6 +667,9 @@ ProcessEvents:
667667
668668func (wth * workflowTaskHandlerImpl ) ProcessLocalActivityResult (lar * localActivityResult ) (interface {}, error ) {
669669 workflowContext := lar .task .wc
670+ workflowContext .Lock ()
671+ defer workflowContext .release ()
672+
670673 if workflowContext .currentDecisionTask != lar .task .decisionTask {
671674 // The possible case is decision task timeout while waiting for local activity to complete, then server would
672675 // generate a new new decision task, which could be dispatched to this same worker. In that case, the cached
@@ -680,9 +683,6 @@ func (wth *workflowTaskHandlerImpl) ProcessLocalActivityResult(lar *localActivit
680683 return nil , nil
681684 }
682685
683- workflowContext .Lock ()
684- defer workflowContext .release ()
685-
686686 eventDecisions , err := workflowContext .eventHandler .ProcessLocalActivityResult (lar )
687687 if err != nil {
688688 return nil , err
Original file line number Diff line number Diff line change @@ -239,6 +239,9 @@ func (wtp *workflowTaskPoller) processWorkflowTask(workflowTask *workflowTask) e
239239}
240240
241241func (wtp * workflowTaskPoller ) processLocalActivityResult (lar * localActivityResult ) error {
242+ workflowContext := lar .task .wc
243+ decisionStartTime := workflowContext .decisionStartTime
244+ decisionTask := workflowContext .currentDecisionTask
242245 completedRequest , err := wtp .taskHandler .(* workflowTaskHandlerImpl ).ProcessLocalActivityResult (lar )
243246 if err != nil {
244247 return err
@@ -247,11 +250,10 @@ func (wtp *workflowTaskPoller) processLocalActivityResult(lar *localActivityResu
247250 return nil
248251 }
249252
250- workflowContext := lar .task .wc
251- wtp .metricsScope .Timer (metrics .DecisionExecutionLatency ).Record (time .Now ().Sub (workflowContext .decisionStartTime ))
253+ wtp .metricsScope .Timer (metrics .DecisionExecutionLatency ).Record (time .Now ().Sub (decisionStartTime ))
252254
253255 responseStartTime := time .Now ()
254- if err = wtp .RespondTaskCompleted (completedRequest , workflowContext . currentDecisionTask ); err != nil {
256+ if err = wtp .RespondTaskCompleted (completedRequest , decisionTask ); err != nil {
255257 return err
256258 }
257259 wtp .metricsScope .Timer (metrics .DecisionResponseLatency ).Record (time .Now ().Sub (responseStartTime ))
You can’t perform that action at this time.
0 commit comments