# Bug COMMS-247 - Cannot delete users who used emoji reactions

Project: Stream Communicator
Status: closed
URL: https://community.openproject.org/work_packages/COMMS-247

## Open points

_No work packages_

## Details

| Attribute | Value |
| --- | --- |
| Date |  |
| Priority | High |
| Module |  |
| Target versions | 15.3.1 |
| Observed in versions | 15.3.0 |
| Sprint |  |
| Backlog bucket |  |
| Bug found in version (deprecated) | 15.3.x |
| Requires doc change | No |
| Accessibility | No |
| Pull preview |  |
| List |  |
| Labels |  |

## People

| Attribute | Value |
| --- | --- |
| Assignee |  |
| Accountable | Kabiru Mwenja |
| Product manager |  |
| Developers |  |
| Designer |  |
| Ordered by |  |
| Signed off by |  |
| Interest by |  |

## Planning

| Attribute | Value |
| --- | --- |
| Relevance |  |

## Costs

| Attribute | Value |
| --- | --- |
| Votes |  |
| Work |  |
| Labor costs |  |

## Description

### Steps to reproduce

1.  Create a user
    
2.  As that user react with an emoji to any work package activity
    
3.  As an admin, try deleting that user via the administration
    

### What is the buggy behavior?

*   nothing happens
    

### What is the expected behavior?

*   the user should be deleted
    

### **Logs**

```text
Error performing Principals::DeleteJob (Job ID: b4655f31-e34c-4ed2-b66e-ba20f00abf3f) from GoodJob(default) in 189.93ms: ActiveRecord::InvalidForeignKey (PG::ForeignKeyViolation: ERROR:  update or delete on table "users" violates foreign key constraint "fk_rails_80a9e7c3ce" on table "emoji_reactions"
DETAIL:  Key (id)=(160) is still referenced from table "emoji_reactions".
):
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:894:in 'PG::Connection#exec_params'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:894:in 'block (2 levels) in ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#exec_no_cache'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:1027:in 'block in ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:999:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#with_raw_connection'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:893:in 'block in ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#exec_no_cache'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:1142:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#log'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:892:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#exec_no_cache'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:872:in 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#execute_and_clear'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:77:in 'ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements#exec_delete'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:208:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#delete'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/abstract/query_cache.rb:25:in 'ActiveRecord::ConnectionAdapters::AbstractAdapter#delete'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/persistence.rb:624:in 'ActiveRecord::Persistence::ClassMethods#_delete_record'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/persistence.rb:1198:in 'ActiveRecord::Persistence#_delete_row'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/persistence.rb:1194:in 'ActiveRecord::Persistence#destroy_row'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/counter_cache.rb:198:in 'ActiveRecord::CounterCache#destroy_row'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/locking/optimistic.rb:125:in 'ActiveRecord::Locking::Optimistic#destroy_row'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/persistence.rb:783:in 'ActiveRecord::Persistence#destroy'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/callbacks.rb:423:in 'block in ActiveRecord::Callbacks#destroy'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:110:in 'ActiveSupport::Callbacks#run_callbacks'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:952:in 'ActiveRecord::Base#_run_destroy_callbacks'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/callbacks.rb:423:in 'ActiveRecord::Callbacks#destroy'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/transactions.rb:305:in 'block in ActiveRecord::Transactions#destroy'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/transactions.rb:365:in 'block in ActiveRecord::Transactions#with_transaction_returning_status'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:342:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/transactions.rb:361:in 'ActiveRecord::Transactions#with_transaction_returning_status'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/transactions.rb:305:in 'ActiveRecord::Transactions#destroy'
/home/mk/dev/opf/openproject/core-5/app/workers/principals/delete_job.rb:40:in 'block in Principals::DeleteJob#perform'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:342:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/transactions.rb:212:in 'ActiveRecord::Transactions::ClassMethods#transaction'
/home/mk/dev/opf/openproject/core-5/app/workers/principals/delete_job.rb:33:in 'Principals::DeleteJob#perform'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:68:in 'block in ActiveJob::Execution#_perform_job'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/mk/dev/opf/openproject/core-5/app/workers/shared_job_setup.rb:59:in 'block in SharedJobSetup#prepare_job_context'
/home/mk/dev/opf/openproject/core-5/app/workers/shared_job_setup.rb:76:in 'SharedJobSetup#with_clean_request_store'
/home/mk/dev/opf/openproject/core-5/app/workers/shared_job_setup.rb:55:in 'SharedJobSetup#prepare_job_context'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/i18n-1.14.7/lib/i18n.rb:348:in 'I18n::Base#with_locale'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/translation.rb:9:in 'block (2 levels) in <module:Translation>'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/core_ext/time/zones.rb:65:in 'Time.use_zone'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/timezones.rb:9:in 'block (2 levels) in <module:Timezones>'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:67:in 'ActiveJob::Execution#_perform_job'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:32:in 'ActiveJob::Instrumentation#_perform_job'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:51:in 'ActiveJob::Execution#perform_now'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:26:in 'block in ActiveJob::Instrumentation#perform_now'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/railties/job_runtime.rb:13:in 'block in ActiveRecord::Railties::JobRuntime#instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:40:in 'block in ActiveJob::Instrumentation#instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/notifications.rb:206:in 'block in ActiveSupport::Notifications.instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/notifications.rb:206:in 'ActiveSupport::Notifications.instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:39:in 'ActiveJob::Instrumentation#instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/railties/job_runtime.rb:11:in 'ActiveRecord::Railties::JobRuntime#instrument'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:26:in 'ActiveJob::Instrumentation#perform_now'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/logging.rb:18:in 'block in ActiveJob::Logging#perform_now'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/tagged_logging.rb:139:in 'block in ActiveSupport::TaggedLogging#tagged'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/tagged_logging.rb:39:in 'ActiveSupport::TaggedLogging::Formatter#tagged'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/tagged_logging.rb:139:in 'ActiveSupport::TaggedLogging#tagged'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/broadcast_logger.rb:241:in 'ActiveSupport::BroadcastLogger#method_missing'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/logging.rb:25:in 'ActiveJob::Logging#tag_logger'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/logging.rb:18:in 'ActiveJob::Logging#perform_now'
/home/mk/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:23:in 'ActiveJob::Execution::ClassMethods#perform_now'
```

**OpenProject version**

v15.3.0
