Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
d4e5ac1b
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,发现更多精彩内容 >>
提交
d4e5ac1b
编写于
8月 18, 2017
作者:
T
Toon Claes
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use EachBatch concern to loop over batches
上级
2074f39a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
26 deletion
+22
-26
app/workers/namespaceless_project_destroy_worker.rb
app/workers/namespaceless_project_destroy_worker.rb
+1
-5
db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb
..._cleanup_nonexisting_namespace_pending_delete_projects.rb
+21
-21
未找到文件。
app/workers/namespaceless_project_destroy_worker.rb
浏览文件 @
d4e5ac1b
...
...
@@ -19,7 +19,7 @@ class NamespacelessProjectDestroyWorker
return
end
return
if
namespace?
(
project
)
# Reject doing anything for projects that *do* have a namespace
return
if
project
.
namespace
# Reject doing anything for projects that *do* have a namespace
project
.
team
.
truncate
...
...
@@ -30,10 +30,6 @@ class NamespacelessProjectDestroyWorker
private
def
namespace?
(
project
)
project
.
namespace_id
&&
Namespace
.
exists?
(
project
.
namespace_id
)
end
def
unlink_fork
(
project
)
merge_requests
=
project
.
forked_from_project
.
merge_requests
.
opened
.
from_project
(
project
)
...
...
db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb
浏览文件 @
d4e5ac1b
...
...
@@ -8,35 +8,31 @@ class CleanupNonexistingNamespacePendingDeleteProjects < ActiveRecord::Migration
disable_ddl_transaction!
def
up
@offset
=
0
class
Project
<
ActiveRecord
::
Base
self
.
table_name
=
'projects'
loop
do
ids
=
pending_delete_batch
include
::
EachBatch
end
break
if
ids
.
empty?
class
Namespace
<
ActiveRecord
::
Base
self
.
table_name
=
'namespaces'
end
args
=
ids
.
map
{
|
id
|
Array
(
id
)
}
def
up
find_projects
.
each_batch
do
|
batch
|
args
=
batch
.
pluck
(
:id
).
map
{
|
id
|
[
id
]
}
NamespacelessProjectDestroyWorker
.
bulk_perform_async
(
args
)
@offset
+=
1
end
end
def
down
#
noop
#
NOOP
end
private
def
pending_delete_batch
connection
.
exec_query
(
find_batch
).
map
{
|
row
|
row
[
'id'
].
to_i
}
end
BATCH_SIZE
=
5000
def
find_batch
def
find_projects
projects
=
Project
.
arel_table
namespaces
=
Namespace
.
arel_table
...
...
@@ -44,11 +40,15 @@ class CleanupNonexistingNamespacePendingDeleteProjects < ActiveRecord::Migration
.
where
(
namespaces
[
:id
].
eq
(
projects
[
:namespace_id
]))
.
exists
.
not
projects
.
project
(
projects
[
:id
])
.
where
(
projects
[
:pending_delete
].
eq
(
true
))
# SELECT "projects"."id"
# FROM "projects"
# WHERE "projects"."pending_delete" = 't'
# AND (NOT (EXISTS
# (SELECT 1
# FROM "namespaces"
# WHERE "namespaces"."id" = "projects"."namespace_id")))
Project
.
where
(
projects
[
:pending_delete
].
eq
(
true
))
.
where
(
namespace_query
)
.
skip
(
@offset
*
BATCH_SIZE
)
.
take
(
BATCH_SIZE
)
.
to_sql
.
select
(
:id
)
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录