194
for {
195
select {
197
>
response.LastFirstEventId = event.LastFirstEventID
198
>
response.LastFirstEventTxnId = event.LastFirstEventTxnID
199
>
response.NextEventId = event.NextEventID
200
>
response.PreviousStartedEventId = event.PreviousStartedEventID
201
>
response.WorkflowState = event.WorkflowState
202
>
response.WorkflowStatus = event.WorkflowStatus
203
>
// Note: Later events could modify response.WorkerVersionStamp and we won't
204
>
// update it here. That's okay since this return value is only informative and isn't used for task dispatch.
205
>
// For correctness we could pass it in the Notification event.
206
>
eventVersionHistory, err := versionhistory.GetCurrentVersionHistory(event.VersionHistories)
207
>
if err != nil {
208
return nil, err
209
}
211
>
response.VersionHistories = event.VersionHistories
212
>
response.TransitionHistory = event.TransitionHistory
213
>
214
>
notifiedEventVersionItem, err := versionhistory.GetLastVersionHistoryItem(eventVersionHistory)
215
>
if err != nil {
216
return nil, err
217
}
218
// It is possible the notifier sends an out of date event, we can ignore this event.
219
>
if versionhistory.CompareVersionHistoryItem(notifiedEventVersionItem, request.VersionHistoryItem) < 0 {
get_workflow_util.go
220
continue
221
}
223
>
currentVersionedTransition := transitionhistory.LastVersionedTransition(transitionHistory)
224
>
if len(transitionHistory) != 0 && request.VersionedTransition != nil {
225
if transitionhistory.StalenessCheck(transitionHistory, request.VersionedTransition) != nil {
226
logger.Warn(fmt.Sprintf("Request versioned transition and transition history don't match after polling the mutable state. Request: %v, current: %v",