public override void Process(EventContext ctx)
        {
            if (ctx.Stack == null || !ctx.Stack.DateFixed.HasValue || ctx.Stack.DateFixed.Value >= ctx.Event.Date.UtcDateTime)
            {
                return;
            }

            Log.Trace().Message("Marking event as an regression.").Write();
            _stackRepository.MarkAsRegressed(ctx.Stack.Id);
            _eventRepository.MarkAsRegressedByStack(ctx.Event.OrganizationId, ctx.Stack.Id);

            _stackRepository.InvalidateCache(ctx.Event.ProjectId, ctx.Event.StackId, ctx.SignatureHash);

            ctx.Event.IsFixed = false;
            ctx.IsRegression  = true;
        }
Beispiel #2
0
        public override void Process(EventContext ctx)
        {
            if (ctx.StackInfo == null || !ctx.StackInfo.DateFixed.HasValue || ctx.StackInfo.DateFixed.Value >= ctx.Event.Date.UtcDateTime)
            {
                return;
            }

            Log.Trace().Message("Marking event as an regression.").Write();
            _stackRepository.MarkAsRegressed(ctx.StackInfo.Id);
            _eventRepository.MarkAsRegressedByStack(ctx.StackInfo.Id);

            string signatureHash = ctx.GetProperty <string>("__SignatureHash");

            _stackRepository.InvalidateCache(ctx.Event.StackId, signatureHash, ctx.Event.ProjectId);

            ctx.Event.IsFixed = false;
            ctx.IsRegression  = true;
        }
        public override async Task ProcessBatchAsync(ICollection <EventContext> contexts)
        {
            var stacks = contexts.Where(c => c.Stack != null && c.Stack.DateFixed.HasValue && c.Stack.DateFixed.Value < c.Event.Date.UtcDateTime).GroupBy(c => c.Event.StackId);

            foreach (var stackGroup in stacks)
            {
                try {
                    var context = stackGroup.First();
                    Log.Trace().Message("Marking stack and events as regression.").Write();
                    _stackRepository.MarkAsRegressed(context.Stack.Id);
                    _eventRepository.MarkAsRegressedByStack(context.Event.OrganizationId, context.Stack.Id);

                    _stackRepository.InvalidateCache(context.Event.ProjectId, context.Event.StackId, context.SignatureHash);

                    bool isFirstEvent = true;
                    foreach (var ctx in stackGroup)
                    {
                        ctx.Event.IsFixed = false;

                        // Only mark the first event context as regressed.
                        ctx.IsRegression = isFirstEvent;
                        isFirstEvent     = false;
                    }
                } catch (Exception ex) {
                    foreach (var context in stackGroup)
                    {
                        bool cont = false;
                        try {
                            cont = HandleError(ex, context);
                        } catch {}

                        if (!cont)
                        {
                            context.SetError(ex.Message, ex);
                        }
                    }
                }
            }
        }