pulp / pulpcore

Pulp 3 pulpcore package https://pypi.org/project/pulpcore/
GNU General Public License v2.0
284 stars 111 forks source link

Missing resource information in a "pulpcore.app.tasks.base.general_update" task during a replication #4640

Open mchithu opened 10 months ago

mchithu commented 10 months ago

Version Python PYPI installation

Describe the bug In the Replication job execution, a "pulpcore.app.tasks.base.general_update" subtask doesn't reveal the artifact resource reference which it is trying to update. The following is a capture of "general_update" task of a distribution artifact and no clue which object it failed to update.

{
    "pulp_href": "/pulp/api/v3/tasks/018b8ae2-f55b-70e1-823d-d56c0fdab18d/",
    "pulp_created": "2023-11-01T12:36:51.676035Z",
    "state": "failed",
    "name": "pulpcore.app.tasks.base.general_update",
    "logging_cid": "0ebdbb4c4a1e406ab401d0548884cfe8",
    "created_by": "/pulp/api/v3/users/1/",
    "started_at": "2023-11-01T12:36:59.839374Z",
    "finished_at": "2023-11-01T12:37:00.057292Z",
    "error": {
        "traceback": "  File \"/usr/local/lib/python3.11/site-packages/pulpcore/tasking/tasks.py\", line 64, in _execute_task\n    result = func(*args, **kwargs)\n             ^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.11/site-packages/pulpcore/app/tasks/base.py\", line 74, in general_update\n    serializer.is_valid(raise_exception=True)\n  File \"/usr/local/lib/python3.11/site-packages/rest_framework/serializers.py\", line 235, in is_valid\n    raise ValidationError(self.errors)\n",
        "description": "{'non_field_errors': [ErrorDetail(string=\"Only one of the attributes 'repository' and 'publication' may be used simultaneously.\", code='invalid')]}"
    },
    "worker": "/pulp/api/v3/workers/018b8ad1-5f9b-7f7d-b0ba-abd6c22cfa08/",
    "parent_task": "/pulp/api/v3/tasks/018b8ae2-ea8a-76f2-8a2a-cf2b8b67b296/",
    "child_tasks": [],
    "task_group": "/pulp/api/v3/task-groups/018b8ae2-ea84-7be0-9f39-33dcd5d27ab2/",
    "progress_reports": [],
    "created_resources": [],
    "reserved_resources_record": [
        "/api/v3/distributions/",
        "shared:/pulp/api/v3/domains/b56f460a-45b1-459f-9d2f-b4e6be950caa/"
    ]
}

To Reproduce Kindly follow the reproduce procedure defined in the issue https://github.com/pulp/pulpcore/issues/4637

Expected behavior Like "pulpcore.app.tasks.base.general_create", "pulpcore.app.tasks.base.general_delete", "pulp_rpm.app.tasks.synchronizing.synchronize" subtasks the "pulpcore.app.tasks.base.general_update" subtask should also provide an reference to an object which is updating.

mdellweg commented 10 months ago

reserved resources is an internal locking mechanism, not a reporting tool. It was an error in the first place to expose this information at all.