Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
0409f2aea9
commit
d6c434108c
|
@ -7,7 +7,7 @@ class Packages::Package < ApplicationRecord
|
|||
include Gitlab::Utils::StrongMemoize
|
||||
|
||||
DISPLAYABLE_STATUSES = [:default, :error].freeze
|
||||
INSTALLABLE_STATUSES = [:default].freeze
|
||||
INSTALLABLE_STATUSES = [:default, :hidden].freeze
|
||||
|
||||
enum package_type: {
|
||||
maven: 1,
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
module ErrorTracking
|
||||
class CollectErrorService < ::BaseService
|
||||
include Gitlab::Utils::StrongMemoize
|
||||
|
||||
def execute
|
||||
# Error is a way to group events based on common data like name or cause
|
||||
# of exception. We need to keep a sane balance here between taking too little
|
||||
|
@ -43,16 +45,29 @@ module ErrorTracking
|
|||
end
|
||||
|
||||
def exception
|
||||
event['exception']['values'].first
|
||||
strong_memoize(:exception) do
|
||||
# Find the first exception that has a stacktrace since the first
|
||||
# exception may not provide adequate context (e.g. in the Go SDK).
|
||||
entries = event['exception']['values']
|
||||
entries.find { |x| x.key?('stacktrace') } || entries.first
|
||||
end
|
||||
end
|
||||
|
||||
def stacktrace_frames
|
||||
strong_memoize(:stacktrace_frames) do
|
||||
exception.dig('stacktrace', 'frames')
|
||||
end
|
||||
end
|
||||
|
||||
def actor
|
||||
return event['transaction'] if event['transaction']
|
||||
|
||||
# Some SDK do not have transaction attribute.
|
||||
# Some SDKs do not have a transaction attribute.
|
||||
# So we build it by combining function name and module name from
|
||||
# the last item in stacktrace.
|
||||
last_line = exception.dig('stacktrace', 'frames').last
|
||||
return unless stacktrace_frames.present?
|
||||
|
||||
last_line = stacktrace_frames.last
|
||||
|
||||
"#{last_line['function']}(#{last_line['module']})"
|
||||
end
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
= _('You can see your chat accounts.')
|
||||
|
||||
.col-lg-8
|
||||
%h5.gl-mt-0 Active chat names (#{@chat_names.size})
|
||||
%h5.gl-mt-0
|
||||
= sprintf(_('Active chat names (%{count})'), { count: @chat_names.size })
|
||||
|
||||
- if @chat_names.present?
|
||||
.table-responsive
|
||||
|
|
|
@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/344954
|
|||
milestone: '14.5'
|
||||
type: development
|
||||
group: group::workspace
|
||||
default_enabled: false
|
||||
default_enabled: true
|
||||
|
|
|
@ -1952,6 +1952,9 @@ msgstr ""
|
|||
msgid "Active Sessions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Active chat names (%{count})"
|
||||
msgstr ""
|
||||
|
||||
msgid "Activity"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ RSpec.describe Packages::Go::PackageFinder do
|
|||
let(:version_name) { version.name }
|
||||
|
||||
before do
|
||||
package.update_column(:status, 1)
|
||||
package.update_column(:status, :error)
|
||||
end
|
||||
|
||||
it { is_expected.to eq(nil) }
|
||||
|
|
|
@ -39,7 +39,7 @@ RSpec.describe ::Packages::Maven::PackageFinder do
|
|||
let(:param_path) { package.maven_metadatum.path }
|
||||
|
||||
before do
|
||||
package.update_column(:status, 1)
|
||||
package.update_column(:status, :error)
|
||||
end
|
||||
|
||||
it { expect { subject }.to raise_error(ActiveRecord::RecordNotFound) }
|
||||
|
|
|
@ -52,7 +52,7 @@ RSpec.describe ::Packages::Npm::PackageFinder do
|
|||
|
||||
context 'with an uninstallable package' do
|
||||
before do
|
||||
package.update_column(:status, 1)
|
||||
package.update_column(:status, :error)
|
||||
end
|
||||
|
||||
it { is_expected.to be_empty }
|
||||
|
|
|
@ -36,7 +36,7 @@ RSpec.describe Packages::Nuget::PackageFinder do
|
|||
|
||||
context 'with an uninstallable package' do
|
||||
before do
|
||||
package1.update_column(:status, 1)
|
||||
package1.update_column(:status, :error)
|
||||
end
|
||||
|
||||
it { is_expected.to contain_exactly(package2) }
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
{"contexts":{"device":{"arch":"amd64","num_cpu":16},"os":{"name":"darwin"},"runtime":{"go_maxprocs":16,"go_numcgocalls":1,"go_numroutines":2,"name":"go","version":"go1.16.10"}},"event_id":"f92492349cda4ceaba1aab9dac55a412","level":"error","platform":"go","release":"v0.12.0-1-g6b72962","sdk":{"name":"sentry.go","version":"0.12.0","integrations":["ContextifyFrames","Environment","IgnoreErrors","Modules"],"packages":[{"name":"sentry-go","version":"0.12.0"}]},"server_name":"jet.fios-router.home","user":{},"modules":{"github.com/getsentry/sentry-go":"(devel)","golang.org/x/sys":"v0.0.0-20211007075335-d3039528d8ac"},"exception":[{"type":"*errors.errorString","value":"unsupported protocol scheme \"\""},{"type":"*url.Error","value":"Get \"foobar\": unsupported protocol scheme \"\"","stacktrace":{"frames":[{"function":"main","module":"main","abs_path":"/Users/stanhu/github/sentry-go/example/basic/main.go","lineno":54,"pre_context":["\t// Set the timeout to the maximum duration the program can afford to wait.","\tdefer sentry.Flush(2 * time.Second)","","\tresp, err := http.Get(os.Args[1])","\tif err != nil {"],"context_line":"\t\tsentry.CaptureException(err)","post_context":["\t\tlog.Printf(\"reported to Sentry: %s\", err)","\t\treturn","\t}","\tdefer resp.Body.Close()",""],"in_app":true}]}}],"timestamp":"2021-12-25T22:32:06.191665-08:00"}
|
|
@ -839,6 +839,7 @@ RSpec.describe Packages::Package, type: :model do
|
|||
end
|
||||
|
||||
context 'status scopes' do
|
||||
let_it_be(:default_package) { create(:maven_package, :default) }
|
||||
let_it_be(:hidden_package) { create(:maven_package, :hidden) }
|
||||
let_it_be(:processing_package) { create(:maven_package, :processing) }
|
||||
let_it_be(:error_package) { create(:maven_package, :error) }
|
||||
|
@ -856,11 +857,15 @@ RSpec.describe Packages::Package, type: :model do
|
|||
describe '.installable' do
|
||||
subject { described_class.installable }
|
||||
|
||||
it 'does not include non-displayable packages', :aggregate_failures do
|
||||
it 'does not include non-installable packages', :aggregate_failures do
|
||||
is_expected.not_to include(error_package)
|
||||
is_expected.not_to include(hidden_package)
|
||||
is_expected.not_to include(processing_package)
|
||||
end
|
||||
|
||||
it 'includes installable packages', :aggregate_failures do
|
||||
is_expected.to include(default_package)
|
||||
is_expected.to include(hidden_package)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.with_status' do
|
||||
|
|
|
@ -574,6 +574,27 @@ RSpec.describe API::GenericPackages do
|
|||
end
|
||||
end
|
||||
|
||||
context 'with package status' do
|
||||
where(:package_status, :expected_status) do
|
||||
:default | :success
|
||||
:hidden | :success
|
||||
:error | :not_found
|
||||
end
|
||||
|
||||
with_them do
|
||||
before do
|
||||
project.add_developer(user)
|
||||
package.update!(status: package_status)
|
||||
end
|
||||
|
||||
it "responds with #{params[:expected_status]}" do
|
||||
download_file(personal_access_token_header)
|
||||
|
||||
expect(response).to have_gitlab_http_status(expected_status)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'event tracking' do
|
||||
let(:snowplow_gitlab_standard_context) { { project: project, namespace: project.namespace, user: user } }
|
||||
|
||||
|
|
|
@ -92,6 +92,25 @@ RSpec.describe ErrorTracking::CollectErrorService do
|
|||
expect(event.environment).to eq 'Accumulate'
|
||||
expect(event.payload).to eq parsed_event
|
||||
end
|
||||
|
||||
context 'with two exceptions' do
|
||||
let(:parsed_event) { Gitlab::Json.parse(fixture_file('error_tracking/go_two_exception_event.json')) }
|
||||
|
||||
it 'reports using second exception', :aggregate_failures do
|
||||
subject.execute
|
||||
|
||||
event = ErrorTracking::ErrorEvent.last
|
||||
error = event.error
|
||||
|
||||
expect(error.name).to eq '*url.Error'
|
||||
expect(error.description).to eq(%(Get \"foobar\": unsupported protocol scheme \"\"))
|
||||
expect(error.platform).to eq 'go'
|
||||
expect(error.actor).to eq('main(main)')
|
||||
|
||||
expect(event.description).to eq(%(Get \"foobar\": unsupported protocol scheme \"\"))
|
||||
expect(event.payload).to eq parsed_event
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue