Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
1b015620
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,发现更多精彩内容 >>
提交
1b015620
编写于
4月 13, 2018
作者:
B
Bob Van Landuyt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Recover from errors when a parent is not preloaded
上级
d8dd75ca
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
36 addition
and
2 deletion
+36
-2
app/models/concerns/group_descendant.rb
app/models/concerns/group_descendant.rb
+14
-1
changelogs/unreleased/bvl-shared-groups-on-group-page.yml
changelogs/unreleased/bvl-shared-groups-on-group-page.yml
+6
-0
spec/models/concerns/group_descendant_spec.rb
spec/models/concerns/group_descendant_spec.rb
+16
-1
未找到文件。
app/models/concerns/group_descendant.rb
浏览文件 @
1b015620
...
...
@@ -37,7 +37,20 @@ module GroupDescendant
parent
||=
preloaded
.
detect
{
|
possible_parent
|
possible_parent
.
is_a?
(
Group
)
&&
possible_parent
.
id
==
child
.
parent_id
}
if
parent
.
nil?
&&
!
child
.
parent_id
.
nil?
raise
ArgumentError
.
new
(
'parent was not preloaded'
)
parent
=
child
.
parent
exception
=
ArgumentError
.
new
<<~
MSG
parent: [GroupDescendant:
#{
parent
.
inspect
}
] was not preloaded for [
#{
child
.
inspect
}
]")
This error is not user facing, but causes a +1 query.
MSG
extras
=
{
parent:
parent
,
child:
child
,
preloaded:
preloaded
.
map
(
&
:full_path
)
}
issue_url
=
'https://gitlab.com/gitlab-org/gitlab-ce/issues/40785'
Gitlab
::
Sentry
.
track_exception
(
exception
,
issue_url:
issue_url
,
extra:
extras
)
end
if
parent
.
nil?
&&
hierarchy_top
.
present?
...
...
changelogs/unreleased/bvl-shared-groups-on-group-page.yml
0 → 100644
浏览文件 @
1b015620
---
title
:
Show shared projects on group list
list
merge_request
:
18390
author
:
type
:
fixed
spec/models/concerns/group_descendant_spec.rb
浏览文件 @
1b015620
...
...
@@ -79,9 +79,24 @@ describe GroupDescendant, :nested_groups do
expect
(
described_class
.
build_hierarchy
(
groups
)).
to
eq
(
expected_hierarchy
)
end
it
'tracks the exception when a parent was not preloaded'
do
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_exception
).
and_call_original
expect
{
GroupDescendant
.
build_hierarchy
([
subsub_group
])
}.
to
raise_error
(
ArgumentError
)
end
it
'recovers if a parent was not reloaded by querying for the parent'
do
expected_hierarchy
=
{
parent
=>
{
subgroup
=>
subsub_group
}
}
# this does not raise in production, so stubbing it here.
allow
(
Gitlab
::
Sentry
).
to
receive
(
:track_exception
)
expect
(
GroupDescendant
.
build_hierarchy
([
subsub_group
])).
to
eq
(
expected_hierarchy
)
end
it
'raises an error if not all elements were preloaded'
do
expect
{
described_class
.
build_hierarchy
([
subsub_group
])
}
.
to
raise_error
(
'parent was not preloaded'
)
.
to
raise_error
(
/was not preloaded/
)
end
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录