Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
            }
        }