public TaskIndexRecord AddMeta([NotNull] TaskMetaInformation taskMeta, [CanBeNull] TaskIndexRecord oldTaskIndexRecord) { var metricsContext = MetricsContext.For(taskMeta).SubContext("HandleTasksMetaStorage.AddMeta"); var globalNowTicks = globalTime.UpdateNowTimestamp().Ticks; var nowTicks = Math.Max((taskMeta.LastModificationTicks ?? 0) + PreciseTimestampGenerator.TicksPerMicrosecond, globalNowTicks); taskMeta.LastModificationTicks = nowTicks; using (metricsContext.Timer("EventLogRepository_AddEvent").NewContext()) eventLogRepository.AddEvent(taskMeta, eventTimestamp: new Timestamp(nowTicks), eventId: Guid.NewGuid()); var newIndexRecord = FormatIndexRecord(taskMeta); using (metricsContext.Timer("MinimalStartTicksIndex_AddRecord").NewContext()) minimalStartTicksIndex.AddRecord(newIndexRecord, globalNowTicks, taskMeta.GetTtl()); if (taskMeta.State == TaskState.New) { using (metricsContext.Timer("ChildTaskIndex_WriteIndexRecord").NewContext()) childTaskIndex.WriteIndexRecord(taskMeta, globalNowTicks); } using (metricsContext.Timer("TaskMetaStorage_Write").NewContext()) taskMetaStorage.Write(taskMeta, globalNowTicks); if (oldTaskIndexRecord != null) { using (metricsContext.Timer("MinimalStartTicksIndex_RemoveRecord").NewContext()) minimalStartTicksIndex.RemoveRecord(oldTaskIndexRecord, globalNowTicks); } return(newIndexRecord); }
public TaskIndexRecord AddTask([NotNull] Task task) { var metricsContextForTaskName = MetricsContext.For(task.Meta); if (task.Meta.Attempts == 0) { rtqProfiler.ProcessTaskCreation(task.Meta); metricsContextForTaskName.Meter("TasksQueued").Mark(); } using (metricsContextForTaskName.Timer("CreationTime").NewContext()) { task.Meta.TaskDataId = taskDataStorage.Write(task.Meta, task.Data); return(handleTasksMetaStorage.AddMeta(task.Meta, oldTaskIndexRecord: null)); } }