1537
}
1538
1540
>
metrics.SpeculativeWorkflowTaskCommits.With(m.metricsHandler).Record(1,
1541
>
metrics.ReasonTag("close_transaction"))
1542
>
1543
>
wt := m.getWorkflowTaskInfo()
1544
>
1545
>
scheduledEvent := m.ms.hBuilder.AddWorkflowTaskScheduledEvent(
1546
>
wt.TaskQueue,
1547
>
durationpb.New(wt.WorkflowTaskTimeout),
1548
>
wt.Attempt,
1549
>
wt.ScheduledTime,
1550
>
)
1551
>
1552
>
if scheduledEvent.EventId != wt.ScheduledEventID {
1553
return serviceerror.NewInternalf("it could be a bug, scheduled event Id: %d for normal workflow task doesn't match the one from speculative workflow task: %d", scheduledEvent.EventId, wt.ScheduledEventID)
1554
}
1555
1557
>
// If WT was already started then started event is written to the history and
1558
>
// timeout timer task (for START_TO_CLOSE timeout) is created.
1559
>
1560
>
_ = m.ms.hBuilder.AddWorkflowTaskStartedEvent(
1561
>
scheduledEvent.EventId,
1562
>
wt.RequestID,
1563
>
"",
1564
>
wt.StartedTime,
1565
>
wt.SuggestContinueAsNew,
1566
>
wt.HistorySizeBytes,
1567
>
nil,
1568
>
wt.BuildIdRedirectCounter,
1569
>
wt.SuggestContinueAsNewReasons,
1570
>
m.targetWorkerDeploymentVersionChangedForStartedEvent(),
1571
>
)
1572
>
m.ms.hBuilder.FlushAndCreateNewBatch()
1573
>
1574
>
if err := m.ms.taskGenerator.GenerateStartWorkflowTaskTasks(
1575
>
scheduledEvent.EventId,
1576
>
); err != nil {
1577
return err
1578
}