File: error_event.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (33 lines) | stat: -rw-r--r-- 915 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# frozen_string_literal: true

class ErrorTracking::ErrorEvent < ApplicationRecord
  belongs_to :error, counter_cache: :events_count

  # Scrub null bytes
  attribute :payload, Gitlab::Database::Type::JsonPgSafe.new

  validates :payload, json_schema: { filename: 'error_tracking_event_payload' }

  validates :error, presence: true
  validates :description, presence: true, length: { maximum: 1024 }
  validates :level, length: { maximum: 255 }
  validates :environment, length: { maximum: 255 }
  validates :occurred_at, presence: true

  def stacktrace
    @stacktrace ||= ErrorTracking::StacktraceBuilder.new(payload).stacktrace
  end

  # For compatibility with sentry integration
  def to_sentry_error_event
    Gitlab::ErrorTracking::ErrorEvent.new(
      issue_id: error_id,
      date_received: occurred_at,
      stack_trace_entries: stacktrace
    )
  end

  def release
    payload['release']
  end
end