datopian / ckanext-iaea

Custom extension for IAEA CKAN
GNU Affero General Public License v3.0
0 stars 1 forks source link

500 Internal error when link resource is replaced #39

Closed sagargg closed 2 years ago

sagargg commented 2 years ago

Dev environment returning 500 Internal error when link resource is replaced. eg. https://ckan.iaea.dev.datopian.com/en/dataset/wms-test/resource/d22ae09b-0b48-433a-bbc1-864a3b794511

Steps to Reproduce

  1. Create a link type resource with any format.
  2. Replace the current resource link.

Acceptance Criteria

Tasks

Error on Log

 2022-04-13 08:25:31,026 INFO  [ckanext.s3filestore.uploader] Bucket dx-iaea found!
Error - <class 'botocore.errorfactory.NoSuchKey'>: An error occurred (NoSuchKey) when calling the DeleteObject operation: The specified key does not exist.
URL: https://ckan.iaea.dev.datopian.com/dataset/wms-test/resource_edit/643dc513-9f33-4c72-97e7-5ca9c93f42ca
File '/usr/lib/python2.7/site-packages/weberror/errormiddleware.py', line 171 in __call__
  app_iter = self.application(environ, sr_checker)
File '/usr/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__
  resp = self.call_func(req, *args, **self.kwargs)
File '/usr/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func
  return self.func(req, *args, **kwargs)
File '/usr/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in __call__
  return request.get_response(self.app)
File '/usr/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application
  app_iter = application(self.environ, start_response)
File '/usr/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__
  resp = self.call_func(req, *args, **self.kwargs)
File '/usr/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func
  return self.func(req, *args, **kwargs)
File '/usr/lib/python2.7/site-packages/fanstatic/injector.py', line 54 in __call__
  response = request.get_response(self.app)
File '/usr/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application
  app_iter = application(self.environ, start_response)
File '/srv/app/src/ckan/ckan/config/middleware/pylons_app.py', line 264 in inner
  result = application(environ, start_response)
File '/usr/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__
  return self.app(environ, start_response)
File '/usr/lib/python2.7/site-packages/beaker/middleware.py', line 156 in __call__
  return self.wrap_app(environ, session_start_response)
File '/usr/lib/python2.7/site-packages/routes/middleware.py', line 131 in __call__
  response = self.app(environ, start_response)
File '/srv/app/src/ckan/ckan/config/middleware/common_middleware.py', line 33 in __call__
  return self.app(environ, start_response)
File '/srv/app/src/ckan/ckan/config/middleware/common_middleware.py', line 59 in __call__
  return self.app(environ, start_response)
File '/usr/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__
  response = self.dispatch(controller, environ, start_response)
File '/usr/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch
  return controller(environ, start_response)
File '/srv/app/src/ckan/ckan/lib/base.py', line 242 in __call__
  res = WSGIController.__call__(self, environ, start_response)
File '/usr/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__
  response = self._dispatch_call()
File '/usr/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call
  response = self._inspect_call(func)
File '/usr/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call
  result = self._perform_call(func, args)
File '/usr/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call
  return func(**args)
File '/srv/app/src/ckan/ckan/controllers/package.py', line 589 in resource_edit
  get_action('resource_update')(context, data)
File '/srv/app/src/ckan/ckan/logic/__init__.py', line 471 in wrapped
  result = _action(context, data_dict, **kw)
File '/srv/app/src/ckan/ckan/logic/action/update.py', line 124 in resource_update
  upload.upload(id, uploader.get_max_resource_size())
File '/srv/app/src/ckanext-s3filestore/ckanext/s3filestore/uploader.py', line 299 in upload
  self.clear_key(filepath)
File '/srv/app/src/ckanext-s3filestore/ckanext/s3filestore/uploader.py', line 134 in clear_key
  raise e
NoSuchKey: An error occurred (NoSuchKey) when calling the DeleteObject operation: The specified key does not exist.
sagargg commented 2 years ago

Confirmed the links resource files are uploading to the bucket.
error is from here https://github.com/datopian/ckanext-s3filestore/blob/fix-null-content-type/ckanext/s3filestore/uploader.py#L124-L134

sagargg commented 2 years ago

FIXED