From 8b9672ba43a24d34f24758c4c63f3437111dfcf8 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 20 Jun 2023 16:28:02 +0100 Subject: [PATCH] Add debug logging to figure out missing reactions in main timeline (#3494) * Fix debug logging not working * Add debug logging to figure out missing reactions in main timeline --- src/logger.ts | 6 +++++- src/models/room.ts | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/logger.ts b/src/logger.ts index ba7f74210..af0cba21e 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -38,7 +38,11 @@ log.methodFactory = function (methodName, logLevel, loggerName) { } /* eslint-enable @typescript-eslint/no-invalid-this */ const supportedByConsole = - methodName === "error" || methodName === "warn" || methodName === "trace" || methodName === "info"; + methodName === "error" || + methodName === "warn" || + methodName === "trace" || + methodName === "info" || + methodName === "debug"; /* eslint-disable no-console */ if (supportedByConsole) { return console[methodName](...args); diff --git a/src/models/room.ts b/src/models/room.ts index a73c750ba..713e5470e 100644 --- a/src/models/room.ts +++ b/src/models/room.ts @@ -2103,6 +2103,7 @@ export class Room extends ReadReceipt { threadId?: string; } { if (!this.client?.supportsThreads()) { + logger.debug(`Room::eventShouldLiveIn: eventId=${event.getId()} client does not support threads`); return { shouldLiveInRoom: true, shouldLiveInThread: false, @@ -2111,6 +2112,11 @@ export class Room extends ReadReceipt { // A thread root is always shown in both timelines if (event.isThreadRoot || roots?.has(event.getId()!)) { + if (event.isThreadRoot) { + logger.debug(`Room::eventShouldLiveIn: eventId=${event.getId()} isThreadRoot is true`); + } else { + logger.debug(`Room::eventShouldLiveIn: eventId=${event.getId()} is a known thread root`); + } return { shouldLiveInRoom: true, shouldLiveInThread: true, @@ -2121,6 +2127,9 @@ export class Room extends ReadReceipt { // A thread relation (1st and 2nd order) is always only shown in a thread const threadRootId = event.threadRootId; if (threadRootId != undefined) { + logger.debug( + `Room::eventShouldLiveIn: eventId=${event.getId()} threadRootId=${threadRootId} is part of a thread`, + ); return { shouldLiveInRoom: false, shouldLiveInThread: true, @@ -2132,6 +2141,9 @@ export class Room extends ReadReceipt { let parentEvent: MatrixEvent | undefined; if (parentEventId) { parentEvent = this.findEventById(parentEventId) ?? events?.find((e) => e.getId() === parentEventId); + logger.debug( + `Room::eventShouldLiveIn: eventId=${event.getId()} parentEventId=${parentEventId} found=${!!parentEvent}`, + ); } // Treat relations and redactions as extensions of their parents so evaluate parentEvent instead @@ -2140,6 +2152,7 @@ export class Room extends ReadReceipt { } if (!event.isRelation()) { + logger.debug(`Room::eventShouldLiveIn: eventId=${event.getId()} not a relation`); return { shouldLiveInRoom: true, shouldLiveInThread: false, @@ -2148,6 +2161,11 @@ export class Room extends ReadReceipt { // Edge case where we know the event is a relation but don't have the parentEvent if (roots?.has(event.relationEventId!)) { + logger.debug( + `Room::eventShouldLiveIn: eventId=${event.getId()} relationEventId=${ + event.relationEventId + } is a known root`, + ); return { shouldLiveInRoom: true, shouldLiveInThread: true, @@ -2158,6 +2176,7 @@ export class Room extends ReadReceipt { // We've exhausted all scenarios, // we cannot assume that it lives in the main timeline as this may be a relation for an unknown thread // adding the event in the wrong timeline causes stuck notifications and can break ability to send read receipts + logger.debug(`Room::eventShouldLiveIn: eventId=${event.getId()} belongs to an unknown timeline`); return { shouldLiveInRoom: false, shouldLiveInThread: false,