Fix a weird edge case with persisted empty event ids

No idea, how that happened and where it came from
This commit is contained in:
Nicolas Werner 2021-04-08 12:56:31 +02:00
parent 795b8fb7dd
commit c8a547630b
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9

View file

@ -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<std::string>();
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);