element-hq / element-hq/synapse
DELETE room API fails when room exists in sliding_sync_joined_rooms_to_recalculate
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 600
- Avg merge
- 5d 22h
- Merged PRs (30d)
- 51
Description
### Description
See title. When I try to delete a room via `'https://'"$matrixServer":"$matrixServerPort"'/_synapse/admin/v2/rooms/!'"$1"` it fails in 50 % of the cases with following error:
/var/log/matrix-synapse/homeserver.log:DETAIL: Key (room_id)=(!someroomid) is still referenced from table "sliding_sync_joined_rooms_to_recalculate".
After a `delete from sliding_sync_joined_rooms_to_recalculate where room_id='!zxWLnBMJtBomyQlnRV:tang.ents.ca';` it works.
### Steps to reproduce
- run synapse 1.153.0+bookworm1
- run
```
curl -s ${CURLOPTS_ADMIN} \
-H "${MATRIX_ADMIN_AUTH_HEADERNAME}: Bearer $accessToken" \
--data '{ "new_room_user_id": "'$admin'", "room_name": "Room replaced", "message": "Room replaced, try rejoining !'$1' in a couple of minutes.","block":false,"purge":true }' \
-X DELETE 'https://'"$matrixServer":"$matrixServerPort"'/_synapse/admin/v2/rooms/!'"$1"
```
- query
```
curl -s ${CURLOPTS_ADMIN} \
-H "${MATRIX_ADMIN_AUTH_HEADERNAME}: Bearer $accessToken" \
-X GET 'https://'"$matrixServer":"$matrixServerPort"'/_synapse/admin/v2/rooms/delete_status/'"$1"
```
- see pipe result through `jq .status`
- see "failed"
- see logs: DETAIL: Key (room_id)=(!someroomid) is still referenced from table "sliding_sync_joined_rooms_to_recalculate".
- run `delete from sliding_sync_joined_rooms_to_recalculate where room_id='!someroomid';
- repeat previous steps
- see "completed"
### Homeserver
asra.gr
### Synapse Version
1.153.0+bookworm1
### Installation Method
Debian packages from packages.matrix.org
### Database
psql (17.8 (Debian 17.8-0+deb13u1)), single server, not ported from sqlite, restored from a pg_dump because of db migration to new hardware
### Workers
Multiple workers
### Platform
see above
### Configuration
_No response_
### Relevant log output
```shell
2026-06-04 14:08:10,914 - synapse.util.task_scheduler - 422 - INFO - task-shutdown_and_purge_room-7-deleteid - Task failed: 120.030sec (0.894sec, 0.827sec) (0.039sec/119.570sec/61) [0 dbevts] '!someroomid', {'new_room_user_id': '@abuse:asra.gr', 'new_room_name': 'Room replaced', 'message': 'Room replaced, try rejoining !someroomid in a couple of minutes.', 'requester_user_id': '@abuse:asra.gr', 'block': False, 'purge': True, 'force_purge': False}
DETAIL: Key (room_id)=(!someroomid) is still referenced from table "sliding_sync_joined_rooms_to_recalculate".
Reason for the purge is another error:
2026-06-04 13:41:28,216 - synapse.http.server - 131 - INFO - GET-367685 - SynapseError: 403 - User @someuser:asra.gr not in room !someroom, and room previews are disabled
```
### Anything else that would be useful to know?
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.