From 306309c4f8c79bb1e8f3e6c0da8cc26a5f56702d Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 17 Aug 2020 10:48:00 +0200 Subject: [PATCH] wrap error and expose room id this makes it easier to track down a (storage) error to a room --- src/matrix/error.js | 11 +++++++++++ src/matrix/room/Room.js | 9 +++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/matrix/error.js b/src/matrix/error.js index 6f7a200e..07144acd 100644 --- a/src/matrix/error.js +++ b/src/matrix/error.js @@ -14,6 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. */ +export class WrappedError extends Error { + constructor(message, cause) { + super(`${message}: ${cause.message}`); + this.cause = cause; + } + + get name() { + return "WrappedError"; + } +} + export class HomeServerError extends Error { constructor(method, url, body, status) { super(`${body ? body.error : status} on ${method} ${url}`); diff --git a/src/matrix/room/Room.js b/src/matrix/room/Room.js index 5f3b7cf5..1b038972 100644 --- a/src/matrix/room/Room.js +++ b/src/matrix/room/Room.js @@ -21,6 +21,7 @@ import {GapWriter} from "./timeline/persistence/GapWriter.js"; import {Timeline} from "./timeline/Timeline.js"; import {FragmentIdComparer} from "./timeline/FragmentIdComparer.js"; import {SendQueue} from "./sending/SendQueue.js"; +import {WrappedError} from "../error.js" export class Room extends EventEmitter { constructor({roomId, storage, hsApi, emitCollectionChange, sendScheduler, pendingEvents, user}) { @@ -67,8 +68,12 @@ export class Room extends EventEmitter { } load(summary, txn) { - this._summary.load(summary); - return this._syncWriter.load(txn); + try { + this._summary.load(summary); + return this._syncWriter.load(txn); + } catch (err) { + throw new WrappedError(`Could not load room ${this._roomId}`, err); + } } sendEvent(eventType, content) {