Add some logging/recovery for lost rooms

Zero inserts is not normal, so we apply the same recovery technique from the categorization logic above this block: insert it to be the very first room and hope that someone complains that the room is ordered incorrectly.

There's some additional logging to try and identify what went wrong because it should definitely be inserted. The `!== 1` check is not supposed to be called, ever.

Logging for https://github.com/vector-im/riot-web/issues/11303
pull/21833/head
Travis Ralston 2019-11-12 15:38:24 -07:00
parent fa6e02fafb
commit 3dcc92b79d
1 changed files with 15 additions and 1 deletions

View File

@ -515,7 +515,21 @@ class RoomListStore extends Store {
} }
if (count !== 1) { if (count !== 1) {
console.warn(`!! Room ${room.roomId} inserted ${count} times`); console.warn(`!! Room ${room.roomId} inserted ${count} times to ${targetTag}`);
}
// This is a workaround for https://github.com/vector-im/riot-web/issues/11303
// The logging is to try and identify what happened exactly.
if (count === 0) {
// Something went very badly wrong - try to recover the room.
// We don't bother checking how the target list is ordered - we're expecting
// to just insert it.
console.warn(`!! Recovering ${room.roomId} for tag ${targetTag} at position 0`);
if (!listsClone[targetTag]) {
console.warn(`!! List for tag ${targetTag} does not exist - creating`);
listsClone[targetTag] = [];
}
listsClone[targetTag].splice(0, 0, {room, category});
} }
} }