Reclaim Space Server Error
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
从 pulpcore/app/viewsets/reclaim.py 第 25 行附近的 serializer 构造开始,然后在检查 stack trace 的同时重现对 /pulp/api/v3/repositories/reclaim_space/ 的 POST 请求。完成的标志是,经过身份验证的 POST 不再触发 RepositoryVersionRelatedField 的 request-context assertion,并返回成功或适当的进程启动响应。
由索引模型根据 Issue 内容生成。
描述
Version
"versions": {
"deb": "3.8.2",
"npm": "0.8.0",
"rpm": "3.36.0",
"core": "3.111.1",
"file": "3.111.1",
"maven": "0.12.0",
"ostree": "2.6.0",
"python": "3.30.0",
"ansible": "0.29.8",
"certguard": "3.111.1",
"container": "2.27.9",
"hugging_face": "0.3.0"
}
Deployed with Pulp Operator Helm chart running on k3s
Update: tested it also with 3.112.0
Describe the bug
Going to /pulp/api/v3/repositories/reclaim_space/ in web browser and pressing POST gives a Server Error 500.
API Pod Log:
pulp [2c2223f8af3f48909490147a95adf452]: django.request:ERROR: Internal Server Error: /pulp/api/v3/repositories/reclaim_space/
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/response.py", line 74, in rendered_content
ret = renderer.render(self.data, accepted_media_type, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/renderers.py", line 750, in render
context = self.get_context(data, accepted_media_type, renderer_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/renderers.py", line 722, in get_context
'post_form': self.get_rendered_html_form(data, view, 'POST', request),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/renderers.py", line 516, in get_rendered_html_form
return self.render_form_for_serializer(existing_serializer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/renderers.py", line 541, in render_form_for_serializer
return form_renderer.render(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/renderers.py", line 395, in render
return template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/backends/django.py", line 107, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 172, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 164, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1018, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1018, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 979, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/defaulttags.py", line 243, in render
nodelist.append(node.render_annotated(context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 979, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/defaulttags.py", line 327, in render
return nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1018, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1018, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 979, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/library.py", line 324, in render
output = self.func(*resolved_args, **resolved_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/templatetags/rest_framework.py", line 62, in render_field
return renderer.render_field(field, style)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/renderers.py", line 374, in render_field
return template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/backends/django.py", line 107, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 172, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 164, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1018, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1018, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 979, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/defaulttags.py", line 194, in render
values = self.sequence.resolve(context, ignore_failures=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 723, in resolve
obj = self.var.resolve(context)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 856, in resolve
value = self._resolve_lookup(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 927, in _resolve_lookup
current = current()
^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/relations.py", line 582, in iter_options
self.get_choices(cutoff=self.html_cutoff),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/relations.py", line 570, in get_choices
return self.child_relation.get_choices(cutoff)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/relations.py", line 201, in get_choices
return {
^
File "/usr/local/lib/python3.11/site-packages/rest_framework/relations.py", line 202, in <dictcomp>
self.to_representation(item): self.display_value(item) for item in queryset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/rest_framework/relations.py", line 373, in to_representation
assert 'request' in self.context, (
^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: `RepositoryVersionRelatedField` requires the request in the serializer context. Add `context={'request': request}` when instantiating the serializer.
To Reproduce
Go to /pulp/api/v3/repositories/reclaim_space/, login as admin and press POST
Expected behavior
I guess a message 200 or other kind of message that the process is started
Additional context
I think this line https://github.com/pulp/pulpcore/blob/main/pulpcore/app/viewsets/reclaim.py#L25 should add the context as described in the stack trace.
From:
serializer = ReclaimSpaceSerializer(data=request.data)
To:
serializer = ReclaimSpaceSerializer(
data=request.data,
context={'request': request},
)
- 主要语言
- Python
- 星标
- 606
- 派生
- 174
- 平均合并
- 16 小时 44 分钟
- 30 天内合并 PR
- 107
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
pulp/pulpcore 的其他 Issue
-
Feature
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
Content app answers 404 instead of 502 when the remote of on-demand content is unavailable可能已有人在做 @gigi206 于 1 天前认领。 未关闭
难度 3/5 半天 新手友好度 66/100
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 28/100
维护者通常 1 天内回复
-
Performance Task Triage-Needed
难度 5/5 一周以上 新手友好度 25/100
pulp/pulpcore#8206 · 3 条评论 · 1 个 reaction ·
维护者通常 1 天内回复
-
Issue Triage-Needed
难度 3/5 1-2 天 新手友好度 35/100
维护者通常 1 天内回复
相似的 Issue
-
Agentic
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
Imbad0202/academic-research-skills#979 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
reflex-dev/reflex#7561 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 62/100
prometheus-community/ansible#906 · 2 条评论 ·