Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-06-06 09:09:59 +00:00
parent b49ebeb658
commit 8e6efd45b2
6 changed files with 207 additions and 22 deletions

View File

@ -1,10 +1,19 @@
<script> <script>
import { GlButtonGroup, GlButton, GlDropdown, GlFormCheckbox } from '@gitlab/ui'; import {
GlButtonGroup,
GlButton,
GlDropdown,
GlFormCheckbox,
GlTooltipDirective,
} from '@gitlab/ui';
import { mapActions, mapGetters, mapState } from 'vuex'; import { mapActions, mapGetters, mapState } from 'vuex';
import { SETTINGS_DROPDOWN } from '../i18n'; import { SETTINGS_DROPDOWN } from '../i18n';
export default { export default {
i18n: SETTINGS_DROPDOWN, i18n: SETTINGS_DROPDOWN,
directives: {
GlTooltip: GlTooltipDirective,
},
components: { components: {
GlButtonGroup, GlButtonGroup,
GlButton, GlButton,
@ -35,9 +44,13 @@ export default {
<template> <template>
<gl-dropdown <gl-dropdown
v-gl-tooltip
icon="settings" icon="settings"
:text="__('Diff view settings')" :title="$options.i18n.preferences"
:text="$options.i18n.preferences"
:text-sr-only="true" :text-sr-only="true"
:aria-label="$options.i18n.preferences"
:header-text="$options.i18n.preferences"
toggle-class="js-show-diff-settings" toggle-class="js-show-diff-settings"
right right
> >

View File

@ -23,4 +23,5 @@ export const DIFF_FILE = {
export const SETTINGS_DROPDOWN = { export const SETTINGS_DROPDOWN = {
whitespace: __('Show whitespace changes'), whitespace: __('Show whitespace changes'),
fileByFile: __('Show one file at a time'), fileByFile: __('Show one file at a time'),
preferences: __('Preferences'),
}; };

View File

@ -11459,9 +11459,6 @@ msgstr ""
msgid "Diff limits" msgid "Diff limits"
msgstr "" msgstr ""
msgid "Diff view settings"
msgstr ""
msgid "Difference between start date and now" msgid "Difference between start date and now"
msgstr "" msgstr ""

View File

@ -120,6 +120,7 @@ RSpec.describe 'lograge', type: :request do
context 'with a log subscriber' do context 'with a log subscriber' do
include_context 'parsed logs' include_context 'parsed logs'
include_context 'clear DB Load Balancing configuration'
let(:subscriber) { Lograge::LogSubscribers::ActionController.new } let(:subscriber) { Lograge::LogSubscribers::ActionController.new }
@ -195,9 +196,25 @@ RSpec.describe 'lograge', type: :request do
end end
context 'with db payload' do context 'with db payload' do
let(:db_load_balancing_logging_keys) do
%w[
db_primary_wal_count
db_replica_wal_count
db_replica_count
db_replica_cached_count
db_primary_count
db_primary_cached_count
db_primary_duration_s
db_replica_duration_s
]
end
before do
ActiveRecord::Base.connection.execute('SELECT pg_sleep(0.1);')
end
context 'when RequestStore is enabled', :request_store do context 'when RequestStore is enabled', :request_store do
it 'includes db counters' do it 'includes db counters' do
ActiveRecord::Base.connection.execute('SELECT pg_sleep(0.1);')
subscriber.process_action(event) subscriber.process_action(event)
expect(log_data).to include("db_count" => a_value >= 1, "db_write_count" => 0, "db_cached_count" => 0) expect(log_data).to include("db_count" => a_value >= 1, "db_write_count" => 0, "db_cached_count" => 0)
@ -206,12 +223,47 @@ RSpec.describe 'lograge', type: :request do
context 'when RequestStore is disabled' do context 'when RequestStore is disabled' do
it 'does not include db counters' do it 'does not include db counters' do
ActiveRecord::Base.connection.execute('SELECT pg_sleep(0.1);')
subscriber.process_action(event) subscriber.process_action(event)
expect(log_data).not_to include("db_count", "db_write_count", "db_cached_count") expect(log_data).not_to include("db_count", "db_write_count", "db_cached_count")
end end
end end
context 'when load balancing is enabled' do
before do
allow(Gitlab::Database::LoadBalancing).to receive(:enable?).and_return(true)
end
context 'with db payload' do
context 'when RequestStore is enabled', :request_store do
it 'includes db counters for load balancing' do
subscriber.process_action(event)
expect(log_data).to include(*db_load_balancing_logging_keys)
end
end
context 'when RequestStore is disabled' do
it 'does not include db counters for load balancing' do
subscriber.process_action(event)
expect(log_data).not_to include(*db_load_balancing_logging_keys)
end
end
end
end
context 'when load balancing is disabled' do
before do
allow(Gitlab::Database::LoadBalancing).to receive(:enable?).and_return(false)
end
it 'does not include db counters for load balancing' do
subscriber.process_action(event)
expect(log_data).not_to include(*db_load_balancing_logging_keys)
end
end
end end
end end
end end

View File

@ -117,6 +117,42 @@ RSpec.describe Gitlab::InstrumentationHelper do
end end
end end
end end
context 'when load balancing is enabled' do
include_context 'clear DB Load Balancing configuration'
before do
allow(Gitlab::Database::LoadBalancing).to receive(:enable?).and_return(true)
end
it 'includes DB counts' do
subject
expect(payload).to include(db_replica_count: 0,
db_replica_cached_count: 0,
db_primary_count: 0,
db_primary_cached_count: 0,
db_primary_wal_count: 0,
db_replica_wal_count: 0)
end
end
context 'when load balancing is disabled' do
before do
allow(Gitlab::Database::LoadBalancing).to receive(:enable?).and_return(false)
end
it 'does not include DB counts' do
subject
expect(payload).not_to include(db_replica_count: 0,
db_replica_cached_count: 0,
db_primary_count: 0,
db_primary_cached_count: 0,
db_primary_wal_count: 0,
db_replica_wal_count: 0)
end
end
end end
describe '.queue_duration_for_job' do describe '.queue_duration_for_job' do

View File

@ -228,6 +228,8 @@ RSpec.describe Gitlab::SidekiqLogging::StructuredLogger do
end end
context 'when the job performs database queries' do context 'when the job performs database queries' do
include_context 'clear DB Load Balancing configuration'
before do before do
allow(Time).to receive(:now).and_return(timestamp) allow(Time).to receive(:now).and_return(timestamp)
allow(Process).to receive(:clock_gettime).and_call_original allow(Process).to receive(:clock_gettime).and_call_original
@ -248,28 +250,112 @@ RSpec.describe Gitlab::SidekiqLogging::StructuredLogger do
) )
end end
it 'logs the database time' do shared_examples 'performs database queries' do
expect(logger).to receive(:info).with(expected_start_payload).ordered it 'logs the database time', :aggregate_errors do
expect(logger).to receive(:info).with(expected_end_payload_with_db).ordered expect(logger).to receive(:info).with(expected_start_payload).ordered
expect(logger).to receive(:info).with(expected_end_payload_with_db).ordered
call_subject(job, 'test_queue') do call_subject(job, 'test_queue') do
ActiveRecord::Base.connection.execute('SELECT pg_sleep(0.1);') ActiveRecord::Base.connection.execute('SELECT pg_sleep(0.1);')
end
end
it 'prevents database time from leaking to the next job', :aggregate_errors do
expect(logger).to receive(:info).with(expected_start_payload).ordered
expect(logger).to receive(:info).with(expected_end_payload_with_db).ordered
expect(logger).to receive(:info).with(expected_start_payload).ordered
expect(logger).to receive(:info).with(expected_end_payload).ordered
call_subject(job.dup, 'test_queue') do
ActiveRecord::Base.connection.execute('SELECT pg_sleep(0.1);')
end
Gitlab::SafeRequestStore.clear!
call_subject(job.dup, 'test_queue') { }
end end
end end
it 'prevents database time from leaking to the next job' do context 'when load balancing is disabled' do
expect(logger).to receive(:info).with(expected_start_payload).ordered before do
expect(logger).to receive(:info).with(expected_end_payload_with_db).ordered allow(Gitlab::Database::LoadBalancing).to receive(:enable?).and_return(false)
expect(logger).to receive(:info).with(expected_start_payload).ordered
expect(logger).to receive(:info).with(expected_end_payload).ordered
call_subject(job.dup, 'test_queue') do
ActiveRecord::Base.connection.execute('SELECT pg_sleep(0.1);')
end end
Gitlab::SafeRequestStore.clear! let(:expected_end_payload_with_db) do
expected_end_payload.merge(
'db_duration_s' => a_value >= 0.1,
'db_count' => a_value >= 1,
'db_cached_count' => 0,
'db_write_count' => 0
)
end
call_subject(job.dup, 'test_queue') { } include_examples 'performs database queries'
end
context 'when load balancing is enabled' do
before do
allow(Gitlab::Database::LoadBalancing).to receive(:enable?).and_return(true)
end
let(:expected_end_payload_with_db) do
expected_end_payload.merge(
'db_duration_s' => a_value >= 0.1,
'db_count' => a_value >= 1,
'db_cached_count' => 0,
'db_write_count' => 0,
'db_replica_count' => 0,
'db_replica_cached_count' => 0,
'db_replica_wal_count' => 0,
'db_replica_duration_s' => a_value >= 0,
'db_primary_count' => a_value >= 1,
'db_primary_cached_count' => 0,
'db_primary_wal_count' => 0,
'db_primary_duration_s' => a_value > 0
)
end
let(:end_payload) do
start_payload.merge(
'message' => 'TestWorker JID-da883554ee4fe414012f5f42: done: 0.0 sec',
'job_status' => 'done',
'duration_s' => 0.0,
'completed_at' => timestamp.to_f,
'cpu_s' => 1.111112,
'db_duration_s' => 0.0,
'db_cached_count' => 0,
'db_count' => 0,
'db_write_count' => 0,
'db_replica_count' => 0,
'db_replica_cached_count' => 0,
'db_replica_wal_count' => 0,
'db_replica_duration_s' => 0,
'db_primary_count' => 0,
'db_primary_cached_count' => 0,
'db_primary_wal_count' => 0,
'db_primary_duration_s' => 0
)
end
include_examples 'performs database queries'
end
end
context 'when the job uses load balancing capabilities' do
let(:expected_payload) { { 'database_chosen' => 'retry' } }
before do
allow(Time).to receive(:now).and_return(timestamp)
allow(Process).to receive(:clock_gettime).and_call_original
end
it 'logs the database chosen' do
expect(logger).to receive(:info).with(start_payload).ordered
expect(logger).to receive(:info).with(include(expected_payload)).ordered
call_subject(job, 'test_queue') do
job[:database_chosen] = 'retry'
end
end end
end end