Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-06-19 21:08:38 +00:00
parent 14bdd853a1
commit 51338fbd8a
6 changed files with 81 additions and 15 deletions

View file

@ -1172,7 +1172,7 @@ class Project < ApplicationRecord
job_type = type.to_s.capitalize job_type = type.to_s.capitalize
if job_id if job_id
Gitlab::AppLogger.info("#{job_type} job scheduled for #{full_path} with job ID #{job_id}.") Gitlab::AppLogger.info("#{job_type} job scheduled for #{full_path} with job ID #{job_id} (primary: #{::Gitlab::Database::LoadBalancing::Session.current.use_primary?}).")
else else
Gitlab::AppLogger.error("#{job_type} job failed to create for #{full_path}.") Gitlab::AppLogger.error("#{job_type} job failed to create for #{full_path}.")
end end

View file

@ -20,15 +20,27 @@ module Gitlab
return :invalid unless runner_version return :invalid unless runner_version
releases = RunnerReleases.instance.releases releases = RunnerReleases.instance.releases
parsed_runner_version = runner_version.is_a?(::Gitlab::VersionInfo) ? runner_version : ::Gitlab::VersionInfo.parse(runner_version) orig_runner_version = runner_version
runner_version = ::Gitlab::VersionInfo.parse(runner_version) unless runner_version.is_a?(::Gitlab::VersionInfo)
raise ArgumentError, "'#{runner_version}' is not a valid version" unless parsed_runner_version.valid? raise ArgumentError, "'#{orig_runner_version}' is not a valid version" unless runner_version.valid?
available_releases = releases.reject { |release| release > @gitlab_version } gitlab_minor_version = version_without_patch(@gitlab_version)
return :recommended if available_releases.any? { |available_release| patch_update?(available_release, parsed_runner_version) } available_releases = releases
return :recommended if outside_backport_window?(parsed_runner_version, releases) .reject { |release| release.major > @gitlab_version.major }
return :available if available_releases.any? { |available_release| available_release > parsed_runner_version } .reject do |release|
release_minor_version = version_without_patch(release)
# Do not reject a patch update, even if the runner is ahead of the instance version
next false if version_without_patch(runner_version) == release_minor_version
release_minor_version > gitlab_minor_version
end
return :recommended if available_releases.any? { |available_rel| patch_update?(available_rel, runner_version) }
return :recommended if outside_backport_window?(runner_version, releases)
return :available if available_releases.any? { |available_rel| available_rel > runner_version }
:not_available :not_available
end end

View file

@ -39,18 +39,31 @@ module Gitlab
end end
job['wal_locations'] = locations job['wal_locations'] = locations
job['wal_location_source'] = wal_location_source
end
def wal_location_source
if ::Gitlab::Database::LoadBalancing.primary_only? || uses_primary?
::Gitlab::Database::LoadBalancing::ROLE_PRIMARY
else
::Gitlab::Database::LoadBalancing::ROLE_REPLICA
end
end end
def wal_location_for(load_balancer) def wal_location_for(load_balancer)
# When only using the primary there's no need for any WAL queries. # When only using the primary there's no need for any WAL queries.
return if load_balancer.primary_only? return if load_balancer.primary_only?
if ::Gitlab::Database::LoadBalancing::Session.current.use_primary? if uses_primary?
load_balancer.primary_write_location load_balancer.primary_write_location
else else
load_balancer.host.database_replica_location load_balancer.host.database_replica_location
end end
end end
def uses_primary?
::Gitlab::Database::LoadBalancing::Session.current.use_primary?
end
end end
end end
end end

View file

@ -0,0 +1,36 @@
#!/usr/bin/env bash
# shellcheck disable=SC2059
set -o errexit # AKA -e - exit immediately on errors (http://mywiki.wooledge.org/BashFAQ/105)
# https://stackoverflow.com/a/28938235
BCyan='\033[1;36m' # Bold Cyan
BRed='\033[1;31m' # Bold Red
BGreen='\033[1;32m' # Bold Green
BBlue='\033[1;34m' # Bold Blue
Color_Off='\033[0m' # Text Reset
function onexit_err() {
local exit_status=${1:-$?}
printf "\n❌❌❌ ${BRed}GLFM snapshot tests failed!${Color_Off} ❌❌❌\n"
exit "${exit_status}"
}
trap onexit_err ERR
set -o errexit
printf "${BCyan}"
printf "\nStarting GLFM snapshot example tests. See https://docs.gitlab.com/ee/development/gitlab_flavored_markdown/specification_guide/#run-snapshot-testssh-script for more details.\n\n"
printf "Set 'FOCUSED_MARKDOWN_EXAMPLES=example_name_1[,...]' for focused examples, with example name(s) from https://docs.gitlab.com/ee/development/gitlab_flavored_markdown/specification_guide/#glfm_specificationexample_snapshotsexamples_indexyml.\n"
printf "${Color_Off}"
# This section can be uncommented as soon as this is merged: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89953
#printf "\n${BBlue}Running frontend 'yarn jest spec/frontend/content_editor/markdown_snapshot_spec.js'...${Color_Off}\n\n"
#yarn jest spec/frontend/content_editor/markdown_snapshot_spec.js
#printf "\n${BBlue}'yarn jest spec/frontend/content_editor/markdown_snapshot_spec.js' passed!${Color_Off}\n\n"
printf "\n${BBlue}Running backend 'bundle exec rspec spec/requests/api/markdown_snapshot_spec.rb'...${Color_Off}\n\n"
bundle exec rspec spec/requests/api/markdown_snapshot_spec.rb
printf "\n${BBlue}'bundle exec rspec spec/requests/api/markdown_snapshot_spec.rb' passed!${Color_Off}\n\n"
printf "\n✅✅✅ ${BGreen}All GLFM snapshot example tests passed successfully!${Color_Off} ✅✅✅\n"

View file

@ -51,21 +51,22 @@ RSpec.describe Gitlab::Ci::RunnerUpgradeCheck do
end end
end end
context 'with Gitlab::VERSION set to 14.0.123' do context 'with Gitlab::VERSION set to 14.0.1' do
before do before do
stub_version('14.0.123', 'deadbeef') stub_version('14.0.1', 'deadbeef')
described_class.instance.reset! described_class.instance.reset!
end end
context 'with valid params' do context 'with valid params' do
where(:runner_version, :expected_result) do where(:runner_version, :expected_result) do
'v14.1.0-rc3' | :not_available # not available since the GitLab instance is still on 14.0.x 'v15.0.0' | :not_available # not available since the GitLab instance is still on 14.x and a major version might be incompatible
'v14.1.0~beta.1574.gf6ea9389' | :not_available # suffixes are correctly handled 'v14.1.0-rc3' | :recommended # recommended since even though the GitLab instance is still on 14.0.x, there is a patch release (14.1.1) available which might contain security fixes
'v14.1.0/1.1.0' | :not_available # suffixes are correctly handled 'v14.1.0~beta.1574.gf6ea9389' | :recommended # suffixes are correctly handled
'v14.1.0' | :not_available # not available since the GitLab instance is still on 14.0.x 'v14.1.0/1.1.0' | :recommended # suffixes are correctly handled
'v14.1.0' | :recommended # recommended since even though the GitLab instance is still on 14.0.x, there is a patch release (14.1.1) available which might contain security fixes
'v14.0.1' | :recommended # recommended upgrade since 14.0.2 is available 'v14.0.1' | :recommended # recommended upgrade since 14.0.2 is available
'v14.0.2' | :not_available # not available since 14.0.2 is the latest 14.0.x release available 'v14.0.2' | :not_available # not available since 14.0.2 is the latest 14.0.x release available within the instance's major.minor version
'v13.10.1' | :available # available upgrade: 14.1.1 'v13.10.1' | :available # available upgrade: 14.1.1
'v13.10.1~beta.1574.gf6ea9389' | :available # suffixes are correctly handled 'v13.10.1~beta.1574.gf6ea9389' | :available # suffixes are correctly handled
'v13.10.1/1.1.0' | :available # suffixes are correctly handled 'v13.10.1/1.1.0' | :available # suffixes are correctly handled

View file

@ -57,6 +57,7 @@ RSpec.describe Gitlab::Database::LoadBalancing::SidekiqClientMiddleware do
run_middleware run_middleware
expect(job['wal_locations']).to be_nil expect(job['wal_locations']).to be_nil
expect(job['wal_location_source']).to be_nil
end end
include_examples 'job data consistency' include_examples 'job data consistency'
@ -96,6 +97,7 @@ RSpec.describe Gitlab::Database::LoadBalancing::SidekiqClientMiddleware do
run_middleware run_middleware
expect(job['wal_locations']).to eq(expected_location) expect(job['wal_locations']).to eq(expected_location)
expect(job['wal_location_source']).to eq(:replica)
end end
include_examples 'job data consistency' include_examples 'job data consistency'
@ -120,6 +122,7 @@ RSpec.describe Gitlab::Database::LoadBalancing::SidekiqClientMiddleware do
run_middleware run_middleware
expect(job['wal_locations']).to eq(expected_location) expect(job['wal_locations']).to eq(expected_location)
expect(job['wal_location_source']).to eq(:primary)
end end
include_examples 'job data consistency' include_examples 'job data consistency'
@ -162,6 +165,7 @@ RSpec.describe Gitlab::Database::LoadBalancing::SidekiqClientMiddleware do
run_middleware run_middleware
expect(job['wal_locations']).to eq(wal_locations) expect(job['wal_locations']).to eq(wal_locations)
expect(job['wal_location_source']).to be_nil
end end
end end