samvera-deprecated / curation_concerns

A Hydra-based Rails Engine that extends an application, adding the ability to Create, Read, Update and Destroy (CRUD) objects (based on Hydra::Works) and providing a generator for defining object types with custom workflows, views, access controls, etc.
Other
15 stars 27 forks source link

Error when completed open access item viewed by anonymous user #1042

Closed randalldfloyd closed 7 years ago

randalldfloyd commented 7 years ago

The workflow branch of CurationConcerns throws a stack trace when a work has been advanced through to 'completed'; is open access; and an anonymous/unauthenticated user clicks through to the work after a search:

ActiveRecord::StatementInvalid in CurationConcerns::MediatedWorks#show Showing app/views/curation_concerns/base/show.html.erb where line 25 raised:

SQLite3::ConstraintException: NOT NULL constraint failed: sipity_agents.proxy_for_id: INSERT INTO "sipity_agents" ("proxy_for_type", "created_at", "updated_at") VALUES (?, ?, ?)

Extracted source (around line 108):

106 def each 107 loop do 108 val = step 109 break self if done? 110 yield val 111 end

sqlite3 (1.3.11) lib/sqlite3/statement.rb:108:in step' sqlite3 (1.3.11) lib/sqlite3/statement.rb:108:inblock in each' sqlite3 (1.3.11) lib/sqlite3/statement.rb:107:in loop' sqlite3 (1.3.11) lib/sqlite3/statement.rb:107:ineach' activerecord (5.0.0.1) lib/active_record/connection_adapters/sqlite3_adapter.rb:202:in to_a' activerecord (5.0.0.1) lib/active_record/connection_adapters/sqlite3_adapter.rb:202:inblock in exec_query' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract_adapter.rb:566:in block in log' activesupport (5.0.0.1) lib/active_support/notifications/instrumenter.rb:21:ininstrument' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract_adapter.rb:560:in log' activerecord (5.0.0.1) lib/active_record/connection_adapters/sqlite3_adapter.rb:193:inexec_query' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:92:in exec_insert' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:124:ininsert' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/query_cache.rb:14:in insert' activerecord (5.0.0.1) lib/active_record/relation.rb:65:ininsert' activerecord (5.0.0.1) lib/active_record/persistence.rb:554:in _create_record' activerecord (5.0.0.1) lib/active_record/counter_cache.rb:128:in_create_record' activerecord (5.0.0.1) lib/active_record/locking/optimistic.rb:75:in _create_record' activerecord (5.0.0.1) lib/active_record/attribute_methods/dirty.rb:123:in_create_record'

jcoyne commented 7 years ago

Looks like you cut off the stack trace right as it was about to get good. Can you post the whole thing?

randalldfloyd commented 7 years ago

Ah, right, I should have gotten the trace from the log instead of the browser:

ActionView::Template::Error (SQLite3::ConstraintException: NOT NULL constraint failed: sipity_agents.proxy_for_id: INSERT INTO "sipity_agents" ("proxy_for_type", "created_at", "updated_at") VALUES (?, ?, ?)): 22: <%= render 'multiple_upload', presenter: @presenter %> 23: <% end %> 24: 25: <%= render 'workflow_actions', presenter: @presenter if @presenter.workflow.actions.present? %> 26: <%= render "show_actions", collector: collector, editor: editor%>

sqlite3 (1.3.11) lib/sqlite3/statement.rb:108:in step' sqlite3 (1.3.11) lib/sqlite3/statement.rb:108:inblock in each' sqlite3 (1.3.11) lib/sqlite3/statement.rb:107:in loop' sqlite3 (1.3.11) lib/sqlite3/statement.rb:107:ineach' activerecord (5.0.0.1) lib/active_record/connection_adapters/sqlite3_adapter.rb:202:in to_a' activerecord (5.0.0.1) lib/active_record/connection_adapters/sqlite3_adapter.rb:202:inblock in exec_query' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract_adapter.rb:566:in block in log' activesupport (5.0.0.1) lib/active_support/notifications/instrumenter.rb:21:ininstrument' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract_adapter.rb:560:in log' activerecord (5.0.0.1) lib/active_record/connection_adapters/sqlite3_adapter.rb:193:inexec_query' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:92:in exec_insert' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:124:ininsert' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/query_cache.rb:14:in insert' activerecord (5.0.0.1) lib/active_record/relation.rb:65:ininsert' activerecord (5.0.0.1) lib/active_record/persistence.rb:554:in _create_record' activerecord (5.0.0.1) lib/active_record/counter_cache.rb:128:in_create_record' activerecord (5.0.0.1) lib/active_record/locking/optimistic.rb:75:in _create_record' activerecord (5.0.0.1) lib/active_record/attribute_methods/dirty.rb:123:in_create_record' activerecord (5.0.0.1) lib/active_record/callbacks.rb:302:in block in _create_record' activesupport (5.0.0.1) lib/active_support/callbacks.rb:126:incall' activesupport (5.0.0.1) lib/active_support/callbacks.rb:506:in block (2 levels) in compile' activesupport (5.0.0.1) lib/active_support/callbacks.rb:455:incall' activesupport (5.0.0.1) lib/active_support/callbacks.rb:101:in __run_callbacks__' activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in_run_create_callbacks' activerecord (5.0.0.1) lib/active_record/callbacks.rb:302:in_create_record' activerecord (5.0.0.1) lib/active_record/timestamp.rb:68:in_create_record' activerecord (5.0.0.1) lib/active_record/persistence.rb:534:increate_or_update' activerecord (5.0.0.1) lib/active_record/callbacks.rb:298:inblock in create_or_update' activesupport (5.0.0.1) lib/active_support/callbacks.rb:126:incall' activesupport (5.0.0.1) lib/active_support/callbacks.rb:506:inblock (2 levels) in compile' activesupport (5.0.0.1) lib/active_support/callbacks.rb:455:incall' activesupport (5.0.0.1) lib/active_support/callbacks.rb:101:inrun_callbacks' activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in _run_save_callbacks' activerecord (5.0.0.1) lib/active_record/callbacks.rb:298:increate_or_update' activerecord (5.0.0.1) lib/active_record/persistence.rb:125:in save' activerecord (5.0.0.1) lib/active_record/validations.rb:44:insave' activerecord (5.0.0.1) lib/active_record/attribute_methods/dirty.rb:22:in save' activerecord (5.0.0.1) lib/active_record/transactions.rb:319:inblock (2 levels) in save' activerecord (5.0.0.1) lib/active_record/transactions.rb:395:in block in with_transaction_returning_status' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:232:inblock in transaction' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/transaction.rb:189:in within_new_transaction' activerecord (5.0.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:232:intransaction' activerecord (5.0.0.1) lib/active_record/transactions.rb:211:in transaction' activerecord (5.0.0.1) lib/active_record/transactions.rb:392:inwith_transaction_returning_status' activerecord (5.0.0.1) lib/active_record/transactions.rb:319:in block in save' activerecord (5.0.0.1) lib/active_record/transactions.rb:334:inrollback_active_record_state!' activerecord (5.0.0.1) lib/active_record/transactions.rb:318:in save' activerecord (5.0.0.1) lib/active_record/suppressor.rb:41:insave' activerecord (5.0.0.1) lib/active_record/associations/singular_association.rb:79:in _create_record' activerecord (5.0.0.1) lib/active_record/associations/singular_association.rb:31:increate!' activerecord (5.0.0.1) lib/active_record/associations/builder/singular_association.rb:26:in create_sipity_agent!' /home/rdfloyd/rails_dev/curation_concerns/app/models/concerns/curation_concerns/user.rb:15:into_sipity_agent' power_converter (0.1.2) lib/power_converter.rb:158:in public_send' power_converter (0.1.2) lib/power_converter.rb:158:inconvert' power_converter (0.1.2) lib/power_converter.rb:259:in method_missing' /home/rdfloyd/rails_dev/curation_concerns/app/services/curation_concerns/workflow/permission_query.rb:160:inscope_processing_agents_for' /home/rdfloyd/rails_dev/curation_concerns/app/services/curation_concerns/workflow/permission_query.rb:307:in scope_processing_workflow_roles_for_user_and_workflow' /home/rdfloyd/rails_dev/curation_concerns/app/services/curation_concerns/workflow/permission_query.rb:286:inscope_processing_workflow_roles_for_user_and_entity' /home/rdfloyd/rails_dev/curation_concerns/app/services/curation_concerns/workflow/permission_query.rb:377:in scope_permitted_entity_workflow_state_actions' /home/rdfloyd/rails_dev/curation_concerns/app/services/curation_concerns/workflow/permission_query.rb:38:inscope_permitted_workflow_actions_available_for_current_state' /home/rdfloyd/rails_dev/curation_concerns/app/presenters/curation_concerns/workflow_presenter.rb:22:in actions' /home/rdfloyd/rails_dev/curation_concerns/app/views/curation_concerns/base/show.html.erb:25:in**home_rdfloyd_rails_dev_curation_concerns_app_views_curation_concerns_base_show_html_erb2166051704542516146_70091683003600' actionview (5.0.0.1) lib/action_view/template.rb:158:in block in render' activesupport (5.0.0.1) lib/active_support/notifications.rb:166:ininstrument' actionview (5.0.0.1) lib/action_view/template.rb:348:in instrument' actionview (5.0.0.1) lib/action_view/template.rb:156:inrender' actionview (5.0.0.1) lib/action_view/renderer/template_renderer.rb:54:in block (2 levels) in render_template' actionview (5.0.0.1) lib/action_view/renderer/abstract_renderer.rb:42:inblock in instrument' activesupport (5.0.0.1) lib/active_support/notifications.rb:164:in block in instrument' activesupport (5.0.0.1) lib/active_support/notifications/instrumenter.rb:21:ininstrument' activesupport (5.0.0.1) lib/active_support/notifications.rb:164:in instrument' actionview (5.0.0.1) lib/action_view/renderer/abstract_renderer.rb:41:ininstrument' actionview (5.0.0.1) lib/action_view/renderer/template_renderer.rb:53:in block in render_template' actionview (5.0.0.1) lib/action_view/renderer/template_renderer.rb:61:inrender_with_layout' actionview (5.0.0.1) lib/action_view/renderer/template_renderer.rb:52:in render_template' actionview (5.0.0.1) lib/action_view/renderer/template_renderer.rb:14:inrender' actionview (5.0.0.1) lib/action_view/renderer/renderer.rb:42:in render_template' actionview (5.0.0.1) lib/action_view/renderer/renderer.rb:23:inrender' actionview (5.0.0.1) lib/action_view/rendering.rb:103:in _render_template' actionpack (5.0.0.1) lib/action_controller/metal/streaming.rb:217:in_render_template' actionview (5.0.0.1) lib/action_view/rendering.rb:83:in render_to_body' actionpack (5.0.0.1) lib/action_controller/metal/rendering.rb:52:inrender_to_body' actionpack (5.0.0.1) lib/action_controller/metal/renderers.rb:144:in render_to_body' actionpack (5.0.0.1) lib/abstract_controller/rendering.rb:26:inrender' actionpack (5.0.0.1) lib/action_controller/metal/rendering.rb:36:in render' actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:44:inblock (2 levels) in render' activesupport (5.0.0.1) lib/active_support/core_ext/benchmark.rb:12:in block in ms' /home/rdfloyd/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/benchmark.rb:308:inrealtime' activesupport (5.0.0.1) lib/active_support/core_ext/benchmark.rb:12:in ms' actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:44:inblock in render' actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:87:in cleanup_view_runtime' activerecord (5.0.0.1) lib/active_record/railties/controller_runtime.rb:25:incleanup_view_runtime' actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:43:in render' actionpack (5.0.0.1) lib/action_controller/metal/implicit_render.rb:36:indefault_render' actionpack (5.0.0.1) lib/action_controller/metal/basic_implicit_render.rb:4:in block in send_action' actionpack (5.0.0.1) lib/action_controller/metal/basic_implicit_render.rb:4:intap' actionpack (5.0.0.1) lib/action_controller/metal/basic_implicit_render.rb:4:in send_action' actionpack (5.0.0.1) lib/abstract_controller/base.rb:188:inprocess_action' actionpack (5.0.0.1) lib/action_controller/metal/rendering.rb:30:in process_action' actionpack (5.0.0.1) lib/abstract_controller/callbacks.rb:20:inblock in process_action' activesupport (5.0.0.1) lib/active_support/callbacks.rb:126:in call' activesupport (5.0.0.1) lib/active_support/callbacks.rb:506:inblock (2 levels) in compile' activesupport (5.0.0.1) lib/active_support/callbacks.rb:455:in call' activesupport (5.0.0.1) lib/active_support/callbacks.rb:101:inrun_callbacks' activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in _run_process_action_callbacks' activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:inrun_callbacks' actionpack (5.0.0.1) lib/abstract_controller/callbacks.rb:19:in process_action' actionpack (5.0.0.1) lib/action_controller/metal/rescue.rb:20:inprocess_action' actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:32:in block in process_action' activesupport (5.0.0.1) lib/active_support/notifications.rb:164:inblock in instrument' activesupport (5.0.0.1) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (5.0.0.1) lib/active_support/notifications.rb:164:ininstrument' actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (5.0.0.1) lib/action_controller/metal/params_wrapper.rb:248:inprocess_action' activerecord (5.0.0.1) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (5.0.0.1) lib/abstract_controller/base.rb:126:inprocess' actionview (5.0.0.1) lib/action_view/rendering.rb:30:in process' actionpack (5.0.0.1) lib/action_controller/metal.rb:190:indispatch' actionpack (5.0.0.1) lib/action_controller/metal.rb:262:in dispatch' actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:50:indispatch' actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:32:in serve' actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:39:inblock in serve' actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in each' actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:inserve' actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:725:in call' warden (1.2.6) lib/warden/manager.rb:35:inblock in call' warden (1.2.6) lib/warden/manager.rb:34:in catch' warden (1.2.6) lib/warden/manager.rb:34:incall' rack (2.0.1) lib/rack/etag.rb:25:in call' rack (2.0.1) lib/rack/conditional_get.rb:25:incall' rack (2.0.1) lib/rack/head.rb:12:in call' rack (2.0.1) lib/rack/session/abstract/id.rb:222:incontext' rack (2.0.1) lib/rack/session/abstract/id.rb:216:in call' actionpack (5.0.0.1) lib/action_dispatch/middleware/cookies.rb:613:incall' active-fedora (11.0.1) lib/active_fedora/ldp_cache.rb:26:in call' activerecord (5.0.0.1) lib/active_record/migration.rb:552:incall' actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:38:in block in call' activesupport (5.0.0.1) lib/active_support/callbacks.rb:97:inrun_callbacks**' activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in _run_call_callbacks' activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:inrun_callbacks' actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:36:in call' actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:incall' actionpack (5.0.0.1) lib/action_dispatch/middleware/remote_ip.rb:79:in call' actionpack (5.0.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:incall' web-console (3.3.1) lib/web_console/middleware.rb:131:in call_app' web-console (3.3.1) lib/web_console/middleware.rb:28:inblock in call' web-console (3.3.1) lib/web_console/middleware.rb:18:in catch' web-console (3.3.1) lib/web_console/middleware.rb:18:incall' actionpack (5.0.0.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in call' railties (5.0.0.1) lib/rails/rack/logger.rb:36:incall_app' railties (5.0.0.1) lib/rails/rack/logger.rb:24:in block in call' activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:inblock in tagged' activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:26:in tagged' activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:intagged' railties (5.0.0.1) lib/rails/rack/logger.rb:24:in call' sprockets-rails (3.2.0) lib/sprockets/rails/quiet_assets.rb:13:incall' actionpack (5.0.0.1) lib/action_dispatch/middleware/request_id.rb:24:in call' rack (2.0.1) lib/rack/method_override.rb:22:incall' rack (2.0.1) lib/rack/runtime.rb:22:in call' activesupport (5.0.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:incall' actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in call' actionpack (5.0.0.1) lib/action_dispatch/middleware/static.rb:136:incall' rack (2.0.1) lib/rack/sendfile.rb:111:in call' railties (5.0.0.1) lib/rails/engine.rb:522:incall' puma (3.6.0) lib/puma/configuration.rb:225:in call' puma (3.6.0) lib/puma/server.rb:578:inhandle_request' puma (3.6.0) lib/puma/server.rb:415:in process_client' puma (3.6.0) lib/puma/server.rb:275:inblock in run' puma (3.6.0) lib/puma/thread_pool.rb:116:in `block in spawn_thread' Rendering /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout Rendering /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb Rendered /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (4.8ms) Rendering /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb Rendered /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.0ms) Rendering /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb Rendered /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.8ms) Rendered /home/rdfloyd/.rvm/gems/ruby-2.3.1@curation_concerns/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (21.1ms)

jcoyne commented 7 years ago

Looks like app/presenters/curation_concerns/workflow_presenter.rb:22 should return empty set if there is no logged in user.

randalldfloyd commented 7 years ago

Sounds right. If I signup/login with a new user (that wasn't present when workflow roles were granted to all users), then that user can successfully view the completed open access work.

jeremyf commented 7 years ago

I would've thought the query would return an empty set.

https://github.com/projecthydra/curation_concerns/blob/workflow/app/services/curation_concerns/workflow/permission_query.rb#L155

jeremyf commented 7 years ago

It appears that current_ability.current_user.present? is true.