Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
764977a1
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
764977a1
编写于
6月 06, 2018
作者:
S
Shinya Maeda
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove AddIndexToCiBuildsArtifactsFile. Add temporary index in background migration class.
上级
7728ab3f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
30 deletion
+24
-30
db/migrate/20180428200509_add_index_to_ci_builds_artifacts_file.rb
...e/20180428200509_add_index_to_ci_builds_artifacts_file.rb
+0
-26
db/post_migrate/20180430161409_migrate_legacy_artifacts_to_job_artifacts.rb
...180430161409_migrate_legacy_artifacts_to_job_artifacts.rb
+24
-2
db/schema.rb
db/schema.rb
+0
-2
未找到文件。
db/migrate/20180428200509_add_index_to_ci_builds_artifacts_file.rb
已删除
100644 → 0
浏览文件 @
7728ab3f
class
AddIndexToCiBuildsArtifactsFile
<
ActiveRecord
::
Migration
include
Gitlab
::
Database
::
MigrationHelpers
DOWNTIME
=
false
disable_ddl_transaction!
def
up
# We add an temporary index to `ci_builds.artifacts_file` column to avoid statements timeout in legacy artifacts migrations
# This index is to be removed after we have cleaned up background migrations
# https://gitlab.com/gitlab-org/gitlab-ce/issues/46866
if
Gitlab
::
Database
.
postgresql?
add_concurrent_index
:ci_builds
,
:artifacts_file
,
where:
"artifacts_file <> ''"
elsif
Gitlab
::
Database
.
mysql?
add_concurrent_index
:ci_builds
,
:artifacts_file
,
where:
"artifacts_file <> ''"
,
length:
20
end
end
def
down
if
Gitlab
::
Database
.
postgresql?
remove_concurrent_index
:ci_builds
,
:artifacts_file
,
where:
"artifacts_file <> ''"
elsif
Gitlab
::
Database
.
mysql?
remove_concurrent_index
:ci_builds
,
:artifacts_file
,
where:
"artifacts_file <> ''"
,
length:
20
end
end
end
db/post_migrate/20180430161409_migrate_legacy_artifacts_to_job_artifacts.rb
浏览文件 @
764977a1
...
...
@@ -4,10 +4,28 @@ class MigrateLegacyArtifactsToJobArtifacts < ActiveRecord::Migration
DOWNTIME
=
false
MIGRATION
=
'MigrateLegacyArtifacts'
.
freeze
BATCH_SIZE
=
2000
TMP_INDEX
=
'tmp_index_ci_builds_on_present_artifacts_file'
.
freeze
disable_ddl_transaction!
def
up
##
# We add a temporary index to `artifacts_file`. Without having this,
# queries generated by `each_batch` by statement timeout.
#
# This is only neccessary when we collect target rows, because in backgroun migrartions
# it's filitered by `BETWEEN` clause (e.g. 'id BETWEEN 0 AND 2000'), so it's fast enough without this temporary index.
#
# Mysql doesn't support partial indexies. Also, it requires the index to specify `length` only if the type is `TEXT`, `VARCHAR`, etc.
# Therefore we need to treat this id generation differently by database type.
unless
index_exists_by_name?
(
:ci_builds
,
TMP_INDEX
)
if
Gitlab
::
Database
.
postgresql?
add_concurrent_index
:ci_builds
,
:artifacts_file
,
where:
"artifacts_file <> ''"
,
name:
TMP_INDEX
elsif
Gitlab
::
Database
.
mysql?
add_concurrent_index
:ci_builds
,
:artifacts_file
,
length:
20
,
name:
TMP_INDEX
end
end
::
Gitlab
::
BackgroundMigration
::
MigrateLegacyArtifacts
::
Build
.
with_legacy_artifacts
.
without_new_artifacts
.
tap
do
|
relation
|
queue_background_migration_jobs_by_range_at_intervals
(
relation
,
...
...
@@ -15,9 +33,13 @@ class MigrateLegacyArtifactsToJobArtifacts < ActiveRecord::Migration
5
.
minutes
,
batch_size:
BATCH_SIZE
)
end
remove_concurrent_index_by_name
(
:ci_builds
,
TMP_INDEX
)
end
def
down
# no-op
if
index_exists_by_name?
(
:ci_builds
,
TMP_INDEX
)
remove_concurrent_index_by_name
(
:ci_builds
,
TMP_INDEX
)
end
end
end
db/schema.rb
浏览文件 @
764977a1
...
...
@@ -331,7 +331,6 @@ ActiveRecord::Schema.define(version: 20180603190921) do
end
add_index
"ci_builds"
,
[
"artifacts_expire_at"
],
name:
"index_ci_builds_on_artifacts_expire_at"
,
where:
"(artifacts_file <> ''::text)"
,
using: :btree
add_index
"ci_builds"
,
[
"artifacts_file"
],
name:
"index_ci_builds_on_artifacts_file"
,
where:
"(artifacts_file <> ''::text)"
,
length:
20
,
using: :btree
add_index
"ci_builds"
,
[
"auto_canceled_by_id"
],
name:
"index_ci_builds_on_auto_canceled_by_id"
,
using: :btree
add_index
"ci_builds"
,
[
"commit_id"
,
"stage_idx"
,
"created_at"
],
name:
"index_ci_builds_on_commit_id_and_stage_idx_and_created_at"
,
using: :btree
add_index
"ci_builds"
,
[
"commit_id"
,
"status"
,
"type"
],
name:
"index_ci_builds_on_commit_id_and_status_and_type"
,
using: :btree
...
...
@@ -1233,7 +1232,6 @@ ActiveRecord::Schema.define(version: 20180603190921) do
t
.
integer
"latest_merge_request_diff_id"
t
.
string
"rebase_commit_sha"
t
.
boolean
"allow_collaboration"
t
.
boolean
"squash"
,
default:
false
,
null:
false
end
add_index
"merge_requests"
,
[
"assignee_id"
],
name:
"index_merge_requests_on_assignee_id"
,
using: :btree
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录