Issue #2422
Updated by bmbouter over 7 years ago
I think plugin developers should think more about backwards compatibility with clients. In this case, I was getting an error: <pre> Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) unexpected error occurred importing uploaded file: The field 'checksum_type' does not exist on the document 'RPM' Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) Traceback (most recent call last): Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) File "/usr/lib/python2.7/site-packages/pulp_rpm/plugins/importers/yum/upload.py", line 113, in upload Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) handlers[type_id](repo, type_id, unit_key, metadata, file_path, conduit, config) Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) File "/usr/lib/python2.7/site-packages/pulp_rpm/plugins/importers/yum/upload.py", line 403, in _handle_package Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) unit = model_class(**rpm_data) Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) File "/usr/lib/python2.7/site-packages/pulp_rpm/plugins/db/models.py", line 735, in __init__ Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) super(RpmBase, self).__init__(*args, **kwargs) Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) File "/usr/lib/python2.7/site-packages/pulp_rpm/plugins/db/models.py", line 153, in __init__ Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) super(NonMetadataPackage, self).__init__(*args, **kwargs) Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) File "/usr/lib/python2.7/site-packages/pulp/server/db/model/__init__.py", line 55, in __init__ Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) super(AutoRetryDocument, self).__init__(*args, **kwargs) Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) File "/usr/lib/python2.7/site-packages/mongoengine/base/document.py", line 80, in __init__ Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) raise FieldDoesNotExist(msg) Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp_rpm.plugins.importers.yum.upload:ERROR: (14734-80608) FieldDoesNotExist: The field 'checksum_type' does not exist on the document 'RPM' Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp.server.managers.content.upload:ERROR: (14734-80608) Error from the importer while importing uploaded unit to repository [yocto-x86_64] Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp.server.managers.content.upload:ERROR: (14734-80608) Traceback (most recent call last): Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp.server.managers.content.upload:ERROR: (14734-80608) File "/usr/lib/python2.7/site-packages/pulp/server/managers/content/upload.py", line 223, in import_uploaded_unit Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp.server.managers.content.upload:ERROR: (14734-80608) unit_type=unit_type_id, summary=result['summary'], details=result['details'] Nov 14 12:00:40 pulp-dev-win.unx.sas.com pulp[14734]: pulp.server.managers.content.upload:ERROR: (14734-80608) PulpCodedException: The importer yum_importer indicated a failed response when uploading rpm unit to repository yocto-x86_64. </pre> Which didn't make any sense at first blush. What really happens: the old client is supplying the old-style fields (checksum_type). The pulp_rpm plugin attempts to take all the client-supplied metadata fields and pass them into the Mongo model's constructor. In an ideal world, when a field is removed or renamed, the plugin should remove or rewrite the user-supplied metadata in the import call, so that old clients continue to work against new servers. I don't think it's overly taxing for the plugin developer to do this.