synapse icon indicating copy to clipboard operation
synapse copied to clipboard

Admin API: Synapse appears to incorrectly track public remote rooms as private

Open TheArcaneBrony opened this issue 8 months ago • 1 comments

Description

Synapse appears to incorrectly track whether a room is public. This leads to public rooms being returned from the room list admin api with "public": false despite having "join_rule": "public".

This value is fetched from the is_public column in the rooms table:

  • Query: https://github.com/element-hq/synapse/blob/develop/synapse/storage/databases/main/room.py#L730
  • API schema mapping: https://github.com/element-hq/synapse/blob/develop/synapse/storage/databases/main/room.py#L781

Screenshot demonstrating the issue from an admin API: Image

Steps to reproduce

  • Join public rooms over federation
  • Query room list admin API
  • Observe that those rooms are marked as "public": false, where true would be expected

Homeserver

rory.gay

Synapse Version

1.127.1

Installation Method

Other (please mention below)

Database

PostgreSQL, single db, no porting, no backups

Workers

Multiple workers

Platform

Installation Method: NixOS

Configuration

Presence enabled

Experimental features:

        experimental_features = {
          "msc2815_enabled" = true; # Redacted event content
          "msc3026_enabled" = true; # Busy presence
          "msc3266_enabled" = true; # Room summary API
          "msc3916_authenticated_media_enabled" = true; # Authenticated media
          "msc3823_account_suspension" = true; # Account suspension
          "msc4151_enabled" = true; # Report room API (CS-API)
        };

Full configuration: https://cgit.rory.gay/Rory-Open-Architecture.git/tree/host/Rory-nginx/services/matrix/synapse/synapse-main.nix

Relevant log output

N/A

Anything else that would be useful to know?

No response

TheArcaneBrony avatar Apr 17 '25 00:04 TheArcaneBrony

The public field is a boolean indicating whether the room is visible in the room directory. It is unrelated to join_rules. The fields returned by the list room API are explained in the Synapse docs. To be fair, a better field name would probably be published but I doubt it is going to be changed at this point

thisisjoesGH avatar Apr 22 '25 16:04 thisisjoesGH