823
ctx context.Context,
824
request *persistence.AddHistoryTasksRequest,
826
>
827
>
// do not try to get namespace cache within shard lock
828
>
namespaceID := namespace.ID(request.NamespaceID)
829
>
namespaceEntry, err := s.GetNamespaceRegistry().GetNamespaceByID(namespaceID)
830
>
if err != nil {
831
return err
832
}
833
835
>
836
>
// timeout check should be done within the shard lock, in case of shard lock contention
837
>
ctx, cancel, err := s.newDetachedContext(ctx)
838
>
if err != nil {
839
s.wUnlock()
840
return err
841
}
843
>
844
>
if err := s.errorByState(); err != nil {
845
s.wUnlock()
846
return err
847
}
848
>
if err := s.errorByNamespaceStateLocked(namespaceEntry.Name(), request.WorkflowID); err != nil {
context_impl.go
849
s.wUnlock()
850
return err
851
}
852
853
>
requestCompletionFn, err := s.taskKeyManager.setAndTrackTaskKeys(
context_impl.go
854
>
request.Tasks,
855
>
)
856
>
if err != nil {
857
s.wUnlock()
858
return err
859
}
860
862
>
s.wUnlock()
863
>
864
>
err = s.executionManager.AddHistoryTasks(ctx, request)
865
>
requestCompletionFn(err)
866
>
return s.handleWriteError(request.RangeID, err)
867
}
868