Backport #9505
closedBackport 9349 to 2.15: Object of type AptRepository is not JSON serializable
Added by rafzei about 3 years ago. Updated about 3 years ago.
100%
Description
Getting Internal Server Error 500 response when calling API.
Query: http post $BASE_ADDR/pulp/api/v3/publications/deb/apt/ repository="/pulp/api/v3/repositories/deb/apt//" simple="true" --verify false
Response:
HTTP/1.1 500 Internal Server Error
Access-Control-Expose-Headers: Correlation-ID
Connection: keep-alive
Content-Length: 145
Content-Type: text/html
Correlation-ID: b067f38ea4fc42ebaca8ef6a9a283460
Date: Wed, 13 Oct 2021 11:57:42 GMT
Referrer-Policy: same-origin
Server: nginx/1.20.1
Vary: Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
<!doctype html>
<html lang="en">
<head>
<title>Server Error (500)</title>
</head>
<body>
<h1>Server Error (500)</h1><p></p>
</body>
</html>
Before, the Repository, Content and Content binding (using add_content_units) was done via API calls. pulpcore-api.log attached.
Files
pulpcore-api.log (3.6 KB) pulpcore-api.log | rafzei, 10/13/2021 02:23 PM |
Related issues
Updated by quba42 about 3 years ago
I have not seen any similar bugs before, and I don't have any immediate ideas what this might be.
The following additional information might help:
- The pulpcore version and pulp_deb version used. (
http get $BASE_ADDR/pulp/api/v3/status/
) - How the repo, the content in the repo, was created/added to the repo. (API calls)
I usually upload packages as follows (in case you want to compare with your method):
1.) Upload example package to pulp:
http --form post :/pulp/api/v3/content/deb/packages/ file@binutils_2.31.1-16_amd64.deb
2.) Add the uploaded package content to a pulp repo:
http post :/pulp/api/v3/repositories/deb/apt/<repo_id>/modify/ add_content_units:="[\"<pulp_hrf>\"]"
Note: You can find the `<pulp_hrf_of_the_package_you_uploaded>` using:
http get :/pulp/api/v3/content/deb/packages/
Alternatively you can find it by running `http get` on the task you spawned in step 1.
3.) Create publication (same thing you did, which caused the error in your case)
Updated by rafzei about 3 years ago
The steps I've performed (API calls) were the same you mentioned. One step missing is Repository creation but this is obvious. Please note, that the SSL connection is not trusted. Below details you asked for:
"database_connection": {
"connected": true
},
"online_content_apps": [
{
"last_heartbeat": "2021-10-13T12:42:46.515583Z",
"name": "29028@pulp-vm"
},
{
"last_heartbeat": "2021-10-13T12:42:47.343918Z",
"name": "29020@pulp-vm"
},
{
"last_heartbeat": "2021-10-13T12:42:47.369687Z",
"name": "29013@pulp-vm"
},
{
"last_heartbeat": "2021-10-13T12:42:47.394507Z",
"name": "29018@pulp-vm"
},
{
"last_heartbeat": "2021-10-13T12:42:47.429486Z",
"name": "29012@pulp-vm"
},
{
"last_heartbeat": "2021-10-13T12:42:47.481055Z",
"name": "29015@pulp-vm"
},
{
"last_heartbeat": "2021-10-13T12:42:47.483577Z",
"name": "29017@pulp-vm"
},
{
"last_heartbeat": "2021-10-13T12:42:47.501697Z",
"name": "29016@pulp-vm"
}
],
"online_workers": [
{
"last_heartbeat": "2021-10-13T12:42:45.186694Z",
"name": "29163@pulp-vm.net",
"pulp_created": "2021-10-11T12:02:12.201004Z",
"pulp_href": "/pulp/api/v3/workers/a4f4d76c-103c-499b-a22a-a5c19038f8ac/"
},
{
"last_heartbeat": "2021-10-13T12:42:45.198349Z",
"name": "29313@pulp-vm.net",
"pulp_created": "2021-10-11T12:02:17.292276Z",
"pulp_href": "/pulp/api/v3/workers/43b7a301-f5a0-45dd-81dd-bf2e7b23f6ba/"
}
],
"redis_connection": {
"connected": true
},
"storage": {
"free": 27733942272,
"total": 31146369024,
"used": 3412426752
},
"versions": [
{
"component": "core",
"version": "3.16.0"
},
{
"component": "rpm",
"version": "3.15.0"
},
{
"component": "file",
"version": "1.10.0"
},
{
"component": "deb",
"version": "2.15.0"
}
]
}
Updated by quba42 about 3 years ago
Those are the latest release versions. I will need to see if I can reproduce the same issue. I believe I have all the information I need to do that. With any luck I will get around to it tomorrow.
Updated by rafzei about 3 years ago
Hello, any findings?
quba42 wrote:
Those are the latest release versions. I will need to see if I can reproduce the same issue. I believe I have all the information I need to do that. With any luck I will get around to it tomorrow.
Updated by arogarth about 3 years ago
Same here ...
Follwing the description from https://docs.pulpproject.org/pulp_deb/workflows/publish.html
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: pulp [e1c61e33871648ad8ed2483afe33ca73]: django.request:ERROR: Internal Server Error: /pulp/api/v3/publications/deb/apt/
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: Traceback (most recent call last):
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: response = get_response(request)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: response = wrapped_callback(request, *callback_args, **callback_kwargs)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: return view_func(*args, **kwargs)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/rest_framework/viewsets.py", line 125, in view
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: return self.dispatch(request, *args, **kwargs)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/rest_framework/views.py", line 509, in dispatch
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: response = self.handle_exception(exc)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/rest_framework/views.py", line 469, in handle_exception
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: self.raise_uncaught_exception(exc)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: raise exc
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/rest_framework/views.py", line 506, in dispatch
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: response = handler(request, *args, **kwargs)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/pulp_deb/app/viewsets/publication.py", line 88, in create
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: result = dispatch(
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/pulpcore/tasking/tasks.py", line 78, in dispatch
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: args_as_json = json.dumps(args, cls=UUIDEncoder)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/opt/rh/rh-python38/root/usr/lib64/python3.8/json/__init__.py", line 234, in dumps
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: return cls(
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/opt/rh/rh-python38/root/usr/lib64/python3.8/json/encoder.py", line 199, in encode
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: chunks = self.iterencode(o, _one_shot=True)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/opt/rh/rh-python38/root/usr/lib64/python3.8/json/encoder.py", line 257, in iterencode
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: return _iterencode(o, 0)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/usr/local/lib/pulp/lib64/python3.8/site-packages/pulpcore/tasking/tasks.py", line 24, in default
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: return super().default(obj)
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: File "/opt/rh/rh-python38/root/usr/lib64/python3.8/json/encoder.py", line 179, in default
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: raise TypeError(f'Object of type {o.__class__.__name__} '
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: TypeError: Object of type AptRepository is not JSON serializable
Oct 19 11:08:20 cf1-pulp01.vagrant.infra.de.local.net gunicorn: pulp [e1c61e33871648ad8ed2483afe33ca73]: 127.0.0.1 - admin [19/Oct/2021:09:08:20 +0000] "POST /pulp/api/v3/publications/deb/apt/ HTTP/1.0" 500 145 "-" "HTTPie/1.0.3"
Updated by arogarth about 3 years ago
It seems to be fixed in the current source - https://github.com/pulp/pulp_deb/blob/main/pulp_deb/app/viewsets/publication.py
Updated by quba42 about 3 years ago
If it is fixed on the main branch, I should just go ahead and perform a release. There are only two real changes between the last release and main, but one of them fixes some pulpcore deprecations. Maybe those deprecations were removed sooner than I anticipated. Not sure when I will find the time, to test this, and then perform a release...
Updated by arogarth about 3 years ago
Update - Same happens to pulp_deb/app/viewsets/repository.py - on sync to remote repo...
Updated by quba42 about 3 years ago
I was able to reproduce this issue on the 2.15
branch, but failed to do so on the main
branch, so something must have fixed it already...
I will do one more test to see if I can find the exact commit that fixes it.
Updated by quba42 about 3 years ago
- Is duplicate of Issue #9349: Fix pulpcore 3.15 deprecations added
Updated by quba42 about 3 years ago
Looks like I just messed up the deprecation policy, and failed to add the deprecation fixes to the pulp_deb 2.15 release... Ups...
Updated by quba42 about 3 years ago
- Tracker changed from Issue to Backport
- Subject changed from Err500 when trying to create Publication via API call to Backport 9349 to 2.15
- % Done set to 0
- Severity deleted (
2. Medium) - OS deleted (
CentOS 7) - Groomed deleted (
No)
Updated by quba42 about 3 years ago
- Subject changed from Backport 9349 to 2.15 to Backport 9349 to 2.15: Object of type AptRepository is not JSON serializable
Updated by pulpbot about 3 years ago
- Status changed from NEW to POST
Added by quba42 about 3 years ago
Updated by quba42 about 3 years ago
- Status changed from POST to MODIFIED
- % Done changed from 0 to 100
Applied in changeset ac420e336ee6085bc356fa05a6c4b703a71d6870.
Updated by pulpbot about 3 years ago
- Status changed from MODIFIED to CLOSED - CURRENTRELEASE
Fix pulpcore deprecations
backports #9349 https://pulp.plan.io/issues/9349
fixes #9505
(cherry picked from commit 18722b70c1b9f160b473167ec61de6aab1355dff)