# Getting deadlock errors in logs

**URL:** <https://meta.discourse.org/t/getting-deadlock-errors-in-logs/359146>\
**Category:** Support\
**Tags:** activitypub\
**Created:** [March 27, 2025, 1:00pm UTC](https://meta.discourse.org/t/getting-deadlock-errors-in-logs/359146 "2025-03-27T13:00:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)\
**Post date:** [March 27, 2025, 1:00pm UTC](https://meta.discourse.org/t/getting-deadlock-errors-in-logs/359146/1 "2025-03-27T13:00:05Z")

</div>

```plaintext
Job exception: PG::TRDeadlockDetected: ERROR: deadlock detected
DETAIL: Process 29659 waits for ShareLock on transaction 892416679; blocked by process 29650.
Process 29650 waits for ShareLock on transaction 892416541; blocked by process 29659.
HINT: See server log for query details.
CONTEXT: while rechecking updated tuple (36923,3) in relation "discourse_activity_pub_actors"

```

 ![CleanShot 2025-03-27 at 08.57.49@2x](https://global.discourse-cdn.com/meta/original/4X/6/2/b/62bf954e14b36894038318f1020e2e3ccc297208.jpeg)

These are showing up in `/logs` @angus, I’m not sure if there are any user-facing issues. Stack trace points to a job handling deliveries:

```plaintext
rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:69:in `exec_params'  
rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:69:in `exec_params'  
(eval at /var/www/discourse/lib/method_profiler.rb:38):105:in `exec_params'
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:894:in `block (2 levels) in exec_no_cache'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:1004:in `block in with_raw_connection'  
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:976:in `with_raw_connection'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:893:in `block in exec_no_cache'  
activesupport-7.2.2.1/lib/active_support/notifications/instrumenter.rb:58:in `instrument'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:1119:in `log'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:892:in `exec_no_cache'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:872:in `execute_and_clear'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:79:in `exec_delete'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:208:in `update'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/query_cache.rb:27:in `update'  
activerecord-7.2.2.1/lib/active_record/relation.rb:610:in `block in update_all'  
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'  
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'  
activerecord-7.2.2.1/lib/active_record/relation.rb:598:in `update_all'  
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_failure_tracker.rb:36:in `set_domain_actors_as_available'  
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_failure_tracker.rb:22:in `track_success'  
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:50:in `perform_request'  
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:15:in `execute'  
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'  

```

---

<div class="post-metadata">

**Author:** ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)\
**Post date:** [March 27, 2025, 3:06pm UTC](https://meta.discourse.org/t/getting-deadlock-errors-in-logs/359146/3 "2025-03-27T15:06:16Z")

</div>

This should address it

[https://github.com/discourse/discourse-activity-pub/pull/203](https://github.com/discourse/discourse-activity-pub/pull/203)

---

<div class="post-metadata">

**Author:** ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)\
**Post date:** [March 27, 2025, 5:04pm UTC](https://meta.discourse.org/t/getting-deadlock-errors-in-logs/359146/4 "2025-03-27T17:04:06Z")

</div>

Hmm, that doesn’t seem to fix the issue unfortunately @angus. There’s a lot of actors, possibly, in the DB, and the batching is still insufficient.

On meta, for example, there are 90k+ rows in that model:

```plaintext
discourse(prod)> DiscourseActivityPubActor.where(domain: 'mastodon.social').size
=> 90264

```

Do we absolutely need to update their `available` column on every delivery?

---

<div class="post-metadata">

**Author:** ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)\
**Post date:** [March 27, 2025, 6:37pm UTC](https://meta.discourse.org/t/getting-deadlock-errors-in-logs/359146/5 "2025-03-27T18:37:49Z")

</div>

I see. Hopefully this, together with the previous changes, will address it:

[https://github.com/discourse/discourse-activity-pub/pull/204](https://github.com/discourse/discourse-activity-pub/pull/204)

---

<div class="post-metadata">

**Author:** ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)\
**Post date:** [March 28, 2025, 12:00pm UTC](https://meta.discourse.org/t/getting-deadlock-errors-in-logs/359146/6 "2025-03-28T12:00:05Z")

</div>

This topic was automatically closed after 20 hours. New replies are no longer allowed.
