207
actualCurrentRunID := gocql.UUIDToString(conflictRecord["current_run_id"])
208
if actualCurrentRunID != requestCurrentRunID {
209
>
binary, _ := conflictRecord["execution_state"].([]byte)
errors.go
210
>
encoding, _ := conflictRecord["execution_state_encoding"].(string)
211
>
executionState := &persistencespb.WorkflowExecutionState{}
212
>
if state, err := serialization.DefaultDecoder.WorkflowExecutionStateFromBlob(p.NewDataBlob(binary, encoding)); err == nil {
213
executionState = state
214
}
215
// if err != nil, this means execution state cannot be parsed, just use default values
216
217
>
lastWriteVersion, _ := conflictRecord["workflow_last_write_version"].(int64)
errors.go
218
>
219
>
// TODO maybe assert actualCurrentRunID == executionState.RunId ?
220
>
221
>
return &p.CurrentWorkflowConditionFailedError{
222
>
Msg: fmt.Sprintf("Encounter current workflow error, request run ID: %v, actual run ID: %v",
223
>
requestCurrentRunID,
224
>
actualCurrentRunID,
225
>
),
226
>
RequestIDs: executionState.RequestIds,
227
>
RunID: executionState.RunId,
228
>
FirstExecutionRunID: executionState.FirstExecutionRunId,
229
>
State: executionState.State,
230
>
Status: executionState.Status,
231
>
LastWriteVersion: lastWriteVersion,
232
>
StartTime: timestamp.TimeValuePtr(executionState.StartTime),
233
>
}
234
}
235
return nil