Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-12-30 15:10:24 +00:00
parent 0409f2aea9
commit d6c434108c
13 changed files with 77 additions and 12 deletions

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1952,6 +1952,9 @@ msgstr ""
msgid "Active Sessions"
msgstr ""
msgid "Active chat names (%{count})"
msgstr ""
msgid "Activity"
msgstr ""

View File

@ -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) }

View File

@ -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) }

View File

@ -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 }

View File

@ -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) }

View File

@ -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"}

View File

@ -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

View File

@ -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 } }

View File

@ -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