#1872 Ad-hoc command "Destroy Rooms" takes too long
Reporter
Ge0rG
Owner
Nobody
Created
Updated
Stars
★ (1)
Tags
Type-Defect
Status-New
Component-MUC
Priority-Medium
Ge0rG
on
Running the "Destroy Rooms" ad-hoc command on a large MUC component will go through the storage and return back a looooong list of all rooms, blocking the server for a significant time. On my instance with ~3k rooms this takes roughly a minute where the server's even processing is blocked.
(The multi-selection list returned also has a horrible UX on Android, but this is a different issue)
It would be better to have an input box to enter the JID instead, or in addition to that, with a dedicated command.
P.S: The room listing will also return already-destroyed rooms, not sure if this is intended.
Ge0rG
on
The room listing in disco#items seems to get returned immediately, and the "Destroy Rooms" list doesn't have any additional info inside, so maybe it could be switched to the cached room list instead of evicting+loading all the rooms?
Thanks for the report.
The cache used for disco#info includes only public rooms. There may be a use for deleting also private chats?
There's also the set of live rooms that should be fast to access, which could be used.
We could remove the listing and just have a jid-multi field?
Changes
tags Component-MUC
MattJ
on
Yeah, I think jid-multi is the way. Otherwise the stanza size is essentially unbounded...
Ge0rG
on
I could see a use-case for "search rooms based on a wildcard / substring" that would return a list, but for now I'm happy with a jid or jid-multi input field.
Running the "Destroy Rooms" ad-hoc command on a large MUC component will go through the storage and return back a looooong list of all rooms, blocking the server for a significant time. On my instance with ~3k rooms this takes roughly a minute where the server's even processing is blocked. (The multi-selection list returned also has a horrible UX on Android, but this is a different issue) It would be better to have an input box to enter the JID instead, or in addition to that, with a dedicated command. P.S: The room listing will also return already-destroyed rooms, not sure if this is intended.
The room listing in disco#items seems to get returned immediately, and the "Destroy Rooms" list doesn't have any additional info inside, so maybe it could be switched to the cached room list instead of evicting+loading all the rooms?
Workaround: `muc:room(roomjid):destroy()` (thx. @Zash)
Thanks for the report. The cache used for disco#info includes only public rooms. There may be a use for deleting also private chats? There's also the set of live rooms that should be fast to access, which could be used. We could remove the listing and just have a jid-multi field?
ChangesYeah, I think jid-multi is the way. Otherwise the stanza size is essentially unbounded...
I could see a use-case for "search rooms based on a wildcard / substring" that would return a list, but for now I'm happy with a jid or jid-multi input field.