From c8a547630bfdf116c7aca7ea1ad40bb6782c8cdf Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Thu, 8 Apr 2021 12:56:31 +0200 Subject: [PATCH] Fix a weird edge case with persisted empty event ids No idea, how that happened and where it came from --- src/Cache.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Cache.cpp b/src/Cache.cpp index 4423b21f..f3407e48 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -2867,15 +2867,18 @@ Cache::clearTimeline(const std::string &room_id) if (passed_pagination_token) { if (obj.count("event_id") != 0) { std::string event_id = obj["event_id"].get(); - evToOrderDb.del(txn, event_id); - eventsDb.del(txn, event_id); - relationsDb.del(txn, event_id); - std::string_view order{}; - bool exists = msg2orderDb.get(txn, event_id, order); - if (exists) { - order2msgDb.del(txn, order); - msg2orderDb.del(txn, event_id); + if (!event_id.empty()) { + evToOrderDb.del(txn, event_id); + eventsDb.del(txn, event_id); + relationsDb.del(txn, event_id); + + std::string_view order{}; + bool exists = msg2orderDb.get(txn, event_id, order); + if (exists) { + order2msgDb.del(txn, order); + msg2orderDb.del(txn, event_id); + } } } lmdb::cursor_del(cursor);