Skip to content
This repository has been archived by the owner on Jun 10, 2022. It is now read-only.

lo_unlink failed #27

Open
yevhene opened this issue Oct 10, 2015 · 9 comments
Open

lo_unlink failed #27

yevhene opened this issue Oct 10, 2015 · 9 comments

Comments

@yevhene
Copy link

yevhene commented Oct 10, 2015

After I delete model from DB, carrierwave-postgresql tries to call lo_unlink but there is no object with this oid in db already.

I am usin ActiveAdmin. It can be related.

PG::Error - lo_unlink failed:
  carrierwave-postgresql (0.1.5) lib/carrierwave/storage/postgresql_lo.rb:34:in `delete'
  carrierwave (0.10.0) lib/carrierwave/uploader/remove.rb:15:in `block in remove!'
  carrierwave (0.10.0) lib/carrierwave/uploader/callbacks.rb:17:in `with_callbacks'
  carrierwave (0.10.0) lib/carrierwave/uploader/remove.rb:14:in `remove!'
  carrierwave (0.10.0) lib/carrierwave/uploader/versions.rb:289:in `block in remove_versions!'
  carrierwave (0.10.0) lib/carrierwave/uploader/versions.rb:289:in `remove_versions!'
  carrierwave (0.10.0) lib/carrierwave/uploader/callbacks.rb:18:in `block in with_callbacks'
  carrierwave (0.10.0) lib/carrierwave/uploader/callbacks.rb:18:in `with_callbacks'
  carrierwave (0.10.0) lib/carrierwave/uploader/remove.rb:14:in `remove!'
  carrierwave (0.10.0) lib/carrierwave/mount.rb:392:in `remove!'
  carrierwave (0.10.0) lib/carrierwave/mount.rb:195:in `remove_image!'
  carrierwave (0.10.0) lib/carrierwave/orm/activerecord.rb:49:in `remove_image!'
  activesupport (4.2.4) lib/active_support/callbacks.rb:432:in `block in make_lambda'
  activesupport (4.2.4) lib/active_support/callbacks.rb:253:in `block in conditional'
  activesupport (4.2.4) lib/active_support/callbacks.rb:506:in `block in call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:506:in `call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:92:in `__run_callbacks__'
  activesupport (4.2.4) lib/active_support/callbacks.rb:778:in `_run_commit_callbacks'
  activerecord (4.2.4) lib/active_record/transactions.rb:314:in `committed!'
  activerecord (4.2.4) lib/active_record/connection_adapters/abstract/transaction.rb:89:in `commit_records'
  activerecord (4.2.4) lib/active_record/connection_adapters/abstract/transaction.rb:153:in `commit'
  activerecord (4.2.4) lib/active_record/connection_adapters/abstract/transaction.rb:175:in `commit_transaction'
  activerecord (4.2.4) lib/active_record/connection_adapters/abstract/transaction.rb:194:in `within_new_transaction'
  activerecord (4.2.4) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
  activerecord (4.2.4) lib/active_record/transactions.rb:220:in `transaction'
  activerecord (4.2.4) lib/active_record/transactions.rb:348:in `with_transaction_returning_status'
  activerecord (4.2.4) lib/active_record/transactions.rb:281:in `destroy'
   () home/yevhene/.rvm/gems/ruby-2.2.3@footstock/bundler/gems/activeadmin-06bf79c58216/lib/active_admin/resource_controller/data_access.rb:190:in `block in destroy_resource'
  activesupport (4.2.4) lib/active_support/core_ext/object/try.rb:77:in `try!'
  activesupport (4.2.4) lib/active_support/core_ext/object/try.rb:63:in `try'
   () home/yevhene/.rvm/gems/ruby-2.2.3@footstock/bundler/gems/activeadmin-06bf79c58216/lib/active_admin/callbacks.rb:79:in `block (2 levels) in define_active_admin_callbacks'
   () home/yevhene/.rvm/gems/ruby-2.2.3@footstock/bundler/gems/activeadmin-06bf79c58216/lib/active_admin/resource_controller/data_access.rb:189:in `destroy_resource'
  inherited_resources (1.6.0) lib/inherited_resources/actions.rb:58:in `destroy'
  actionpack (4.2.4) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (4.2.4) lib/abstract_controller/base.rb:198:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.2.4) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.2.4) lib/active_support/callbacks.rb:117:in `call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
  activesupport (4.2.4) lib/active_support/callbacks.rb:505:in `call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:92:in `__run_callbacks__'
  activesupport (4.2.4) lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
  activesupport (4.2.4) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.4) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
  activesupport (4.2.4) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.4) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.4) lib/active_support/notifications.rb:164:in `instrument'
  actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.2.4) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.2.4) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.2.4) lib/abstract_controller/base.rb:137:in `process'
  actionview (4.2.4) lib/action_view/rendering.rb:30:in `process'
  actionpack (4.2.4) lib/action_controller/metal.rb:196:in `dispatch'
  actionpack (4.2.4) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.2.4) lib/action_controller/metal.rb:237:in `block in action'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:76:in `dispatch'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:45:in `serve'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:821:in `call'
  bullet (4.14.7) lib/bullet/rack.rb:10:in `call'
  warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.3) lib/warden/manager.rb:34:in `call'
  rack (1.6.4) lib/rack/etag.rb:24:in `call'
  rack (1.6.4) lib/rack/conditionalget.rb:38:in `call'
  rack (1.6.4) lib/rack/head.rb:13:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.4) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.4) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.4) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
  activerecord (4.2.4) lib/active_record/migration.rb:377:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.4) lib/active_support/callbacks.rb:88:in `__run_callbacks__'
  activesupport (4.2.4) lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
  activesupport (4.2.4) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.4) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.4) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.4) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.4) lib/rails/rack/logger.rb:20:in `call'
  quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
  actionpack (4.2.4) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.4) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.4) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.4) lib/rack/lock.rb:17:in `call'
  actionpack (4.2.4) lib/action_dispatch/middleware/static.rb:116:in `call'
  rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
  railties (4.2.4) lib/rails/engine.rb:518:in `call'
  railties (4.2.4) lib/rails/application.rb:165:in `call'
  rack (1.6.4) lib/rack/content_length.rb:15:in `call'
  thin (1.6.4) lib/thin/connection.rb:86:in `block in pre_process'
  thin (1.6.4) lib/thin/connection.rb:84:in `pre_process'
  thin (1.6.4) lib/thin/connection.rb:53:in `process'
  thin (1.6.4) lib/thin/connection.rb:39:in `receive_data'
  eventmachine (1.0.8) lib/eventmachine.rb:193:in `run'
  thin (1.6.4) lib/thin/backends/base.rb:73:in `start'
  thin (1.6.4) lib/thin/server.rb:162:in `start'
  rack (1.6.4) lib/rack/handler/thin.rb:19:in `run'
  rack (1.6.4) lib/rack/server.rb:286:in `start'
  railties (4.2.4) lib/rails/commands/server.rb:80:in `start'
  railties (4.2.4) lib/rails/commands/commands_tasks.rb:80:in `block in server'
  railties (4.2.4) lib/rails/commands/commands_tasks.rb:75:in `server'
  railties (4.2.4) lib/rails/commands/commands_tasks.rb:39:in `run_command!'
  railties (4.2.4) lib/rails/commands.rb:17:in `<top (required)>'
  bin/rails:8:in `<top (required)>'
  spring (1.4.0) lib/spring/client/rails.rb:28:in `call'
  spring (1.4.0) lib/spring/client/command.rb:7:in `call'
  spring (1.4.0) lib/spring/client.rb:28:in `run'
  spring (1.4.0) bin/spring:49:in `<top (required)>'
  spring (1.4.0) lib/spring/binstub.rb:11:in `<top (required)>'
  /home/yevhene/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
  bin/spring:13:in `<top (required)>'
  bin/rails:3:in `<main>'
$ tail -f /var/log/postgresql/postgresql-9.4-main.log
2015-10-10 14:39:59 EEST [16842-9] postgres@footstock_develop ERROR:  large object 1179618 does not exist
@diogob
Copy link
Owner

diogob commented Oct 10, 2015

Did you expect the error to be treated in a different way?
Or the problem is that this is happening all deletes?
If is the later, are you sure the large objects are there before the dele command?

@yevhene
Copy link
Author

yevhene commented Oct 10, 2015

This is happening all deletes.
LO is accessible before destroy.

@diogob
Copy link
Owner

diogob commented Oct 13, 2015

I'll look into it. If you could send some code for a failing spec that would be very helpful :D

@piotrpawlik
Copy link

Is there any update in this matter? I am facing the same problem.

@yevhene
Copy link
Author

yevhene commented Dec 15, 2015

@ppfp no, sorry. I am moved to simple file storage. (S3 - is alternative).

@diogob
Copy link
Owner

diogob commented Dec 15, 2015

@ppfp I'm not currently using this code, but if someone provides a failing spec I'd be glad to fix it.

@sohrabtowfighi
Copy link

I bypassed the issue by first assigning model instance oid to nil, then saving, then running vacuum_lo then destroying. I do not know how expensive the vacuum_lo operation is, but I think it is fine for my use-case.

@shtirlic
Copy link

shtirlic commented Oct 2, 2017

Also had this issue, I found that lo_unlink triggered two times, at first in after_save callback, and second inafter_commit callback => so oid is not present at the last call and it fails to delete object.

@RailsCod3rFuture
Copy link

Has this issue been fixed? When I try to use model.destroy_all, I receive PG::Error: lo_unlink failed. How can I avoid this error in both cases of removing one object and destroying all objects that relate to a particular model instance?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants